📚 本章内容
本章介绍数值分析中的核心方法:泰勒展开用于函数近似,数值微分用于导数计算, 数值求根方法(二分法、牛顿法、割线法)用于方程求解。
17.1-17.2 泰勒展开近似
泰勒展开将复杂函数在某点附近用多项式近似,阶数越高近似越精确。 对于eˣ,在x₀处的n阶泰勒展开为:Σ(k=0 to n) eˣ⁰/k! · (x-x₀)ᵏ
泰勒展开近似
观察不同阶数的泰勒多项式如何逼近原函数 eˣ
展开点
最高阶数
泰勒公式
观察要点
✓ 展开点附近近似最好
✓ 阶数越高,有效范围越大
✓ 远离展开点误差增大
✓ 红点:展开中心
17.4 二元泰勒展开:用多项式曲面近似
上一节介绍的二元泰勒展开也可以扩展到多元函数。本节以二元函数为例介绍多元函数泰勒展开。
给定二元函数 f(x₁, x₂),它的泰勒展开可以写成:
公式 (20)
⚠️ 注意:式中假定两个混合偏导相等,即 fx₁x₂(a, b) = fx₂x₁(a, b)。
将 (20) 写成矩阵运算形式:
[fx₁x₂(a, b) fx₂x₂(a, b)] · [x₁ - a, x₂ - b]T + ...
公式 (21)
如图 16 所示,从几何角度,二元函数泰勒展开相当于,水平面、斜面、二次曲面、三次曲面等多项式曲面叠加。
图 16. 二元函数泰勒展开示意图
举个例子
给定如下二元高斯函数:
公式 (22)
二元函数 f(x₁, x₂) 一阶偏导为:
公式 (23)
图 17 所示为两个一阶偏导导数的平面等高线图。图中,x 为展开点位置,水平等高线表示 (-0.1, -0.2)。
(22) 中二元函数 f(x₁, x₂) 二阶偏导为:
公式 (24)
显然,两个混合偏导相等,即:
公式 (25)
图 18 所示为两个二阶偏导函数的平面等高线图。
展开点 x (−0.1, −0.2) 处函数值、一阶、二阶偏导数具体值为:
公式 (26)
常数项
类似前文,我们在本节也采用逐步分析。首先用二元常函数来估计 f(x₁, x₂):
Constant
公式 (27)
这相当于用一个平行于 x₁x₂ 平面的水平面来近似 f(x₁, x₂)。
图 19 所示为用常函数来估计二元高斯函数,常数函数对应解析式为:
公式 (28)
一阶函数
用一阶泰勒展开估计 f(x₁, x₂):
Constant + Plane
公式 (29)
相当于水平面 + 斜面 叠加来近似 f(x₁, x₂)。
图 20 所示为一阶泰勒展开估计原函数。二元一次函数对应解析式为:
公式 (30)
二阶函数
用二阶泰勒展开估计 f(x₁, x₂):
Constant + Plane + Quadratic
公式 (31)
相当于水平面 + 斜面 + 二次曲面 叠加来近似 f(x₁, x₂)。
图 21 所示为二阶泰勒展开估计原函数。二元二次函数对应解析式为:
公式 (32)
请大家用本书代码自行展开整理上式。
二元函数泰勒近似
观察二元函数 f(x,y)=e⁻ˣ²⁻ʸ² 在局部的泰勒展开
一阶(线性)近似
红点:展开点 (-0.1, -0.2)
选择阶数
近似公式
∂f/∂x·(x-a) +
∂f/∂y·(y-b)
近似效果
零阶:常数平面
一阶:切平面
二阶:二次曲面
高阶近似更贴近原函数
颜色说明
亮色区域:近似范围
17.5 数值微分:用有限差分近似导数
前文介绍的解析法推导出的解析解,能从正面推导出导数的闭式表达式。 本节介绍的数值微分,并不直接推导解析解,而是从导数的定义出发,利用数值方法近似计算导数。
数值微分是通过有限差分近似导数的方法,它在许多实际应用中非常重要,特别是当解析求导困难或不可能时。
导数的定义
从导数的定义出发,函数 f(x) 在点 x 处的导数定义为:
公式 (33)
当 h 取有限值(而非趋近于 0)时,我们就得到了数值微分的基本思想。
前向差分(Forward Difference)
前向差分使用当前点和前方一点来近似导数:
Forward Difference
公式 (34)
精度:前向差分的误差为 O(h),即误差与步长 h 成正比。
几何意义:前向差分计算的是通过点 (x, f(x)) 和点 (x+h, f(x+h)) 的割线斜率。
图 22. 前向差分的几何意义
后向差分(Backward Difference)
后向差分使用当前点和后方一点来近似导数:
Backward Difference
公式 (35)
精度:后向差分的误差也为 O(h),与前向差分精度相同。
几何意义:后向差分计算的是通过点 (x-h, f(x-h)) 和点 (x, f(x)) 的割线斜率。
图 23. 后向差分的几何意义
中心差分(Central Difference)
中心差分使用当前点前后两点来近似导数,精度更高:
Central Difference
公式 (36)
精度:中心差分的误差为 O(h²),比前向和后向差分精度高一个数量级!
几何意义:中心差分计算的是通过点 (x-h, f(x-h)) 和点 (x+h, f(x+h)) 的割线斜率,这条割线更接近 x 处的切线。
图 24. 中心差分的几何意义
三种方法比较
前向差分
后向差分
中心差分
举个例子
考虑函数 f(x) = sin(x),我们知道其导数为 f'(x) = cos(x)。
在 x = π/4 处,真实导数值为:
使用步长 h = 0.1,用三种数值方法计算:
前向差分:[sin(π/4 + 0.1) - sin(π/4)] / 0.1 ≈ 0.6967
后向差分:[sin(π/4) - sin(π/4 - 0.1)] / 0.1 ≈ 0.7175
中心差分:[sin(π/4 + 0.1) - sin(π/4 - 0.1)] / 0.2 ≈ 0.7071
误差比较:
- • 前向差分误差:|0.6967 - 0.7071| ≈ 0.0104
- • 后向差分误差:|0.7175 - 0.7071| ≈ 0.0104
- • 中心差分误差:|0.7071 - 0.7071| ≈ 0.0000
可以看到,中心差分的精度明显优于前向和后向差分!
步长选择的权衡
步长 h 的选择需要权衡两种误差:
截断误差
h 太大时,泰勒展开高阶项被忽略,导致截断误差增大。
h ↑ → 截断误差 ↑
舍入误差
h 太小时,相近数值相减会损失有效数字,导致舍入误差增大。
h ↓ → 舍入误差 ↑
⚖️ 实践建议:通常选择 h ≈ 10⁻⁵ 到 10⁻⁸ 之间的值可以在两种误差之间取得较好的平衡。
数值微分方法对比
对比三种差分方法:中心、前向、后向差分
步长 Δx
差分公式
f'(a) ≈ [f(a+Δx) - f(a-Δx)] / 2Δx
f'(a) ≈ [f(a+Δx) - f(a)] / Δx
f'(a) ≈ [f(a) - f(a-Δx)] / Δx
精度对比
中心差分:O(Δx²),二阶精度
前向差分:O(Δx),一阶精度
后向差分:O(Δx),一阶精度
✓ 中心差分最精确
应用场景
• 无法解析求导时
• 实验数据导数估计
• 数值优化算法
• 偏微分方程求解
17.5-17.7 数值求根方法
求解f(x)=0的三种经典方法,各有特点:
稳定但慢,线性收敛
最快,二次收敛,需导数
介于两者,超线性收敛
数值求根方法对比
对比三种经典求根方法的迭代过程和收敛速度
牛顿法
迭代次数: 0 / 5
选择方法
动画控制
方法特点
• 二次收敛(最快)
• 需要导数f'(x)
• xₙ₊₁ = xₙ - f(xₙ)/f'(xₙ)
• 依赖初值
收敛速度
牛顿法:最快(5-6次)
割线法:中等(7-8次)
二分法:最慢(20+次)
章节总结
关键要点
核心概念
- ▸泰勒展开:f(x)≈Σf⁽ⁿ⁾(x₀)/n!·(x-x₀)ⁿ,在展开点附近用多项式近似函数
- ▸二元泰勒:包含零阶、一阶、二阶项,逐级提高近似精度
- ▸数值微分:中心差分O(Δx²)最精确,前向后向差分O(Δx)
- ▸二分法:线性收敛,稳定但慢,需f(a)·f(b)<0
- ▸牛顿法:xₙ₊₁=xₙ-f(xₙ)/f'(xₙ),二次收敛最快,需导数
- ▸割线法:用差分近似导数,超线性收敛,介于二分和牛顿之间
🎯 实际应用
泰勒展开用于损失函数近似,数值微分用于梯度计算,牛顿法加速优化。
数值方法求解复杂方程,有限差分法解偏微分方程。
实验数据处理、曲线拟合、插值外推等都依赖数值方法。
求解最优化问题的根本是找到梯度为零的点,需要数值求根。