计算方法(数值分析)
约 17063 字大约 57 分钟
2024-06-30
误差和有效数字 基本概念
避免危害
数值分析: 将复杂的计算式转换为指令集中定义过的+、- (×、÷)输入到计算机中, 得到近似解
1.2 误差的背景介绍
1.2.1 来源与分类
| 来源 | 分类 |
|---|---|
| 从实际问题中抽象出数学模型 | 模型误差 |
| 通过测量得到模型中参数的值 | 观测误差 |
| 求近似解 | 方法误差(截断误差) |
| 机器字长有限 | 舍入误差 |
1.2.2 误差与有效数字
绝对误差
绝对误差: e∗=x∗−x,其中x为精确值,x∗为x的近似值
- 精确值x∗通常不可求得, 我们只能求出近似值
绝对误差限: ∣e∗∣的上限即为ε∗,称为绝对误差限
工程上常记为x=x∗±e∗, 如∫01e−x2dx=0.743±0.006
注意:
- e* 理论上讲是唯一确定的,可能取正,也可能取负。
- e*> 0 不唯一,当然 e* 越小越具有参考价值。
相对误差
相对误差: er∗=xe∗≈x∗e∗
相对误差限: εr∗(=xε∗)=∣x∗∣ε∗
有效数字
看不懂的有效数字定义: 用科学记数法, 记近似值x∗=a1.a2a3...an∗10m(其中a1=0), 若(∣e∗∣=) ∣x∗−x∣≤0.5∗10m−n+1(即an的截取按照四舍五入规则), 则称x∗为n位有效数字, 精确到10m−n+1
- m+1: x∗小数点前的位数 n: 有效位数 m−n+1: 小数点后位数 (经过四舍五入的结果)
- 有效数字即为绝对误差限
有效数字与相对误差的关系
有效数字→相对误差限
- 已知x∗有n位有效数字, 其相对误差限为 εr∗=x∗ε∗=a1.a2⋯an×10m0.5×10−(n−1)×10m=2×a1.a2⋯10−(n−1)≤2a11×10−(n−1)
相对误差限→有效数字
已知 x* 的相对误差限可写为εr∗=2(a1+1)1×10−(n−1)
则: ∣x−x∗∣≤εr∗⋅∣x∗∣=2(a1+1)10−(n−1)×a1.a2⋯×10m<2(a1+1)10−(n−1)⋅(a1+1)×10m=0.5×10m−n+1
(a1+1)是为了通过不等式消除0.a2a3...
例: 为使π∗的相对误差小于0.001%,至少应取几位有效数字?
需求: 从有效数字确定相对误差限
设π∗取n位有效数字, 则其相对误差限为εr∗≤2a11×10−n+1
要保证相对误差小于0.001%, 只要保证εr∗≤2a11×10−n+1<0.001%
已知 π的a1=3,则从以上不等式可解得 n>6−log6,即n≥6,应取π∗=3.14159
数值运算中的误差限
误差传递公式
误差: ε=x∗−x, 相对 误差εr=x∗ε, 函数值相对误差f(x∗)f(x∗)−f(x)
相对误差限比值(条件数): Cp=∣f(x∗)f(x∗)−f(x)∣/∣εr∣≈∣f(x∗)xf′(x∗)∣
误差限公式
- 经过f(x)计算, 相对误差会被放大
加法: y∗=x1∗+x2∗
- ε(y∗)≤ε(x1∗)+ε(x2∗) 误差限直接相加
乘法: y∗=x1∗⋅x2∗
- ε(y∗)≤∣x2∗∣ε(x1∗)+∣x1∗∣ε(x2∗)
- 会受∣x1∗∣,∣x2∗∣影响
除法: y∗=x2∗x1∗
ε(y∗)≤∣x2∗∣2∣x2∗∣ε(x1∗)+∣x1∗∣ε(x2∗)
∣x2∗∣↓ ⇒ ε(y∗)↑↑
要尽量避免除法的出现, 防止误差暴涨
其他注意事项
- 避免小分母: 分母过小会造成浮点溢出
- 避免相近二数相减
- 会导致有效数字减少
- 几种经验性避免方法:
- x+ε−x=x+ε+xε;ln(x+ε)−lnx=ln(1+xε);
- 当 | x | << 1 时:1−cosx=2sin22x;ex−1=x(1+21x+61x2+...)
- 避免大数吃小数
- 计算机浮点运算, 指数对齐导致的基数部分丢失
- 尽量减少运算次数
- 使用秦九昭算法
第2章 插值法
插值多项式的唯一性
拉格朗日插值公式, 误差, 余项
差商, 均差, 均差的性质
牛顿插值多项式的形式, 误差
- 2.3.4 不用
埃尔米特插值
- 例题, 三个点值+一个点的导数的计算
- 均差表绘制方式
分段低次插值: 知道概念即可
?
三次样条插值 不用
什么是插值法
当精确函数 y = f(x) 非常复杂或未知时,在一系列节点 x0…xn处测得函数值y0=f(x0),…yn=f(xn),由此构造一个简单易算的近似函数 P(x)≈f(x),满足条件P(xi)=f(xi)(i=0,…n)。这里的 P(x) 称为f(x) 的插值函数。
最常用的插值函数是多项式

