第8章 数值方法

Tip

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

8.1 数值微分

Tip

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

 

Important

差商的基本概念

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

三种基本差商

  1. 前向差商

    f(x)f(x+h)f(x)h
  2. 后向差商

    f(x)f(x)f(xh)h
  3. 中心差商

    f(x)f(x+h)f(xh)2h

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

Warning

差商的几何意义

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

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

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

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

精度比较

  • 前向和后向差商的误差约为 O(h)

  • 中心差商的误差约为 O(h2),精度更高

Note

数值微分的计算实例

例1 计算 f(x)=x2x=1 处的导数近似值,取 h=0.1

精确值f(1)=2

前向差商

f(1.1)f(1)0.1=1.2110.1=2.1

后向差商

f(1)f(0.9)0.1=10.810.1=1.9

中心差商

f(1.1)f(0.9)0.2=1.210.810.2=2.0

可以看到中心差商给出了最精确的结果。

例2 步长 h 对精度的影响

对于 f(x)=sinx,在 x=0 处计算导数,精确值为 cos0=1

步长 h前向差商绝对误差中心差商绝对误差
0.10.998330.001670.999980.00002
0.010.999980.000021.000000.00000
0.0011.000000.000001.000000.00000

观察发现:

  • 步长越小,精度越高

  • 中心差商比前向差商精度更高

  • 但步长过小可能引入数值舍入误差

Important

二阶导数的数值计算

二阶导数可以用以下公式近似:

f(x)f(x+h)2f(x)+f(xh)h2

推导 f(x+h)f(xh)x 处泰勒展开:

f(x+h)=f(x)+hf(x)+h22f(x)+h36f(x)+
f(xh)=f(x)hf(x)+h22f(x)h36f(x)+

两式相加:

f(x+h)+f(xh)=2f(x)+h2f(x)+O(h4)

整理得:

f(x)f(x+h)2f(x)+f(xh)h2

Note

例3 计算 f(x)=x3x=1 处的二阶导数,h=0.1

精确值f(1)=6

数值计算

f(1.1)2f(1)+f(0.9)0.01=1.3312+0.7290.01=0.060.01=6

结果与精确值一致。

8.2 数值积分

Tip

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

Important

矩形法

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

左矩形法

abf(x)dxhi=0n1f(xi)

其中 h=banxi=a+ih

右矩形法

abf(x)dxhi=1nf(xi)

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

Note

例1 用矩形法计算 01x2dx,取 n=4

精确值130.3333

左矩形法 h=0.25xi=0,0.25,0.5,0.75

=0.25×[f(0)+f(0.25)+f(0.5)+f(0.75)]=0.25×[0+0.0625+0.25+0.5625]=0.25×0.875=0.21875

右矩形法 xi=0.25,0.5,0.75,1.0

=0.25×[f(0.25)+f(0.5)+f(0.75)+f(1.0)]=0.25×[0.0625+0.25+0.5625+1.0]=0.25×1.875=0.46875

Important

梯形法

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

梯形公式

abf(x)dxh2[f(a)+2i=1n1f(xi)+f(b)]

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

推导 每个小区间 [xi,xi+1] 上的积分用梯形面积近似:

xixi+1f(x)dxh2[f(xi)+f(xi+1)]

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

Note

例2 用梯形法计算 01x2dx,取 n=4

=0.252[f(0)+2f(0.25)+2f(0.5)+2f(0.75)+f(1.0)]=0.125×[0+2×0.0625+2×0.25+2×0.5625+1.0]=0.125×[0+0.125+0.5+1.125+1.0]=0.125×2.75=0.34375

与精确值 0.3333 相比,误差约为 0.0104,比矩形法有明显改进。

Important

辛普森法

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

辛普森公式

abf(x)dxh3[f(a)+4i=1n/2f(x2i1)+2i=1n/21f(x2i)+f(b)]

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

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

Note

例3 用辛普森法计算 01x2dx,取 n=4

=0.253[f(0)+4f(0.25)+2f(0.5)+4f(0.75)+f(1.0)]=0.253×[0+4×0.0625+2×0.25+4×0.5625+1.0]=0.253×[0+0.25+0.5+2.25+1.0]=0.253×4.0=0.3333

与精确值完全一致(因为 x2 是二次函数,辛普森法对不超过三次的多项式精确成立)。

Warning

三种数值积分方法的精度比较

对于 01exdx=e11.71828,不同方法的精度比较:

方法n=4 时的近似值绝对误差收敛阶
左矩形法1.490680.22760O(h)
右矩形法1.936370.21809O(h)
梯形法1.713390.00489O(h2)
辛普森法1.718320.00004O(h4)

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

Warning

数值积分的误差分析

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

  • 矩形法:误差约 O(h)

  • 梯形法:误差约 O(h2)

  • 辛普森法:误差约 O(h4)

8.3 常微分方程的数值解法

Tip

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

Important

欧拉方法

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

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

迭代公式

yn+1=yn+hf(xn,yn)

其中:

  • h 是步长

  • f(xn,yn) 是微分方程右端函数在 (xn,yn) 处的值

  • ynxn 处的近似解

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

Note

例1 用欧拉方法求解初值问题:

dydx=y,y(0)=1

在区间 [0,1] 上,取步长 h=0.2

精确解y=ex

数值计算

xn欧拉近似 yn精确值 exn绝对误差
0.01.00001.00000.0000
0.21.20001.22140.0214
0.41.44001.49180.0518
0.61.72801.82210.0941
0.82.07362.22550.1519
1.02.48832.71830.2300

计算过程:

  • y1=1.0+0.2×1.0=1.2

  • y2=1.2+0.2×1.2=1.44

  • y3=1.44+0.2×1.44=1.728

  • 依此类推...

Note

步长对精度的影响

欧拉方法的精度与步长 h 密切相关。一般来说,步长越小,精度越高,但计算量越大。

例2 不同步长下的比较(同一个问题)

步长 hy(1) 的近似值绝对误差
0.52.25000.4683
0.22.48830.2300
0.12.59370.1246
0.052.65330.0650
0.012.70480.0135

可见随着步长减小,精度逐渐提高。

Warning

改进的欧拉方法

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

计算步骤

  1. 预测步:用欧拉方法计算一个初步预测值

    y¯n+1=yn+hf(xn,yn)
  2. 校正步:用预测点的斜率来改进

    yn+1=yn+h2[f(xn,yn)+f(xn+1,y¯n+1)]

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

Note

例3 用改进欧拉方法求解例1的问题

第一步计算:

  • 预测:y¯1=1.0+0.2×1.0=1.2

  • 校正:y1=1.0+0.22[1.0+1.2]=1.22

与精确值 1.2214 相比,改进欧拉法的结果 1.2200 比普通欧拉法的 1.2000 更接近。

Note

数值解法的应用实例

应用1:人口增长模型

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

模型

dPdt=0.03P+1,P(0)=100

(单位:万人,时间单位:年)

解析解P(t)=1003(e0.03t1)+100e0.03t

数值解(欧拉方法,h=1 年):

年份 t人口 P(t)(数值)人口 P(t)(精确)
0100.00100.00
1104.00104.08
2108.12108.37
3112.36112.78
4116.73117.33
5121.23122.02
10147.85149.18

计算过程:

  • P1=100+1×(0.03×100+1)=104

  • P2=104+1×(0.03×104+1)=108.12

  • 依此类推...

应用2:RC电路充电过程

问题:RC电路中,电容初始电压为0,电源电压 E=10V,电阻 R=1000Ω,电容 C=1000μF。求电容电压随时间的变化。

模型

dVdt=EVRC,V(0)=0

其中 RC=1000×0.001=1

解析解V(t)=10(1et)

数值解(欧拉方法,h=0.2 秒):

时间 t (s)电压 V(t)(数值)电压 V(t)(精确)
0.00.000.00
0.22.001.81
0.43.603.30
0.64.884.51
0.85.905.51
1.06.726.32

计算过程:

  • V1=0+0.2×(100)/1=2.0

  • V2=2.0+0.2×(102.0)/1=3.6

  • 依此类推...

Warning

数值解法的优缺点

优点

  1. 通用性强:适用于各种类型的微分方程

  2. 实现简单:算法直观,编程容易

  3. 灵活性高:可以处理复杂的右端函数

缺点

  1. 精度有限:欧拉方法只有一阶精度

  2. 稳定性问题:步长选择不当可能导致数值不稳定

  3. 累积误差:误差会随着计算步数增加而积累

实用建议

  1. 先尝试欧拉方法,了解问题的基本特性

  2. 对于精度要求高的问题,使用改进欧拉方法或其他高阶方法

  3. 通过减小步长来检验结果的收敛性

  4. 对于刚性问题,需要特殊的数值方法

8.4 数值求解微分方程实例

Tip

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

Note

Lotka-Volterra方程

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

Note

行星运动方程

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