新工科数学分析

第八章: 数值方法

提示

在实际工程和科学计算中, 许多微积分问题无法获得解析解, 或者解析表达式过于复杂. 数值方法通过离散化近似, 为这些问题提供了实用的解决方案. 本章介绍三种基本数值方法: 数值微分, 数值积分和常微分方程的数值解法.

8.1 数值微分

提示

在实际应用中, 我们经常遇到需要计算函数导数的情况, 但有时函数表达式复杂, 或者只有离散的数据点, 这时就需要使用数值微分方法.

差商的基本概念

数值微分的核心思想是用差商来近似导数. 差商是函数在两个点上的函数值之差与自变量之差的比值.

三种基本差商:

  1. 前向差商: f'(x) \approx \frac{f(x+h)-f(x)}{h}

  2. 后向差商: f'(x) \approx \frac{f(x)-f(x-h)}{h}

  3. 中心差商: f'(x) \approx \frac{f(x+h)-f(x-h)}{2h}

其中 h > 0 是一个小的步长.

差商的几何意义

从几何角度看, 差商实际上是割线斜率切线斜率的近似:

  • 前向差商: 使用点 (x, f(x))(x+h, f(x+h)) 的割线斜率

  • 后向差商: 使用点 (x-h, f(x-h))(x, f(x)) 的割线斜率

  • 中心差商: 使用点 (x-h, f(x-h))(x+h, f(x+h)) 的割线斜率

精度比较:

  • 前向和后向差商的误差约为 O(h)
  • 中心差商的误差约为 O(h^2), 精度更高
🟢例1偏导数数值方法

计算 f(x) = x^2x=1 处的导数近似值,取步长 h=0.1,分别用前向差商、后向差商和中心差商,并与精确值 f'(1) = 2 比较。

🟢例2偏导数数值方法

对于 f(x) = \sin x,在 x=0 处计算一阶导数(精确值 \cos 0 = 1),分析步长 h 对前向差商和中心差商精度的影响。

前向差商误差正比于 h, 中心差商误差正比于 h^2 — 在双对数坐标下两条直线斜率不同
二阶导数的数值计算

二阶导数可以用以下公式近似: f''(x) \approx \frac{f(x+h) - 2f(x) + f(x-h)}{h^2}

推导: 将 f(x+h)f(x-h)x 处泰勒展开: f(x+h) = f(x) + hf'(x) + \frac{h^2}{2}f''(x) + \frac{h^3}{6}f'''(x) + \cdots f(x-h) = f(x) - hf'(x) + \frac{h^2}{2}f''(x) - \frac{h^3}{6}f'''(x) + \cdots

两式相加: f(x+h) + f(x-h) = 2f(x) + h^2 f''(x) + O(h^4)

整理得: f''(x) \approx \frac{f(x+h) - 2f(x) + f(x-h)}{h^2}

🟢例3偏导数数值方法

计算 f(x) = x^3x=1 处的二阶导数,取 h=0.1,并与精确值 f''(1) = 6 比较。

8.2 数值积分

提示

当函数的原函数难以求出, 或者只有离散的数据点时, 数值积分提供了计算定积分的有效方法. 数值积分的基本思想是用简单的函数 (如多项式) 近似被积函数, 然后计算近似函数的积分.

矩形法

矩形法是数值积分中最简单的方法, 它将积分区间分割成若干小区间, 用每个小区间左端点或右端点的函数值作为矩形的高.

左矩形法: \int_a^b f(x)dx \approx h\sum_{i=0}^{n-1} f(x_i) 其中 h = \frac{b-a}{n}, x_i = a + ih

右矩形法: \int_a^b f(x)dx \approx h\sum_{i=1}^n f(x_i)

几何意义: 用一系列矩形面积之和近似曲边梯形的面积.

🟢例4偏导数数值方法

用左矩形法和右矩形法计算 \displaystyle\int_0^1 x^2\,dx,取 n=4,并与精确值 \dfrac{1}{3} \approx 0.3333 比较。

左矩形 (低估) 与右矩形 (高估) — 对单调递增函数 x^2, 真值夹在两者之间
梯形法

梯形法用梯形面积代替矩形面积, 通常能获得更好的精度.

梯形公式: \int_a^b f(x)dx \approx \frac{h}{2}[f(a) + 2\sum_{i=1}^{n-1} f(x_i) + f(b)]

几何意义: 用一系列梯形面积之和近似曲边梯形的面积.

推导: 每个小区间 [x_i, x_{i+1}] 上的积分用梯形面积近似: \int_{x_i}^{x_{i+1}} f(x)dx \approx \frac{h}{2}[f(x_i) + f(x_{i+1})]

将所有小区间相加即得梯形公式.

🟢例5偏导数数值方法

用梯形法计算 \displaystyle\int_0^1 x^2\,dx,取 n=4,并与精确值 \dfrac{1}{3} 比较。

梯形法 — 用相邻两端点连线的折线代替曲线, 阴影梯形的总面积近似积分
辛普森法

辛普森法用抛物线代替直线来近似被积函数, 精度更高.

辛普森公式: \int_a^b f(x)dx \approx \frac{h}{3}[f(a) + 4\sum_{i=1}^{n/2} f(x_{2i-1}) + 2\sum_{i=1}^{n/2-1} f(x_{2i}) + f(b)]

要求: 区间等分且 n 为偶数

几何意义: 每两个相邻小区间上用一条抛物线近似被积函数.