插值多项式
为了使插值函数更方便在计算机上运算,一般插值函数都使用代数多项式和有理函数
代数插值多项式的存在唯一性
设函数y=f(x)在区间[a,b]上的代数插值多项式为P(x)=a0+a1x+a2x2+...+anxn,Pn(xi)=yi,i=0,1,2,...,n
即多项式Pn(x)的系数a0,a1,...,an满足线性方程组
⎩⎨⎧a0+a1x0+a2x02+...+anx0n=y0a0+a1x1+a2x12+...+anx1n=y1......a0+a1xn+a2xn2+...+anxnn=yn
上述方程组的系数行列式为n+1阶的Vandermond行列式 (x0,x1...是已知量)
V=11...1x0x1...xn............x0nx1n...xnn=∏i=0n−1∏j=i+1n(xj−xi)=0(xi=xj)
定理: 满足P(xi)=yi,i=0,1,...,n , 次数不超过n的插值多项式一定唯一存在
- 若多项式次数≠n, 则插值多项式不唯一 例如P(x)=Ln(x)+p(x)∏i=0n(x−xi)也是一个插值多项式,其中p(x)可以是任意多项式。
2.2 拉格朗日插值
2.2.1 线性插值&抛物线插值
插值的目的是求出n次多项式P(x)=a0+a1x+a2x2+...+anxn 使得 Pn(xi)=yi,i=0,1,...,n
线性插值
即n=1, 已知y0=f(x0),y1=f(x1) 求P1(x)=a0+a1x满足P1(x0)=y0,P2(x1)=y1
由几何意义易得
P1(x)=y0+x1−x0y1−y0(x−x0)=[x0−x1x−x1]y0+[x1−x0x−x0]y1=i=0∑1li(x)yi l0(x)=x0−x1x−x1l1(x)=x1−x0x−x0
抛物线插值
即n=2, … 略!
2.2.2 拉格朗日插值多项式
定义—n次插值基函数
若n次多项式lj(x)(j=0,1,...,n)在n+1个节点x0<x1<...<xn上
满足条件lj(xk)=δjk={1,0,k=jk=jj,k=0,1,...,n,
则称这n+1个n次多项式l0(x),l1(x),...,ln(x)为插值节点x0,x1,...,xn上的n次插值基函数
与上面的例子类似, 可以推导得出n次插值基函数为lk(x)=(xk−x0)(xk−x1)⋯(xk−xk−1)(xk−xk+1)⋯(xk−xn)(x−x0)(x−x1)⋯(x−xk−1)(x−xk+1)⋯(x−xn)=i=0∏n(xk−xi)(x−xi)k=0,1,2,⋯,n
- (分子只少了一项x−xk, 分母对应的少一项xk−xk)
所以Ln(x)=∑k=0nyklk(x), 由lk(x)的定义可知Ln(xj)=∑k=0nyklk(xj)=yj,j=0,1,...,n 满足插值多项式的定义
将形如上述Ln(x)的插值多项式称为拉格朗日(Lagrange)插值多项式
拉格朗日插值多项式基函数的简化写法
记ωn+1(x)=(x−x0)(x−x1)...(x−xn), 可得ωn+1′(xk)=(xk−x0)(xk−x1)⋅⋅⋅(xk−xk−1)(xk−xk+1)⋅⋅⋅(xk−xn) (导数乘法公式)
得lk(x)=(xk−x0)(xk−x1)⋯(xk−xk−1)(xk−xk+1)⋯(xk−xn)(x−x0)(x−x1)⋯(x−xk−1)(x−xk+1)⋯(x−xn)=ωn+1′(xk)(x−xk)ωn+1(x)k=0,1,2,⋯,n
公式总结:
Ln(x)=k=0∑nyklk(x):Lagrange插值多项式lk(x)=ωn+1′(xk)(x−xk)ωn+1(x):Lagrange插值基函数
2.2.3 插值余项&误差估计
设区间[a, b]上f(x)的差值多项式为n阶的Ln(x), 令余项Rn(x)=f(x)−Ln(x)
显然, 在插值节点xi上有Rn(xi)=f(xi)−Ln(xi)=0
因此, Rn(x)在[a, b]上有n+1个零点
设Rn(x)=K(x)ωn+1(x);ωn+1(x)=(x−x0)(x−x1)...(x−xn)
此时有Rn(x)=K(x)ωn+1(x)=f(x)−Ln(x)
….
得
拉格朗日型余项定理:
Rn(x)=K(x)ωn+1(x)=(n+1)!f(n+1)(ξ)ωn+1(x),其中ωn+1(x)=i=0∏n(x−xi),ξ∈(a,b)
2.3 均差与牛顿插值多项式
2.3.1 插值多项式的逐次生成
Lagrange插值多项式的基函数为
当需要增加节点时, 所有基函数li(x)都需要重新计算
考虑使用一种逐次生成插值多项式的方法, 记为Pn(x)
对0次插值,P0(x)=f(x0)
对1次插值, {P1(x0)=f(x0)P1(x1)=f(x1)
- P1(x)=f(x0)+x1−x0f(x1)−f(x0)(x1−x0)(点斜式)=P0(x)+a1(x−x0)
对2次插值, ⎩⎨⎧P2(x0)=f(x0)P2(x1)=f(x1)P2(x1)=f(x2)
- P2(x)=P1(x)+a2(x−x0)(x−x1)
可得, Pn(x)=a0+a1(x−x0)+a2(x−x0)(x−x1)+...+an(x−x0)(x−x1)...(x−xn)
其中a0,a1,...,an可由Pn(xi)=f(xi)计算得到
P(x0)=f0=a0P(x1)=f1=a0+a1(x1−x0)P(x2)=f2=a0+a1(x2−x0)+a2(x2−x0)(x2−x1)a0=f0a1=x1−x0f1−f0a2=x2−x1x2−x0f2−f0−x1−x0f1−f0
这样计算下去会变得很麻烦, 定义均差来表示他们
2.3.2 均差及其性质
差商(均差, devided difference)的定义:
一阶差商:f[x0,xi]=x1−x0f(x1)−f(x0)二阶差商:f[x0,x1,x2] =x2−x0f[x1,x2]−f[x0,x1]...k+1阶差商:f[x0,...,xk+1]=x0−xk+1f[x0,x1,...,xk]−f[x1,...,xk,xk+1] =xk−xk+1f[x0,...,xk−1,xk]−f[x0,...,xk−1,xk+1]
是递归定义的
k+1阶差商只需要任选两个k阶差商相减, 并没有固定选择的要求
- 所以在上面选择了f[x0,...,xk−1,xk+1]作为减数
均差的性质 ※
①k阶均差-f(x)的线性表示
f[x0,x1,⋯,xk−1,xk]=i=0∑k(xi−x0)⋯(xi−xi−1)(xi−xi+1)⋯(xi−xk)f(xi)=i=0∑kωk+1′(xi)f(xi)其中ωk+1(x)=i=0∏k(x−xi),ωk+1′(xi)=j=0∏k(xi−xj)
②差商与x的顺序无关
- 如 f[x0,x1,x2]=f[x0,x2,x1]=f[x2,x1,x0]
③k阶差商与k阶导
当f(k)(x)在包含节点x0,x1,⋯,xk的区间存在时,在x0,x1,⋯,xk之间必存在一点ξ,使得f[x0,x1,⋯,xk]=k!f(k)(ξ)
2.3.3 牛顿插值多项式
Nn(x)=α0+α1(x−x0)+α2(x−x0)(x−x1)+....+αn(x−x0)...(x−xn−1)
⎩⎨⎧f(x)=f(x0)+f[x,x0](x−x0)f[x,x0]=f[x0,x1]+f[x,x0,x1](x−x1)....................f[x,x0,...,xn−1]=f[x0,...,xn]+f[x,x0,...,xn](x−xn)
把后一式带入前一式得
f(x)=f(x0)+f[x0,x1](x−x0)+f[x0,x1,x2](x−x0)(x−x1)+...+f[x0,...,xn](x−x0)...(x−xn−1)+f[x,x0,...,xn](x−x0)...(x−xn−1)(x−xn)牛顿插值多项式Nn(x)牛顿插值多项式余项Rn(x)
由上面的式子可以得出, n阶插值多项式Pn(x)=f[x0,...,xn]xn+?xn−1+...+?x+?1, 最高项系数一定为n阶差商
↑可以用来证明性质1(结合拉格朗日插值公式)
具体计算方式: 画出差商表
2.4 埃尔米特插值
埃米特插值: 不仅要求函数值相等, 还要求若干阶导数相等
埃尔米特插值: 要求插值函数 P (x) 满足P(xi)=f(xi),P’(xi)=f’(xi),…,P(m)(xi)=f(m)(xi)
注意:
- N个条件可以确定N-1阶多项式
- 要求在1个节点x0处直到m阶导数都重合的插值多项式即为Taylor多项式
- P(x)=f(x0)+f′(x0)(x−x0)+...+m!f(m)(x0)(x−x0)m其余项为R(x)=f(x)−P(x)=(m+1)!f(m+1)(ξ)(x−x0)(m+1)
- 一般只考虑f与f’的值。
Hermite插值计算出的多项式次数
给定n+1个点前面的插值函数最高只有n阶 (列出n+1个方程, 解得n个待定系数)
两点三次Hermite插值
考虑只有两个节点的插值问题
设f(x)在节点x0,x1处的函数值为y0,y1 在节点 x0,x1处的的一阶导数值为 y0′,y1′
两个节点最高可以用2×1+1=3次Hermite多项式H3(x)
H3(x)应满足插值条件
H3(x0)=y0H3(x1)=y1H3′(x0)=y0′H3′(x1)=y1′
用四个基函数表示H3(x)=y0α0(x)+y1α1(x)+y0′β0(x)+y′β1(x)
可得
α0(x0)=1α0(x1)=0α0′(x0)=0α0′(x1)=0α1(x0)=0α1(x1)=1α1′(x0)=0α1′(x1)=0β0(x0)=0β0(x1)=0β0′(x0)=1β0′(x1)=0β0(x0)=0β1(x0)=0β1′(x1)=0β1′(x1)=1 ⟹{对α(x):只有ai(xi)=1,其余为0对β(x):只有βi′(xi)=1,其余为0
因为H3(x)是3次多项式, 所以α0(x)最高也为3次, {α0(x0)=1α0(x1)=0α0′(x0)=0α0′(x1)=0①②
- 在x1处, ②α0(x1)=α0′(x1)=0, 即x1为α0的二重零点, 函数值为0, 导数也为0 可设α0(x)=(x−x1)2(αx+b)
- 在x0处, ①α0(x0)=1 α0′(x0)=0 , 代入得a=−(x0−x1)32b=(x0−x1)21+(x0−x1)32x0
代入得
α0(x)即=(x−x1)2(ax+b)=(x−x1)2(−(x0−x1)32x+(x0−x1)21+(x0−x1)32x0)=(x0−x1)2(x−x1)2(1+x0−x12x0−x0−x12x)=(1+2x1−x0x−x0)(x0−x1x−x1)2=(1+2l1(x))⋅l02(x)α0(x)=(1+2l1(x))⋅l02(x) =(1+2x1−x0x−x0)(x0−x1x−x1)2
类似可得
α1(x)β0(x)β1(x)=(1+2l0(x))⋅l12(x)=(1+2x0−x1x−x1)(x1−x0x−x0)2=(x−x0)⋅l02(x) =(x−x0)(x0−x1x−x1)2=(x−x1)⋅l12(x) =(x−x1)(x1−x0x−x0)2
代入H3(x)=y0α0(x)+y1α1(x)+y0′β0(x)+y′β1(x) 得
H3(x)=y0α0(x)+y1α1(x)+y0′β0(x)+y1′β1(x)=y0(1+2l1(x))⋅l02(x)+y1(1+2l0(x))⋅l12(x)+y0′(x−x0)⋅l02(x)2+y1′(x−x1)⋅l12(x)=y0(1+2x1−x0x−x0)(x0−x1x−x1)2+y1(1+2x0−x1x−x1)(x1−x0x−x0)2+y0′(x−x0)(x0−x1x−x1)2+y1′(x−x1)(x1−x0x−x0)2
两点三次Hermite插值的余项
两点三次Hermite插值的误差为R3(x)=f(x)−H3(x)
有$$\begin{cases} R_3(X_i) =f(x_i)-H_3(x_i)=0 \ R_3^{\prime}(X_i) =f{\prime}(x_i)-H{\prime}_3(x_i)=0 \end{cases} \qquad i=0,1$$
所以x0,x1均为R3(x)的二重零点, 可设R3(x)=K(x)(x−x0)2(x−x1)2,K(x)待定
设辅助函数φ(t)=f(t)−H3(t)−K(x)(t−x0)2(t−x1)2
则有
{φ(xi)=f(xi)−H3(xi)−K(x)(xi−x0)2(xi−x1)2=0φ(x)=f(x)−H3(x)−K(x)(x−x0)2(x−x1)2=0i=0,1
至少有5个零点 (φ(x0),φ(x1)四个,φ(x)至少一个)
用4次Rolle定理, 即可得, 至少存在一点ξ∈[x0,x1],使得φ(4)(x)=0, 即 φ(4)(ξ)=f(4)(ξ)−4!K(x)=0(H3(x)三次,导没了)
所以,两点三次Hermite插值的余项为
R3(x)=4!f(4)(ξ)(x−x0)2(x−x1)2其中ξ∈[x0,x1]
高次Hermite插值
作为多项式插值,三次已是较高的次数,次数再高就有可能发生Runge现象
因此,对有n+1节点的插值问题,我们可以使用分段两点三次Hermite插值
三点+一导数 插值
将导数的值算作两个点相近的一阶差商, 使用牛顿插值计算
例:求一个次数不高于3的多项式P3(x),使其满足P3(0)=0,P3(1)=1,P3′(1)=3,P3(2)=1 。

P3(x)=f(0)+f[0,1](x−0)+f[0,1,1](x−0)(x−1)+f[0,1,1,2](x−0)(x−1)(x−1)P3(x)=0+(x−0)+2(x−0)(x−1)−25(x−0)(x−1)(x−1)=−25x3+7x2−27x
这里相当于设置了四个点0, 1, 1, 2, 其中一阶差商f[0,1], f[1,2]正常计算
对f[1, 1]
- 观察差商定义f[x0,xi]=x1−x0f(x1)−f(x0)和导数定义f′(x0)=limh→0hf(x0+h)−f(x0)
- 可以发现f[x0,x0]=f′(x0)
2.5 分段低次插值
Runge现象
在[−5,5]上考察f(x)=1+x21 的Ln(x)。 取 xi=−5+n10i(i=0,...,n)

- n越大,端点附近抖动越大,称为Runge现象 (Ln(x)→f(x))
分段线性插值
在每个区间[xi,xi+1]上,用1阶多项式 (直线) 逼近 f (x):
f(x)≈P1(x)=xi−xi+1x−xi+1yi+xi+1−xix−xiyi+1(for eachx∈[xi,xx+1])
- 当取区间(max∣xi+1−xi∣)小时, 逼近f(x)
- 但是失去了光滑性
分段Hermite插值
给定x0,...,xn;y0,...,yn;y0′,...,yn′ 在[xi,xi+1]上利用两点的y及y’构造3次Hermite函数
- 导数一般不易得到。
第三章 不需要了
第4章 数值积分
概论
- 求积节点 求积系数概念
- 待定系数的确定
- 求积公式余项证明p102公式 梯形公式余项
Newton-Cotes公式
- 一阶二阶
- 稳定性 为什么不用这个公式
- 偶阶xxx
复合求积公式
- 复合梯形, 辛普森 及其余项
- p108 例题
龙贝格求积公式
龙贝格算法 (注意什么时候停止计算
p113 例6
4.5
- 自适应skip
- 高斯: 知道概念
- 高斯 lelangde公式
4.1 数值积分概论
4.1.1 数值积分基本思想
对于积分 I(f)=∫abf(x)dx
如果知道f(x)的原函数F(x), 则由牛顿-莱布尼茨公式有
∫abf(x)dx=F(x)∣ab=F(b)−F(a)
但是在工程和科研中, 常出现以下问题
- f(x)的解析式不存在, 只给出了f(x)的数值
- f(x)的原函数F(x)求不出来, 如F(x)不是初等函数
- f(x)表达式复杂, F(x)很难求出
简单的积分近似计算方式:
梯形公式:T=2b−a[f(b)+f(a)]中矩形公式:R=(b−a)f(2b+a)机械求积:∫abf(x)dx≈k=0∑nAkf(xk),其中xk称为求积节点,Ak称为求积系数
- 求积节点一般是给定的, 我们的目标就是确定求积系数Ak
4.1.2 插值多项式计算积分
积分的近似计算方法很多,但为方便起见,最常用的一种方法是利用插值多项式来构造数值求积公式,具体步骤如下:
在积分区间[a,b]上取n+1个插值节点a≤x0<x1...<xn≤b
f(x)的n次插值多项式: Ln(x)=∑k=0nf(xk)lk(x),lk(x)为插值基函数
用Ln(x)作为f(x)的近似, 此时积分的计算为
∫abf(x)dx≈∫abLn(x)dx=∫abk=0∑nf(xk)lk(x)dx=k=0∑nf(xk)∫ablk(x)dx
设求积系数Ak=∫ablk(x)dx则f(x)的积分I(f)=∫abf(x)dx≈∑k=0nAkf(xk)=In(f)
4.1.3 代数精度
定义 若求积公式∫abf(x)dx≈∑k=0nAkf(xk)
- 对任意次数不超过m次 的代数多项式 Pi(x)(i≤m)都准确成立,即∫abPi(x)dx=∑k=0nAkPi(xk)i=0,1,⋯,m
- 但对m+1次多项式却不能准确成立,即只要∫abxm+1dx=∑k=0nAkxkm+1
- 则称该求积公式具有m次的代数精度
例: 求梯形公式的代数精度
例:对于[a,b]上1次插值,有 L1(x)=a−bx−bf(a)+b−ax−af(b)⟹A1=A2=2b−a⟹∫abf(x)dx≈2b−a[f(a)+f(b)] 考察其代数精度。
解:逐次检查公式是否精确成立
代入0次的代数多项式P0=1:∫ab1dx=b−a=2b−a[1+1]
代入1次P1=x:∫abxdx=2b2−a2=2b−a[a+b]
代入2次P2=x2:∫abx2dx=3b3−a3=2b−a[a2+b2]
4.2 Newton-Cotes数值求积分
4.2.1 NewTon-Cotes公式
牛顿–柯特斯公式
Newton-Cotes公式是指等距节点下使用Lagrange插值多项式建立的数值求积公式
设函数f(x)∈C[a,b], (C[a,b]:在[a,b]上连续的函数集合)
将积分区间[a,b]分割成n等分, 各个节点为xk=a+kh,h=nb−a
使用Lagrange插值得: Ln(x)=∑k=0nf(xk)lk(x)Rn(x)=(n+1)!f(n+1)(ξ)ωn+1(x)
- 其中 lk(x)=∏0≤j≤nj=kxk−xjx−xjξ∈[a,b]ωn+1(x)=∏i=0n(x−xi)
此时积分准确值I=∫abf(x)dx=∫ab[L(x)+R(x)]dx=∫abf(xk)l(xk)dx+∫abR(x)dx=∑k=0nAkf(xk)+∫abR(x)dx
- 其中 Ak=∫ablk(x)dx=∫ab∏0≤j≤n\andj=kxk−xjx−xjdx
令In(f)=∑k=0nAkf(xk)R(In)=∫abRn(x)dx得, I(f)=In(f)+R(In),I(f)≈In(f)
- n阶Newton-Cotes求积公式: In(f)=∑k=0nAkf(xk)
- Newton-Cotes公式的余项: R(In)=∫abRn(x)dx其中,Rn(x)=(n+1)!f(n+1)(ξ)ωn+1(x)
Ak的计算与Cotes系数
Ak=∫ablk(x)dx=∫ab∏0≤j≤n\andj=kxk−xjx−xjdx
Ak设x=a+th,由x∈[a,b],得t∈[0,n]=∫ab0≤j≤nj=k∏xk−xjx−xjdx=∫0n(0≤j≤nj=k∏(k−j)h(t−j)h)⋅h⋅dt=k!⋅(n−k)!h⋅(−1)n−k∫0n0≤j≤nj=k∏(t−j)dt=(b−a)⋅n⋅k!⋅(n−k)!(−1)n−k∫0n0≤j≤n∏(t−j)dt
Ak=(b−a)⋅Ck(n)
∴In(f)=∑k=0nAkf(xk)=(b−a)⋅∑k=0nCk(n)f(xk)
- Ck(n)称为Cotes系数
- Cotes 系数仅取决于 n和k,可查表得到。与 f (x) 及区间[a, b]均无关。
4.2.2 低阶Newton-Cotes公式及其余项
在Newton-Cotes公式中,n=1,2,4时的公式是最常用也最重要三个公式,称为低阶公式
梯形公式
梯形求积公式
n=1,x0=a,x1=b,h=b−aCotes系数为{C0(1)=−∫01(t−1)dt=21C1(1)=∫01tdt=21I1(f)=(b−a)k=0∑1Ck(1)f(xk)=2b−a[f(x0)+f(x1)]即 I1(f)=2b−a[f(a)+f(b)]
梯形求积公式(两点公式): T=I1(f)=2(b−a)[f(a)+f(b)]
梯形公式余项
Rn(x)=(n+1)!f(n+1)(ξ)ωn+1(x)
R(T)=R(I1)=∫abR1(x)dx
R(T)=∫ab2f′′(ξx)(x−a)(x−b)dx=2f′′(η)∫ab(x−a)(x−b)dx=−2f′′(η)6(b−a)3=−12(b−a)3f′′(η)
∴ ∣R(T)∣≤12(b−a)3M2M2=maxx∈[a,b]∣f′′(x)∣
- 梯形(trapezia)公式具有1次代数精度
Simpson公式
取n=2,则x0=a,x1=2b+a,x2=b,h=2b−aCotes系数为⎩⎨⎧C0(2)=41∫02(t−1)(t−2)dt=61C1(2)=2−1∫02t(t−2)dt=64C2(2)=41∫02(t−1)tdt=61求积公式为I2=(b−a)k=0∑2Ck(2)f(xk)
Simpson求积公式(三点公式, 抛物线公式): S=I2(f)=[b−a](61f(x0)+64f(x1)+61f(x2))=6b−a[f(a)+4f(2a+b)+f(b)]
Simpson公式的余项: R(S)=R(I2)=∫abR2(x)dx=−180b−a(2b−a)4f(4)(η)
- Simpson公式具有3次代数精度
| 公式 | 余项R[f] | 步长h | 余项R[f] (用h表示) | 代数精度 | |
|---|---|---|---|---|---|
| n=1(梯形公式) | 2(b−a)[f(a)+f(b)] | −12(b−a)3f′′(ξ) | b−a | −12(b−a)3f′′(ξ),ξ∈[a,b] | 1 |
| n=2(Simpson公式) | 6b−a[f(a)+4f(2a+b)+f(b)] | −180b−a(2b−a)4f(4)(ξ) | 2b−a | −901h5f(4)(ξ),ξ∈[a,b] | 3 |
| n = 3: Simpson’s 3/8-Rule | 3b−a | −803h5f(5)(ξ) | 3 | ||
| n = 4: Cotes Rule | −9452(b−a)(4b−a)6f(6)(η) | 4b−a | −9458h7f(6)(ξ) | 5 |
定理:当n为偶数时,Newton-Cotes公式至少具有n+1次代数精度
证明:当n为偶数时, Newton-Cotes公式对xn+1的余项为0
⎩⎨⎧Rn(x)=f(x)−Pn(x)=(n+1)!f(n+1)(ξ)(x−x0)⋯(x−xn)=∏j=0n(x−xj)R(In)=∫abRn(x)dx=∫ab∏j=0n(x−xj)dx令x=a+th∫abRn(x)dx=∫0nhj=0∏n(a+th−a−jh)dt=hn+2∫0nj=0∏n(t−j)dt令t=μ+2n∫0nj=0∏n(t−j)dt=∫−2n2nj=0∏n(μ+2n−j)dμ=∫−2n2nj=−2n∏2n(μ−j)dμ被积函数j=−2n∏2n(μ−j)是奇函数令g(μ)=−2n∏2n(μ−j)=(μ+2n)(μ+2n−1)⋯μ⋯(μ−2n+1)(μ−2n)g(−μ)=(−μ+2n)(−μ+2n−1)⋯(−μ)⋯(−μ−2n+1)(−μ−2n)g(−μ)=(−1)n+1g(μ)=−g(μ)∴∫−2n2nj=−2n∏2n(μ−j)dμ=0∴R(In)=∫abRn(x)dx=∫0nj=0∏n(t−j)dt=∫−2n2nj=−2n∏2n(μ−j)dμ=0
4.2.3 Newton-Cotes公式的稳定性
对Cotes系数: Ck(n)=n⋅k!⋅(n−k)!(−1)n−k∫0n∏0≤j≤n(t−j)dt
值只和积分区间[a,b]的阶段xj划分有关, 与函数无关
因此用Newton-Cotes公式计算积分的舍入误差主要由函数值f(xk)的计算引起
考虑f(xk)的舍入误差对公式的影响
记精确值为f(xk),近似值为f~(xk), 误差εk=f(xk)−f~(xk)
则积分精确值和近似值误差为: In−I~n=(b−a)∑k=0nCk(n)[f(xk)−f~(xk)]
In−IˉnIn−Iˉn=(b−a)k=0∑nCk(n)εk≤(b−a)k=0∑nCk(n)∣εk∣≤(b−a)εk=0∑nCk(n)
- 性质:∑k=0nCk(n)=1
- ε=max{∣εk∣}
若 ∀k≤n,Ck(n)>0,有In−In≤(b−a)ε
结论
Newton-Cotes公式的舍入误差只是函数值误差的**(b-a)倍**
即∀k≤n ,Ck(n)>0时, Newton-Cotes公式是稳定的
- 稳定: 指误差是否会在计算过程中显著增长
- 实际上, 当n<8时, 公式都是稳定的
若Ck(n)有正有负,有(b−a)ε∑k=0nCk(n)≥(b−a)ε∑k=0nCk(n)=(b−a)ε
此时,公式的稳定性将无法保证
- 因此,在实际应用中一般不使用高阶Newton-Cotes公式, 而是采用低阶复合求积法
4.3 复合求积公式
当积分区间[a,b]长度较大, 节点数n+1固定时, 使用Newton-Cotes的误差较大
- 考虑提高n, 过高次数的插值, 公式的舍入误差很难控制
- Newton-Cotes公式在n≥8时不稳定
为了提高公式的精度,又使算法简单易行,往往使用复合方法
- 将[a,b]分为若干小区间, 在小区间内使用低阶Newton-Cotes, 最后累加
高次插值有Runge 现象,故采用分段低次插值 → 分段低次合成的 Newton-Cotes 复合求积公式。
4.3.1 复合梯形公式
分割: h=nb−a,xk=a+hk(k=0,1,⋯,n)
在第k个区间([xk,xk+1])上用梯形公式, 然后累加:
∫xkxk+1f(x)dx≈2xk+1−xk[f(xk)+f(xk+1)],k=0,...,n−1⟹∫abf(x)dx≈k=0∑n−12h[f(xk)+f(xk+1)]=2h[f(a)+2k=1∑n−1f(xk)+f(b)]=Tn
Tn=2h[f(a)+2k=1∑n−1f(xk)+f(b)]
- 头, 末尾(a=x0,b=xn)加1次, 其他节点被加两次
4.3.2 复合Simpson公式
复合Simpson公式:h=nb−a,xk=a+kh(k=0,...,n)∫xkxk+1f(x)dx≈6h[f(xk)+4f(xk+21)+f(xk+1)]
- 因为simpson最少需要三个插值点, 在xk和xk+1之间插入一个点xk+21
- n=2→n=3, 并不会增加过多的误差
神奇的分数下标
- n=2→n=3, 并不会增加过多的误差
$x_k$被加两次→$2f(x_k)$, $x_{k+\frac{1}{2}}$不会重复加→$4f(x_{k+\frac12})$
得∫abf(x)dx≈6h[f(a)+4∑k=0n−1f(xk+21)+2∑k=1n−1f(xk)+f(b)]=Sn
例: 使用各种复合求积公式计算定积分 I=∫01xsinxdx
为简单起见,依次使用8阶复合梯形公式、4阶复合Simpson公式和2阶复合Cotes公式
可得各节点的值如表
| Trapz | Simpson | Cotes | xi | f(xi) |
|---|---|---|---|---|
| x0 | x0 | x0 | 0 | 1 |
| x1 | x0+21 | x0+41 | 0.125 | 0.99739787 |
| x2 | x1 | x0+21 | 0.25 | 0.98961584 |
| x3 | x1+21 | x0+43 | 0.375 | 0.97672674 |
| x4 | x2 | x1 | 0.5 | 0.95885108 |
| x5 | x2+21 | x1+41 | 0.625 | 0.93615564 |
| x6 | x3 | x1+21 | 0.75 | 0.90885168 |
| x7 | x3+21 | x1+43 | 0.875 | 0.87719257 |
| x8 | x4 | x2 | 1 | 0.841470981 |
T8=161[f(0)+2k=1∑7f(xk)+f(1)]=0.94569086S4=241[f(0)+4k=0∑3f(xk+21)+2k=1∑3f(xk)+f(1)]=0.94608331C2=1801[7f(0)+k=0∑1[32f(xk+41)+12f(xk+42)+32f(xk+43)]+14k=1∑1f(xk)+7f(1)]=0.94608307
T8=0.94569086精度最低S4=0.94608331精度次高C2=0.94608307精度最高精确值I=0.946083070367183
- 但是误差和收敛速度还需要考虑
4.3.3 复合求积公式的余项和收敛的阶
余项
| 求积公式 | 单纯求积公式的余项 | 复合求积公式的余项 | |
|---|---|---|---|
| Tn | 2h[f(a)+2∑k=1n−1f(xk)+f(b)] | −12(b−a)(b−a)2f′′(η) | −12(b−a)(h)2f′′(η) |
| Sn | 6h[f(a)+4∑k=0n−1f(xk+21)+2∑k=1n−1f(xk)+f(b)] | −180b−a(2b−a)4f(4)(η) | −180b−a(2h)4f(4)(η) |
| C2 | −9452(b−a)(4b−a)6f(6)(η) | −9452(b−a)(4h)6f(6)(η) |
- 复合求积公式的误差就是将小区间(长度为步长h)的误差逐个累加
收敛阶
定义: 若一个积分公式的误差满足 limh→0hpR[f]=C<∞,且C=0 则称该公式是p 阶收敛的。
- Tn∼O(h2),Sn∼O(h4),Cn∼O(h6)
例: 计算π=∫011+x24dx
例2: 给定精度ε, 如何取n ( 要求∣I−Tn∣<ε, 如何判断n=?)
∣R[f]∣=∣−12h2(b−a)f′′(ξ)∣≤∣−12h2(b−a)∣M2
上例中若要求∣I−Tn∣<4×10−6,则∣Rn[f]∣≤−12h2(b−a)M2=32h2<4×10−6
⟹h<0.00244949 即:取 n=409 通常采取将区间不断对分的方法,即取n=2k
上例中2k≥409⇒k=9 时 , T512=3.14159202
4.4 龙贝格求积公式
复合梯形公式: Tn=2nb−a[f(a)+2∑k=1n−1f(xk)+f(b)]
在复合梯形公式的基础上, 将[a, b]分隔成2n等份, 且h=n(b−a)不变
即多出来下标为k+21,k=0,1,...,n−1的点
T2n=4n(b−a)[f(a)+2k=1∑n−1f(xk)+2k=0∑n−1f(xk+21)+f(b)]=4h[f(a)+2k=1∑n−1f(xk)+f(b)]+2hk=0∑n−1f(xk+21)=21Tn+2hk=0∑n−1f(xk+21)=21Tn+2nb−ak=0∑n−1f(a+(k+21)h)
- 在已经计算出Tn基础上, 如果精度不够, 就可以加n个点递归计算, 提高精度
新步长hk
记hk=2k(b−a),n=2k−1当节点数n=1时,h0=b−a,n=2时,h1=2b−aT1=2b−a[f(a)+f(b)](基本的梯形公式)T2=21T1+2b−af(a+21h)=T0(1)=21T0(0)+h1f(a+h1)当n=2k时,记Tn=T2k=T0(k)k=0,1,2,…
递推公式
T0(0)T0(k)=2b−a[f(a)+f(b)]=21T0(k−1)+hkj=0∑2k−1−1f(a+(2j+1)hk)k=1,2,⋯
上式称为递推的梯形公式
外推加速公式
复合梯形公式余项: RT=−12(b−a)(h)2f′′(η)
I由余项得RTnRT2n=I−TnI−T2n≈41,展开得I≈34T2n−31Tn≈34T2n−31Tn=64Tn+32∑f(xk+21)−31Tn=31Tn+32h∑f(xk+21)=312h[f(a)+2∑f(xk)+f(b)]+32h∑f(xk+21)=6h[f(xk)+4f(xk+21)+f(xk+1)]=Sn即复合Simpson公式
- 可知, Sn的精度>
龙贝格公式(算法)
用上前面的新步长: n=2k−1,Tn=T0(k−1),T2n=T0(k),I≈34T0(k)−31T0(k−1)=Sn
- 既然有T0(k), 那么肯定有T1(k)
T1(k−1)=34T0(k)−31T0(k−1)=Sn=S2k−1
同理, 对Simpson公式Sn=S2k−1=T1(k−1);S2n=S2k=T1(k)
…
加速公式总结为: Tm(k−1)=4m−11[4mTm−1(k)−Tm−1(k−1)]

- Romberg算法的代数精度为m的两倍
- Romberg算法的收敛阶高达m+1的两倍
4.5 高斯求积
只讲概念: 什么是高斯求积公式, 什么是高斯求积公式的的节点
构造具有2n+1次代数精度的求积公式
∫abρ(x)f(x)dx≈k=0∑nAkf(xk)
将节点 x0…xn 以及系数 A0…An 都作为待定系数。令 f(x)=1,x,x2,…,x2n+1 代入可求解,得到的公式具有2n+1 次代数精度。这样的节点称为Gauss点,公式称为Gauss 型求积公式。
高斯-勒让德求积公式
Legendre 多项式族 : 定 义 在 [ - 1, 1] 上 , ρ(x)≡1Pk(x)=2kk!1dxkdk(x2−1)k 满足:(Pk,Pl)={02k+12k=lk=l
由P0=1,P1=x有 递 推(k+1)Pk+1=(2k+1)xPk−kPk−1
以Pn+1的根为节点的求积公式称为高斯-勒让德公式
第5章 解线性方程组的直接方法
5.1
- 5.1.2 skip
5.2
note: 5.2是分解法的推导过程, 5.3是公式(但是公式背不了一点)
- 高斯消去法
- 矩阵三角分解(LU分解) (推导过程)
- 列主元消去
5.3
矩阵三角分解的公式
- 做题用算法/公式无所谓
- p153/3.2 3.3 公式不一定要背 会做就行
skip: 选主元三角分解法; 平方根分解法; 追赶法;
5.4
- 矩阵范数–各种算子范数计算
- 定理19 核半径
5.5
- 什么是病态良态, 计算
- 条件数, 计算
end
5.2 高斯消去法
5.2.1 消元与回代计算
对于线性方程组⎩⎨⎧a11x1+a12x2+...+a1mxm=b1...an1x1+an2x2+...+anmxm=bn 表示为Ax=b, A=\matrix{a_{11} &a_{12}&...&a_{1m}\\a_{21}&a_{22}&...&a_{2m}\\...\\a_{n1}&a_{n_2}&...&a_{nm}}
若detA=0(行列式)对其增广矩阵施行行初等变换
A=(A,b)=记(A(1),b(1))=a11(1)a21(1)⋮an1(1)a12(1)a22(1)⋮an2(1)⋯⋯⋯a1n(1)a2n(1)⋮ann(1)b1(1)b2(1)⋮bn(1)
经过n-1步消除列元素得
(A(1),b(1))⟶(A(n),b(n))=a11(1)a12(1)a22(2)⋯⋯⋱a1n(1)a2n(2)⋮ann(n)b1(1)b2(2)⋮bn(n)
可知aii(i)=0 i=1,2,⋯,n
因此,上三角形方程组A(n)x=b(n)有唯一解
因此可得线性方程组Ax=b的解:
⎩⎨⎧xn=ann(n)bnxi=aii(i)bi(i)−∑j=i+1naij(i)xj,i=n−1,n−2,⋯,2,1
定理: 若A的所有顺序主子式均不为0,则高斯消元无需换行即可进行到底,得到唯一解。
增广矩阵通常用于判断矩阵的有解的情况,比如说秩(A)<秩(A|B) 方程无解; 秩(A)=秩(A|B) =n方程有唯一解; 秩(A)=秩(A|B) <n方程有无穷多解; 秩(A)>秩(A|B)不可能。
5.2.2 矩阵的三角分解
Doolittle分解法和Crout分解法
LU分解法 : 用矩阵描述高斯消去法的过程
矩阵A的LU分解法定义: 不带行交换的Gauss 消去法的消元过程,产生一个单位下三角矩阵L和一个上三角矩阵U,即
A=LUL=1m21m31⋮mn−1,1mn,11m32⋮mn−1,2mn,21⋮mn−1,2mn,3⋱⋯⋯1mn,n−11U=A(n)=a11(1)a12(1)a22(2)⋯⋯⋱a1n(1)a2n(2)⋮ann(n)
- 其中U的第一行a1i(1)等于矩阵A的第一行
- L的第一列mi1=a11(1)ai1
- 其他元素通过矩阵乘法 (解方程)计算 出来
定理: 若A的所有顺序主子式均不为0,则 A 的 LU 分解唯一(其中 L 为单位下三角阵)。
对于杜立特分解: 固定i: j=i,i+1,...,n有aij=∑k=1i−1likukj+uij,(lij=1)
得 uij=aij−∑k=1i−1likukj
5.2.3 列主元消去法
在使用高斯消去法时, 每次确定行时, 加上交换行的操作
换行: 选择绝对值最大的列元素,换到上面
5.3 矩阵三角分解法
5.3.1 直接分解法
直接法是将原方程组化为一个或若干个三角形方程组的方法,共有若干种
A=a11a21⋮an1a12a22⋮an2⋯⋯⋮⋯a1na2n⋮ann系数矩阵x=x1x2⋮xn 未知量向量b=b1b2⋮bn常数项
直接三角分解法
A=LU⇒LUx=b⇒{Ly=bUx=y
杜立特分解法
A=LUL=1m21m31⋮mn−1,1mn,11m32⋮mn−1,2mn,21⋮mn−1,2mn,3⋱⋯⋯1mn,n−11U=A(n)=a11(1)a12(1)a22(2)⋯⋯⋱a1n(1)a2n(2)⋮ann(n)
- 其中U的第一行a1i(1)等于矩阵A的第一行
- L的第一列mi1=a11(1)ai1
- 其他元素通过矩阵乘法 (解方程)计算 出来
5.4 向量和矩阵范数
5.4.1 向量和矩阵的范数
向量范数
定义1 对于n维向量空间 Rn中任意一个向量 x, 若存在唯一一个实数 ∥x∥∈R与x对应,且满足
- (正定性)∥x∥≥0,且∀x∈Rn,∥x∥=0⇔x=0;
- (齐次性)∥αx∥=∣α∣⋅∥x∥, ∀x∈Rn,α∈R;
- (三角不等式)∥x+y∥≤∥x∥+∥y∥,∀x,y∈Rn.
- 则称 ∥x∥为向量x的范数
在向量空间Rn(Cn)中, x=(x1,x2,...,xn)T, 常用的向量x的范数
x的2-范数或欧氏范数: ∥x∥2=(∣x1∣2+∣x2∣2+⋯+∣xn∣2)1/2
x的1-范数: ∥x∥1=∣x1∣+∣x2∣+⋯+∣xn∣
x的∞范数(最大范数): ∥x∥∞=max1≤i≤n∣xi∣
x的p-范数: ∣∣x∣∣p=(∣x1∣p+∣x2∣p+...∣xn∣p)1/p
- 1≤i≤nmax∣xi∣≤(∣x1∣p+∣x2∣p+⋯+∣xn∣p)1/p≤(n1≤i≤nmax∣xi∣p)1/p=n1/p1≤i≤nmax∣xi∣→1≤i≤nmax∣xi∣(p→∞)
定义 向量序列{x(k)}收敛于向量x∗是指对每一个1≤i≤n, 都有limk→∞xi(k)=xi∗。
- 可以理解为∥x(k)−x∗∥∞→0
矩阵范数
定义: Rm×m空间的矩阵范数∣∣⋅∣∣ 对任意A,B∈Rm×m 满足以下条件
- 正定性: ∥A∥≥0;∥A∥=0⇔A=0
- 齐次性: ∣∣alphaA∣∣=∣α∣⋅∣∣A∣∣
- 三角不等式 : ∣∣A+B∣∣≤∣∣A∣∣+∣∣B∣∣
- 相容 当 m = n 时, ∣∣AB∣∣<∣∣A∣∣⋅∣∣B∣∣
算子范数:
由向量范数∥⋅∥p导出关于矩阵 A∈Rn×n 的 p 范数:∥A∥p=x=0max∥x∥p∥Ax∥p=∥x~∥p=1max∥Ax∥p则{∥AB∥p≤∥A∥p∥B∥p∥Ax∥p≤∥A∥p∥x∥p
特别有:
- 行和范数: ∥A∥∞=max1≤i≤n∑j=1n∣aij∣ (最大的 行之和)
- 列和范数: ∥A∥1=max1≤j≤n∑i=1n∣aij∣ (最大的 列之和)
- 2-范数: ∥A∥2=λmax(ATA) (ATA矩阵的最大特征值)
谱半径
定义 矩阵A的谱半径记为ρ(A)=max1≤i≤n∣λi∣,其中λi 为A的特征根

5.5 线性方程组的误差分析
∣∣A∣∣⋅∣∣A−1∣∣是关键的误差放大因子, 称为A的条件数, 即为cond(A)
- 越大, A越病态, 难以求得准确解
根据算子范数的不同, 条件数也不同
cond(A)1=∥A∥1⋅A−11cond(A)∞=∥A∥∞⋅A−1∞cond(A)2=∥A∥2⋅A−12=λmax(ATA)λmin(ATA)1=λmin(ATA)λmax(ATA)
条件数的性质
- A可逆, 则cond(A)p≥1
- A可逆, a∈R,则cond(αA)=cond(A)
- A正交, 则cond(A)2=1
- A可逆, R正交, 则cond(RA)2=cond(AR)2=cond(A)2
注:一般判断矩阵是否病态,并不计算A−1,而由经验得出。
- 行列式很大或很小(如某些行、列近似相关);
- 元素间相差大数量级,且无规则;
- 主元消去过程中出现小主元;
- 特征值相差大数量级。
第6章 解线性方程组的迭代法
6.1
- 什么是迭代 发散
- 序列极限
- 一些定理结论 不证明
6.2
- 雅可比 高斯-塞德尔迭代
- 定理9(1) ; (2), 定理10不用
- 超松弛skip
end
6.1 引言
在用直接法解线性方程组时要对系数矩阵不断变换
如果方程组的阶数很高,则运算量将会很大, 并且大量占用计算机资源
因此对线性方程组Ax=b, 要求找寻更经济、适用的数值解法
设A∈Rn×n,b∈Rn,x∈Rn
可以将线性方程组变换为x=Bx+f, 其中B∈Rn×n,f∈Rn,x∈Rn
- B称为迭代矩阵, f为常数项
- 显然上面两式同解,我们称两个方程组等价
对第二个线性方程组,采用以下步骤:
取初始向量 x(0),代入,可得x(1)=Bx(0)+f
依此类推
x(2)=Bx(1)+f∙∙x(k+1)=Bx(k)+f(k=0,1,2,⋯)
这种方式就称为迭代法 ,以上过程称为迭代过程
迭代法产生一个序列{x(k)}0∞
如果其极限存在,即limk→∞x(k)=x∗, 则称迭代法收敛,否则称为发散
迭代法收敛的充分条件
设有线性方程组x=Bx+f 以及一阶定常迭代法x(k+1)=Bx(k)+f
如果有迭代矩阵B的某种算子范数∣∣B∣∣=q<1, 则
迭代法收敛,即对任取x(0)均有limk→∞x(k)=x∗, 且x∗=Bx∗+f
∣∣x∗−x(k)∣∣≤qk∣∣x∗−x(0)∣∣
∣∣x∗−x(k)∣∣≤1−qq∣∣x∗−x(0)∣∣
∣∣x∗−x(k)∣∣≤1−qqk∣∣x(1)−x(0)∣∣
6.2 雅可比迭代法与高斯-塞德尔迭代法
雅可比迭代法
设线性方程组的一般形式为
⎩⎨⎧a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋯⋯⋯⋯an1x1+an2x2+⋯+annxn=bn
设aii=0(i=1,2,⋯,n),则可从上式解出 xi
如从第一行得:x1=a111[b1−(a12x2+⋯+a1nxn)]x2=a221[b2−(a21x1+⋯+a2nxn)]...此时原线性方程组化为:⎩⎨⎧x1=a111(b1−∑j=1na1jxj)=x1+a111(b1−∑j=1na1jxj)x2=a221(b2−∑j=1na2jxj)=x2+a221(b2−∑j=1na2jxj)⋯⋯⋯⋯xi=aii1(bi−∑j=1naijxj)=xi+aii1(bi−∑j=1naijxj)⋯⋯⋯⋯xn=ann1(bn−∑j=1nanjxj)=xn+ann1(bn−∑j=1nanjxj)
令D=diag(a11,a22,...,ann), 为方程组系数矩阵A的对角线
L=U=0−a21⋮−an100⋱−an2⋯⋯⋱⋯00⋮000⋮0−a120⋱0⋯⋯⋱⋯−a14−a24⋮0A的下三角部分的负矩阵A的上三角部分的负矩阵

A=D−L−UAx=b⇔(D−L−U)x=b⇔Dx=(L+U)x+b⇔x=BJD−1(L+U)x+fD−1b
故迭代过程化为x(k+1)=D−1(L+U)x(k)+D−1b,
令BJ=D−1(L+U),f=D−1b,于是x(k+1)=BJx(k)+f (k=0,1,2,⋯)
等价线性方程组为x=BJx+f⟷Ax=b, 即
x(k+1)=BJx(k)+D−1b,BJ=D−1(L+U)
- 称上式为解线性方程组的Jacobi迭代法(J法), 矩阵BJ为迭代法的迭代矩阵
Gauss-Seidel迭代法
雅可比迭代法中描述的x(k),x(k+1)都是向量, 每轮迭代时还要从x(k)=(x1(k),x2(k),...,xn(k))T的xi(k)中逐个计算xi(k+1)
- 我们知道xi(k+1)的误差会比xi(k)更小
- 在每轮迭代时, 对xi(k+1), 它前面的xj(k+1)(j=1,2,...,i−1)都计算出来了, 可以将它用上
x1(k+1)=a111(−a12x2(k)−a13x3(k)−a14x4(k)−⋯−a1nxn(k)+b1)x2(k+1)=a221(−a21x1(k+1)−a23x3(k)−a24x4(k)−⋯−a2nxn(k)+b2)x3(k+1)=a331(−a31x1(k+1)−a32x2(k+1)−a34x4(k)−⋯−a3nxn(k)+b3)⋯xn(k+1)=ann1(−an1x1(k+1)−an2x2(k+1)−an3x3(k+1)−⋯−ann−1xn−1(k+1)+bn)
- 红色部分用了xi(k+1)来更精确的进行计算
转换为矩阵形式
x(k+1)=D−1(Lx(k+1)+Ux(k))+D−1b⇔(D−L)x(k+1)=Ux(k)+b⇔x(k+1)=B(D−L)−1U x(k)+(fD−L)−1b
- B: Gauss-Seidel 迭代阵
Jacobi迭代法和Gauss-Seidel迭代法统称为简单迭代法
例题:
用Jacobi迭代法求解方程组,误差不超过1e-4




取初值x(0)=[000]T,使用Jacobi迭代法 x(k+1)=BJx(k)+f(k=0,1,2,⋯n,⋯)


用Guass-Seidel迭代法, 选择相同初值x(0)=[000]T

通过迭代,至第7步得到满足精度的解x7

- 可以看出,Gauss-Seidel迭代法的收敛速度比Jacobi迭代法要高
迭代法的收敛性
设解线性方程组的迭代格式: x(k+1)=Bx(k)+f (第k次迭代)
而方程组精确解x∗, 有x∗=Bx∗+f
两式相减得: x(k+1)−x∗=Bx(k)−Bx∗=B(x(k)−x∗)
令ε=x(k)−x∗,k=0,1,⋯, 则ε(k+1)=Bε(k)=B2ε(k−1)=⋯=Bk+1ε(0)
- ε(0)=x(0)−x∗, 是一个非零常数向量, (x(0)是选取的初值)
- 当然, 如果ε(0)=0, 说明恰好选到了精确值, 是特殊情况
因此迭代法收敛的充要条件为
k→∞limε(k+1)=k→∞lim(x(k+1)−x⋆)=0可转变为k→∞limBk+1=0
定理1: 迭代格式收敛的充要条件为 limk→∞Bk=0
定理2: 迭代格式收敛的充要条件为谱半径ρ(B)<1
- 根据矩阵与其Jordan标准形及特征值的关系,可知 limk→∞Bk+1⇔B的所有特征值的绝对值小于1
又因为矩阵的谱半径不超过其任一种算子范数,即ρ(B)<∣∣B∣∣v , 可得
定理 (充分条件) 若存在一个矩阵范数使得∥B∥=q<1, 则迭代收敛,且有下列误差估计:
①ε(k)=∥x∗−x(k)∥≤1−qq∥x(k)−x(k−1)∥②∥x−x(k)∥≤1−qqk∥x(1)−x(0)∥
证明:
&\begin{aligned}①\vec{x}^*-\vec{x}^{(k)}&=B(\vec{x}^*-\vec{x}^{(k-1)})\\&=B(\vec{x}^*-\overline{x}^{(k)}+\vec{x}^{(k)}-\vec{x}^{(k-1)})\\\Rightarrow\parallel\vec{x}^*-\vec{x}^{(k)}\parallel&\leq q(\parallel\vec{x}^*-\vec{x}^{(k)}\parallel+\parallel\vec{x}^{(k)}-\vec{x}^{(k-1)}\parallel)\quad\checkmark\end{aligned}
②x(k)−x(k−1)=B(x(k−1)−x(k−2))=...=Bk−1(x(1)−x(0))⇒∥x(k)−x(k−1)∥≤qk−1∥x(1)−x(0)∥
例: 
(1) 求Jacobi法的迭代矩阵
- BJ=D−1(L+U)=100010001⋅0−1−2−20−22−10=0−1−2−20−22−10
- 显然, BJ的常用算子范数∣∣BJ∣∣>1, 不能用范数, 只能用特征值来判断
- det(λI−BJ)=detλ122λ2−21λ=λ3=0
- 所以λ=0ρ(BJ)=max(∣λ∣)=0<1, Jacobi迭代法收敛
(2) 求Gauss-Seidel法的迭代矩阵
- BG=(D−L)−1U=112012001−1⋅000−2002−10=000−2202−32
- λ=0,λ=2ρ(BG)=max(∣λ∣)=2>1 , 所以Gauss-Seidel迭代法发散
Gauss-Seidel迭代法收敛速度快, 但是有可能发散, 并不一定优于Jacobi迭代法
另外,给出系数矩阵对角占优线性方程组的一个结论
定理: 若线性方程组Ax=b的系数矩阵A为严格对角占优矩阵,则Jacobi法和G−S法均收敛
矩阵严格对角占优: ∣aii∣>∑j=i∣aij∣i=1,2,3,⋯,n 对角线上的值比行上的其他值加起来都大
- 可得 ∣aii∣1∑j=i∣aij∣<1i=1,2,3,⋯,n
对于Jacobi迭代法,其迭代矩阵为BJ=D−1(L+U)BJ=−0a22a21⋮annan1a11a120⋮annan2⋯⋯⋱⋯a11a1na22a2n⋮0
- ∥BJ∥∞=maxi∣aii∣1∑j=i∣aij∣<1, 所以Jacobi迭代法收敛
对于G—S迭代法,其迭代矩阵为BG=(D−L)−1U, BG的形式不像BJ那样好确定, 不用范数, 使用特征值判断
BG的特征值λ满足 det(λI−BG)即det[λI−(D−L)−1U]从而 det(D−L)−1⋅det[λ(D−L)−U]因此 det[λ(D−L)−U]由∣aii∣>j=i∑∣aij∣得∣λ∣⋅∣aii∣>∣λ∣⋅j=1∑i−1∣aij∣+∣λ∣⋅j=i+1∑n∣aij∣=∣λ∣⋅j=1∑i−1∣aij∣+j=i+1∑n∣aij∣+(∣λ∣−1)⋅j=i+1∑n∣aij∣=0=0=0=0
第7章 非线性方程与方程组的数值解法
7,1
- 二分法和误差
7.2
- 不动点概念和公式
- 不动点收敛性
- 局部收敛
- 收敛的阶
7.3 skip
7.4 牛顿
- 简化牛顿 牛顿下山skip
- 重根情形
7.1 方程求根与二分法
7.1.1 多项式基础
略, 高数
7.1.2 二分法
零点定理: 若f∈C[a,b],且 f (a) · f (b) < 0,则 f 在 (a, b) 上必有一根。
算法描述
设[a,b]为单根区间
取中点x0=21(a+b)
若f(x0)=0, x0记为[a,b]中的根
若f(a)⋅f(x0)<0, 则[a,x0]为有根区间, 令a1=a,b1=x0
若f(x0)⋅f(b)<0, 则[x0,b]为有根区间, 令a1=x0,b1=b
一轮操作后, 有根区间[a,b]缩小为一半[a1,b1]
循环, 继续取[a1,b1]的中点x1=21(a1+b1), 得到新区间[a2,b2]
以此类推, 有xn=21(an+bn)
对于每个小区间都有(bn−an)=2n+11(b−a)∣xn−xn−1∣=2n+11(b−a)
确定适当的n, 可以得到任意要求的精度 (∣xk+1−xk∣<ε1)
误差分析
对于第0步的x0=21(a+b)有误差∣x0−x∗∣≤2b−a
第k步的xk误差:∣xk−x∗∣≤2k+1b−a
对于给定的精度ε,可估计二分法所需的步数 k :2k+1b−a<ε⇒k>ln2[ln(b−a)−lnε]−1
特点
优点
- 简单;
- 对f (x) 要求不高(只要连续即可)
缺点
- 无法求复根及偶重根
- 收敛慢
注:用二分法求根,最好先给出f(x) 草图以确定根的大概位置。或用搜索程序,将[a, b]分为若干小区间,对每一个满足f(ak)⋅f(bk)<0的区间调用二分法程序,可找出区间[a, b]内的多个根,且不必要求f(a)⋅f(b)<0。
例
例 证明1-x-sin x=0在[0,1]内仅有一个根,使用二分法求误差不大于21×10−4的根需要对分多少次?
解:
- 设f(x)=1−x−sinx,则f(0)=1>0,f(1)=−sin(1)<0,且f(x)在上[0,1]上连续,故方程f(x)=0在[0,1]内至少有一根
- 又因为f′(x)=−1−cosx<0,x∈[0,1],故f(x)在[0,1]上单调递减,因此f(x)在[0,1]上有且仅有一个根
- 使用二分法,使误差限∣xk−x∗∣≤2k+11(b−a)=2k+11≤21×10−4,解得 2k≥104,k≥ln24ln10=13.2877
所以对分14次即可
7.2 迭代法及其收敛性
不动点迭代法
将非线性方程f(x)=0化为一个同解方程x=φ(x), 且设φ(x)连续
任取初值x0代入, 得x1=φ(x0),x2=φ(x1)⋯,xk=φ(xk−1)
称上式为求解非线性方程x=φ(x)的不动点迭代法
- 称φ(x)为迭代函数, xk为第k步迭代值
- 若存在x∗,使得limk→∞xk=x∗, 则x∗为φ的不动点, 也就是方程f=0的根
发散与收敛
若存在一点x∗, 使得迭代序列{xk}0∞满足limk→∞xk=x∗则称迭代法收敛,否则称为发散
如果将原方程表示为{y=xy=φ(x)与原方程同解


例题: 用迭代法求解方程2x3−x−1=0
将原方程化为等价方程x=2x3−1
- 取x0=0, 得x0=0x1=2x03−1=−1x2=2x13−1=−3x3=2x23−1=−55, 显然发散
如果将原方程化为等价方程x=32x+1
x0=0x1=32x0+1=321≈0.7937x2=32x1+1=321.7937≈0.9644
得x2=0.9644;x3=0.9940;x4=0.9990;x5=0.9998;x6=1.0000;x7=1.0000
收敛, 原方程的解为x=1.0000
迭代法收敛定理
定理: 设迭代函数φ(x)在[a,b]上连续, 且满足
- 当x∈[a,b]时, a≤φ(x)≤b
- 存在一个整数L, 满足0<L<1且∀x∈[a,b], 有∣φ′(x)∣≤L(上确界为L)
则有以下结论
- 方程x=φ(x)在[a,b]内有唯一解x∗
- 对于任意初值x0∈[a,b], 迭代法xk+1=φ(xk)均收敛于x∗
- ∣xk−x∗∣≤1−LL∣xk−xk−1∣
- ∣xk−x∗∣≤1−LLk∣x1−x0∣
- ∣xk−x∗∣≤1−LL∣xk−xk−1∣≤1−LLk∣x1−x0∣
定理证明:
结论1: 方程x=φ(x)在[a,b]内有唯一解x∗
- ①构造了一个(a,a)→(b,b)的正方形空间, 对角线y=x; f(b)=φ(a)−a≥0;f(b)=φ(b)−b≤0
- ②对于两个函数交点:f(x)=φ(x)−x=0, f′(x)=φ′(x)−1<0, 单调递减
- 零点定理得φ(x)−x在(a,b)有唯一零点x∗
结论2: 对于任意初值x0∈[a,b], 迭代法xk+1=φ(xk)均收敛于x∗
- 对xk+1=φ(xk), 由微分中值定理和∣φ′(x)∣<L得
- ∣xk−x∗∣=∣φ(xk−1)−φ(xk)∣≤L∣xk−1−x∗∣≤⋯≤Lk∣x0−x∗∣
结论3&4: ∣xk−x∗∣≤1−LL∣xk−xk−1∣ 和∣xk−x∗∣≤1−LLk∣x1−x0∣
xk+p−xk≤xk+p−xk+p−1+xk+p−1−xk+p−2+⋯+xk+1−xk≤(Lp+Lp−1+⋯+L)∣xk−xk−1∣≤1−LLxk−xk−1(等比数列1−LL−Lp+1)
∣xk−x∗∣≤1−LLxk−xk−1≤1−LL2xk−1−xk−2⋯⋯⋯≤1−LLkx1−x0
另一种方式证明收敛: 由于L<1,limk→∞(∣xk−x∗∣)=0
由定理可知, 只要迭代函数满足∣φ′(x)∣≤L<1, 迭代法收敛
- 注: 虽然收敛, 但不一定是唯一根
对于实际要求中的误差限ε, 只要1−LL∣xk−xk−1∣<ε
- 所以当∣xk−xk−1∣<L1−Lε≈ε时, 即可停止迭代, 将xk作为近似解
收敛的阶
由定理1的结论可以看出,L或∣φ′(x)∣在[a, b]上越小, 迭代法收敛越快
设ek=∣xk−x∗∣
定义: 若存在实数p≥1和c>0满足limk→∞ekpek+1=c(ek+1和ekp同阶无穷小), 则称迭代法p阶收敛
- 当p=1称为线性收敛, p>1时称为超 线性收敛, p=2时称为平方收敛
收敛阶的计算
若φ(x)在精确解x∗处处可导, 泰勒展开得: φ(x)=φ(x∗)+φ′(x∗)(x−x∗)+2!φ′′(x∗)(x−x∗)2+...+(p−1)!φ(p−1)(x∗)(x−x∗)p−1+p!φ(p)(ξ)(x−x∗)p
如果 φ′(x∗)=φ′′(x∗)=⋯=φ(p−1)(x∗)=0 而 φ(p)(x∗)=0φ(x)=φ(x∗)+p!φ(p)(ξ)(x−x∗)p
- xk+1=φ(xk)=φ(x∗)+p!φ(p)(ξ)(xk−x∗)p
- xk+1−x∗=p!φ(p)(ξ)(xk−x∗)p
- ekpek+1=∣xk−x∗∣p∣xk+1−x∗∣→p!φ(p)(x∗),(k→∞), 即迭代法xk+1=φ(xk)的收敛阶是p
定理: 如果迭代法迭代函数 φ(x)在根x∗附近满足:
- (1)φ(x)存在p阶导数处连续;
- (2)φ′(x∗)=φ′′(x∗)=⋯=φ(p−1)(x∗)=0,而φ(p)(x∗)=0
则迭代法xk+1=φ(xk)的收敛阶是p
7.4 牛顿法
原理:将非线性方程线性化 —— Taylor 展开 /Taylor’s expansion/
取x0=x∗, 将f(x)在x0处做一阶泰勒展开,得
f(x)=f(x0)+f′(x0)(x−x0)+2!f′′(ξ)(x−x0)2,ξ 在 x0 和 x 之间。
将将 (x∗−x0)2 看成高阶小量,则有:
0=f(x∗)≈f(x0)+f′(x0)(x∗−x0)⇒x∗≈(x0−f′(x0)f(x0)) (去掉了f''项, 所以约等于)
xk+1=xk−f′(xk)f(xk): 
推导过程
如果将非线性方程f(x)=0化为等价方程 x=x−k(x)f(x) , 且k(x)=0
求k(x)
令φ(x)φ′(x)=x−k(x)f(x)=1−k′(x)f(x)−k(x)f′(x)
设x∗为f(x)=0的根, ∣φ′(x)∣在x∗附近越小,则收敛速度越快 (f(x)对x的影响大)
如果f′(x∗)=0, 令φ′(x∗)=0(收敛速度最大), 即1−k′(x∗)f(x∗)−k(x∗)f′(x∗)=0, k(x∗)=f′(x∗)1
取k(x)=f′(x)1, 则φ(x)=x−f′(x)f(x)x=x−f′(x)f(x)
取初值x0, 由上面k(x)构造迭代函数得
牛顿迭代法: xk+1=xk−f′(xk)f(xk)(k=0,1,2,⋯)
- 具有局部收敛性, 只要f′(x∗)=0, 牛顿迭代法至少平方收敛
例1: 用Newton迭代法求方程的根:

例: 设x∗是方程f(x)=0的m(≥2)重根,证明牛顿法xk+1=xk−f′(xk)f(xk)为线性收敛
- 因为x∗是方程f(x)=0的m重根, ∴f(x)=(x−x∗)mg(x)且g(x∗)=0,m≥2
- 得f′(x)=m(x−x∗)m−1g(x)+(x−x∗)mg′(x)
- xk+1=xk−f′(xk)f(xk)=xk−m(xk−x∗)m−1g(xk)+(xk−x∗)mg′(xk)(xk−x∗)mg(xk)=xk−mg(xk)+(xk−x∗)g′(xk)(xk−x∗)g(xk)
- xk+1−x∗=(xk−x∗)(1−mg(xk)+(xk−x∗)g′(xk)g(xk))
- limk→∞xk−x∗xk+1−x∗=limk→∞(1−mg(xk)+(xk−x∗)g′(xk)g(xk))=1−m1
- m≥2时,1−m1>0 由定义可知, 该迭代法对m(>=2)重根是线性收敛的
例: 设f(a)=0, 且f′(a)=0证明xk+1=xk−f′(xk)f(xk), 至少是平方收敛
- 令φ(x)=x−f′(x)f(x)
- 则φ′(x)=1−[f′(x)]2[f′(x)]2−f(x)f′′(x)=[f′(x)]2f(x)f′′(x)
- 所以φ′(a)=0,该迭代法至少平方收敛
收敛的充分条件
设f∈C2[a,b]若
- f(a)f(b)<0 (区间端点异号, 有根)
- 在整个[a,b]区间上, f′′不变号, 且f′(x)=0 (根唯一)
- 选取x0∈[a,b]使得f(x0)f′′(x0)>0 (产生的序列单调有界, 保证收敛)
则牛顿迭代法产生的序列{xk}收敛到f(x)在[a,b]区间内的唯一根
局部收敛性
设 f∈C2[a,b],若 x* 为 f (x) 在[a, b]上的单根,且 f’(x∗)=0,则存在 x* 的邻域Bδ(x∗)使得任取初值x0∈Bδ(x∗) ,Newton’s Method产生的序列{xk}收敛到x*,且满足limk→∞(x∗−xk)2x∗−xk+1=−2f′(x∗)f′′(x∗)
例: 证明牛顿迭代法实际上是一种特殊的不动点迭代 其中g(x)=x−f′(x)f(x) 则∣g′(x∗)∣=f′2(x∗)f′′(x∗)f(x∗)=0<1⇒收敛