🟢例6偏导数数值方法

用辛普森法计算 \displaystyle\int_0^1 x^2\,dx,取 n=4,并与精确值 \dfrac{1}{3} 比较。

辛普森法 — 用相邻三个点的二次抛物拟合曲线, 对二次以下函数恰好精确
三种数值积分方法的精度比较

对于 \int_0^1 e^x dx = e - 1 \approx 1.71828, 不同方法的精度比较:

方法 n=4 时的近似值 绝对误差 收敛阶
左矩形法 1.49068 0.22760 O(h)
右矩形法 1.93637 0.21809 O(h)
梯形法 1.71339 0.00489 O(h^2)
辛普森法 1.71832 0.00004 O(h^4)

可见辛普森法的精度最高, 梯形法次之, 矩形法精度最低.

数值积分的误差分析

各种数值积分方法的误差估计:

  • 矩形法: 误差约 O(h)
  • 梯形法: 误差约 O(h^2)
  • 辛普森法: 误差约 O(h^4)

8.3 常微分方程的数值解法

提示

许多实际问题的数学模型是常微分方程, 但大多数微分方程无法求得解析解. 数值解法通过离散化方法, 将连续的微分方程转化为离散的代数方程, 从而获得近似解.

欧拉方法

欧拉方法是最简单, 最直观的数值解法, 它用切线来近似积分曲线.

基本思想: 从初始点出发, 沿着该点的切线方向前进一小步, 得到下一个近似点.

迭代公式: y_{n+1} = y_n + hf(x_n, y_n)

其中: - h 是步长 - f(x_n, y_n) 是微分方程右端函数在 (x_n, y_n) 处的值 - y_nx_n 处的近似解

几何解释: 在每一步, 用当前点的切线斜率代替曲线在该点的导数, 沿着切线方向前进.

🟡例7偏导数数值方法

用欧拉方法求解初值问题

\frac{dy}{dx} = y, \quad y(0) = 1

在区间 [0, 1] 上,取步长 h = 0.2,精确解为 y = e^x

Euler 法折线 (红) 用切线小步追赶指数曲线 y=e^x (蓝) — 步长 h=0.2
🟢例8偏导数数值方法

对初值问题 \dfrac{dy}{dx} = yy(0) = 1,用欧拉方法分别取步长 h = 0.5, 0.2, 0.1, 0.05, 0.01,比较 y(1) 的近似值与精确值 e \approx 2.7183 的误差。

Euler 法在 x=1 处的误差与步长 h 的双对数图 — 斜率 1 表明这是一阶方法
改进的欧拉方法

改进的欧拉方法 (又称Heun方法) 通过使用预测-校正策略来提高精度.

计算步骤: 1. 预测步: 用欧拉方法计算一个初步预测值 \bar{y}_{n+1} = y_n + hf(x_n, y_n)

  1. 校正步: 用预测点的斜率来改进 y_{n+1} = y_n + \frac{h}{2}[f(x_n, y_n) + f(x_{n+1}, \bar{y}_{n+1})]

几何解释: 先用欧拉方法预测, 然后用两端斜率的平均值来校正.

🟡例9偏导数数值方法

用改进欧拉方法(Heun方法)求解初值问题 \dfrac{dy}{dx} = yy(0) = 1,取步长 h = 0.2,计算第一步的近似值,并与普通欧拉方法和精确值 e^{0.2} \approx 1.2214 比较。

🟡例10: 数值解法应用实例数值方法常微分方程Euler方法

应用1:人口增长模型

某地区人口初始为100万,年自然增长率为3%,同时每年净迁入1万人。预测10年后的人口。

模型 \frac{dP}{dt} = 0.03P + 1, \quad P(0) = 100 (单位:万人,时间单位:年)

用欧拉方法(h = 1 年)计算前5年的人口,并与解析解 P(t) = \frac{100}{3}(e^{0.03t} - 1) + 100e^{0.03t} 比较。

应用2:RC电路充电过程

RC电路中,电容初始电压为0,电源电压 E = 10V,电阻 R = 1000\Omega,电容 C = 1000\mu F。求电容电压随时间的变化。

模型 \frac{dV}{dt} = \frac{E - V}{RC}, \quad V(0) = 0

其中 RC = 1000 \times 0.001 = 1 秒。

用欧拉方法(h = 0.2 秒)计算前5步,并与解析解 V(t) = 10(1 - e^{-t}) 比较。

数值解法的优缺点

优点: 1. 通用性强: 适用于各种类型的微分方程 2. 实现简单: 算法直观, 编程容易 3. 灵活性高: 可以处理复杂的右端函数

缺点: 1. 精度有限: 欧拉方法只有一阶精度 2. 稳定性问题: 步长选择不当可能导致数值不稳定 3. 累积误差: 误差会随着计算步数增加而积累

实用建议: 1. 先尝试欧拉方法, 了解问题的基本特性 2. 对于精度要求高的问题, 使用改进欧拉方法或其他高阶方法 3. 通过减小步长来检验结果的收敛性 4. 对于刚性问题, 需要特殊的数值方法

8.4 数值求解微分方程实例

提示

大部分微分方程都无法解析求解, 运用计算机, 我们可以对微分方程进行数值求解.

Lotka-Volterra方程

[课堂展示] 我们可以很容易的用AI帮助我们写程序, 然后画图.

行星运动方程

[课堂展示] 我们可以很容易的用AI帮助我们写程序, 然后画图.