工程数学 计算方法 第二章 非线性方程的数值解法

写在前面:因为字太丑笔记自己都不想看,就用markdown记录一下工程数学这门课的学习。本学期本专业本课程课时较少,所以知识点都学得很浅,都是些最基础的东西。应试部分是根据老师划的考点整理的,仅针对本专业本学期本次期末考试。

 

非线性方程的数值解法

二次至四次方程有求根公式,但对于更高次幂的代数方程目前仍无有效的精确解法,对u与无规律的非代数方程的求解也无精确解法。转向求数值解。

基本概念:

方程 f ( x ) = 0 f(x)=0 f(x)=0的根 x ∗ x^* x称为 f ( x ) f(x) f(x)的零点,它使 f ( x ∗ ) = 0 f(x^*)=0 f(x)=0。若 g ( x ∗ ) ≠ 0 g(x^*)\neq 0 g(x)=0 f ( x ) f(x) f(x)可表示为 f ( x ) = ( x − x ∗ ) m g ( x ) f(x)=(x-x^*)^mg(x) f(x)=(xx)mg(x),其中 m m m为正整数且 f ( x ∗ ) = 0 f(x^*)=0 f(x)=0

m = 1 m=1 m=1时,称 x ∗ x^* x为单根。若 m > 1 m>1 m>1,称 x ∗ x^* x f ( x ) f(x) f(x) m m m重根,或 f ( x ) f(x) f(x) m m m重零点。若 x ∗ x^* x f ( x ) f(x) f(x) m m m重零点且 g ( x ) g(x) g(x)充分光滑,则
f ( x ∗ ) = f ′ ( x ∗ ) = f ′ ′ ( x ∗ ) = . . . = f ( m − 1 ) ( x ∗ ) = 0 ,   f ( m ) ( x ∗ ) ≠ 0 f(x^*)=f'(x^*)=f''(x^*)=...=f^{(m-1)}(x^*)=0,\,f^{(m)}(x^*)\neq 0 f(x)=f(x)=f(x)=...=f(m1)(x)=0,f(m)(x)=0

二分法

零点存在性定理:若 f ∈ C [ a , b ] f\in C[a,b] fC[a,b],且 f ( a ) ⋅ f ( b ) < 0 f(a)·f(b)<0 f(a)f(b)<0,则 f f f ( a , b ) (a,b) (a,b)上存在零点。称 [ a , b ] [a,b] [a,b]为方程的有根区间。

给定有根区间 [ a , b ] ( f ( a ) ⋅ f ( b ) < 0 ) [a,b](f(a)·f(b)<0) [a,b](f(a)f(b)<0)和精度 ε \varepsilon ε δ \delta δ

  1. 二分区间:令 x = a + b 2 x=\frac{a+b}2 x=2a+b
  2. 判断精度:如果 b − a < ε b-a<\varepsilon ba<ε f ( x ) < δ f(x)<\delta f(x)<δ,停机,输出 x x x
  3. 选取区间:如果 f ( a ) ⋅ f ( x ) < 0 f(a)·f(x)<0 f(a)f(x)<0,则令 b = x b=x b=x,否则令 a = x a=x a=x,返回第一步

给定精度 ε \varepsilon ε,可估计二分法所需步数 k k k
b − a 2 k < ε    ⟹    k > log ⁡ 2 b − a ε 取 k = ⌈ log ⁡ 2 b − a ε ⌉ \frac{b-a}{2^k}<\varepsilon\,\,\Longrightarrow\,\, k>\log_2\frac{b-a}\varepsilon\\ 取k=\left\lceil\log_2\frac{b-a}\varepsilon\right\rceil 2kba<εk>log2εbak=log2εba
优点:简单易用,且对 f ( x ) f(x) f(x)要求不高,连续即可收敛;
缺点:收敛速度慢,仅适用于标量方程且需事先确定隔离区间,无法求复根及偶重根。

精度选择:若选取 f ( x ) < δ f(x)<\delta f(x)<δ为精度要求,则无法保证 x x x的精度( f ( x ) f(x) f(x) x ∗ x^* x附近可能斜率很小)

不动点迭代法/Picard迭代法

原理

f ( x ) = 0 ⟺ x = φ ( x ) f ( x ) 的 根 ⟺ φ ( x ) 的 不 动 点 \begin{array}{c} f(x)=0&\Longleftrightarrow&x=\varphi(x)\\ f(x)的根&\Longleftrightarrow&\varphi(x)的不动点\\ \end{array} f(x)=0f(x)x=φ(x)φ(x)

从初值 x 0 x_0 x0出发,迭代 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk)。若 { x k } k = 0 ∞ \{x_k\}_{k=0}^\infty {xk}k=0收敛,即存在 x ∗ x^* x使得 lim ⁡ k → ∞ x k = x ∗ \underset{k\rightarrow\infty}{\lim}x_k=x^* klimxk=x

收敛性与停止条件

f ( x ) = 0 f(x)=0 f(x)=0改写为 x = φ ( x ) x=\varphi(x) x=φ(x)有很多形式,那么什么样的迭代格式存在不动点呢?什么样的迭代格式可以使得 { x k } k = 0 ∞ \{x_k\}_{k=0}^\infty {xk}k=0收敛到不动点呢?怎么判断收敛到何时可以停止呢?

不动点的存在性定理:设 φ ( x ) ∈ C [ a , b ] \varphi(x)\in C[a,b] φ(x)C[a,b]满足以下两个条件:

  1. 对于 ∀   x ∈ [ a , b ] \forall\, x\in [a,b] x[a,b],有 a ⩽ φ ( x ) ⩽ b a\leqslant \varphi (x)\leqslant b aφ(x)b

  2. ∃    0 < L < 1 \exists\,\, 0<L<1 0<L<1,使得 ∀   x , y ∈ C [ a , b ] \forall\, x,y\in C[a,b] x,yC[a,b],有
    ∣ φ ( x ) − φ ( y ) ∣ ⩽ L ∣ x − y ∣ \vert\varphi(x)-\varphi(y)\vert\leqslant L\vert x-y\vert φ(x)φ(y)Lxy
    φ ( x ) \varphi(x) φ(x) [ a , b ] [a,b] [a,b]上存在唯一不动点 x ∗ x^* x

    根据中值定理知: ∀   x ∈ [ a , b ] \forall\, x\in [a,b] x[a,b],有
    ∣ φ ( x ) − φ ( y ) ∣ = ∣ φ ′ ( ξ ) ( x − y ) ∣ ⩽ L ∣ x − y ∣ ,   ξ ∈ ( a , b ) \vert\varphi(x)-\varphi(y)\vert=\vert \varphi'(\xi)(x-y)\vert\leqslant L\vert x-y\vert,\,\xi\in(a,b) φ(x)φ(y)=φ(ξ)(xy)Lxy,ξ(a,b)
    它表明条件2可由 ∣ φ ′ ( x ) ∣ ⩽ L < 1 \vert\varphi'(x)\vert\leqslant L<1 φ(x)L<1替代。

收敛的充分条件:设 φ ( x ) ∈ C [ a , b ] \varphi(x)\in C[a,b] φ(x)C[a,b]满足上述定理的两个条件,则对于 ∀   x ∈ [ a , b ] \forall\, x\in [a,b] x[a,b],由 x k + 1 = φ ( x k ) x_{k+1}=\varphi (x_k) xk+1=φ(xk)得到的迭代序列 { x k } \{x_k\} {xk}收敛到 φ ( x ) \varphi(x) φ(x)的不动点 x ∗ x^* x,并有误差估计
∣ x k − x ∗ ∣ ⩽ L k 1 − L ∣ x 1 − x 0 ∣ \vert x_k-x^*\vert\leqslant\frac{L^k}{1-L}\vert x_1-x_0\vert xkx1LLkx1x0
由定理得,收敛可由 ∣ φ ′ ( x ) ∣ ⩽ L < 1 \vert\varphi'(x)\vert\leqslant L<1 φ(x)L<1判断。

对于精度要求 ∣ x k − x ∗ ∣ < ε \vert x_k-x^*\vert<\varepsilon xkx<ε,只要
L 1 − L ∣ x k − x k − 1 ∣ < ε \frac{L}{1-L}\vert x_k-x_{k-1}\vert<\varepsilon 1LLxkxk1<ε
因此,当
∣ x k − x k − 1 ∣ < 1 − L L ε ≈ ε \vert x_k-x_{k-1}\vert<\frac{1-L}{L}\varepsilon\approx\varepsilon xkxk1<L1Lεε
时,迭代就可以终止, x k x_k xk可以作为方程的近似解。

收敛速度

如何衡量算法的好坏呢?

设迭代过程 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_k) xk+1=φ(xk)收敛于方程 x = φ ( x ) x=\varphi(x) x=φ(x)的根 x ∗ x^* x,如果迭代误差 ε k = x k − x ∗ \varepsilon_k=x_k-x^* εk=xkx,当 k → ∞ k\rightarrow \infty k时,有
ε k + 1 ε k p   →   C   ≠ 0 \frac{\varepsilon_{k+1}}{\varepsilon_k^p}\,\rightarrow\,C\,\neq0 εkpεk+1C=0
则称该迭代过程是 p p p阶收敛的。
p = 1 p=1 p=1时称线性收敛, p > 1 p>1 p>1时称超线性收敛, p = 2 p=2 p=2时称平方收敛。
不动点迭代法依方程而异,收敛阶各不相同。

定理:设 φ ( x ) \varphi(x) φ(x)在其不动点 x ∗ x^* x的某邻域内 p p p阶连续可微,且
φ ( i ) ( x ∗ ) = 0   ( i = 1 , 2 , . . . , p − 1 ) ,   φ ( p ) ( x ∗ ) ≠ 0 \varphi^{(i)}(x^*)=0\,(i=1,2,...,p-1),\,\varphi^{(p)}(x^*)\neq0 φ(i)(x)=0(i=1,2,...,p1),φ(p)(x)=0
则不动点迭代法是 p p p阶收敛的。

e k = x k − x ∗ e_{k}=x_{k}-x^* ek=xkx,有
e k + 1 = x k + 1 − x ∗ = φ ( x k ) − φ ( x ∗ ) = φ ′ ( ξ ) e k lim ⁡ k → ∞ e k + 1 e k p = 1 p ! φ ( p ) ( x ∗ ) e_{k+1}=x_{k+1}-x^*=\varphi(x_k)-\varphi(x^*)=\varphi'(\xi)e_k\\ \underset{k\rightarrow\infty}{\lim}\frac{e_{k+1}}{e_k^p}=\frac1{p!}\varphi^{(p)}(x^*) ek+1=xk+1x=φ(xk)φ(x)=φ(ξ)ekklimekpek+1=p!1φ(p)(x)

Newton迭代法

基本思想

将非线性方程 f ( x ) = 0 f(x)=0 f(x)=0逐步线性化而形成迭代公式。

x 0 ≈ x ∗ x_0\approx x^* x0x,将 f ( x ) f(x) f(x) x 0 x_0 x0做一阶Taylor展开:
f ( x ) = f ( x 0 ) + f ′ ( x o ) ( x − x 0 ) + f ′ ′ ( ξ ) 2 ! ( x − x 0 ) ,    ξ 在 x 0 和 x 之 间 f(x)=f(x_0)+f'(x_o)(x-x_0)+\frac{f''(\xi)}{2!}(x-x_0),\,\,\xi在x_0和x之间 f(x)=f(x0)+f(xo)(xx0)+2!f(ξ)(xx0),ξx0x
( x ∗ − x 0 ) 2 (x^*-x_0)^2 (xx0)2看成高阶小量,有:
0 = f ( x ∗ ) ≈ f ( x 0 ) + f ′ ( x 0 ) ( x ∗ − x 0 )    ⟹    x ∗ ≈ x 0 − f ( x 0 ) f ′ ( x 0 ) 0=f(x^*)\approx f(x_0)+f'(x_0)(x^*-x_0)\,\, \Longrightarrow\,\, x^*\approx x_0-\frac{f(x_0)}{f'(x_0)} 0=f(x)f(x0)+f(x0)(xx0)xx0f(x0)f(x0)
得迭代公式:
x k + 1 = x k − f ( x k ) f ′ ( x k ) x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)} xk+1=xkf(xk)f(xk)

迭代停止条件与前同,即
∣ x i + 1 − x i ∣ < ε o r ∣ f ( x i ) ∣ ⩽ δ \vert x_{i+1}-x_i\vert<\varepsilon\quad or\quad \vert f(x_i)\vert\leqslant\delta xi+1xi<εorf(xi)δ

几何意义

切线法,取切线与x轴交点来作为迭代值。

切线法示意图

割线法:

Newt需要计算 f f f f ′ f' f,相当于2个函数值,费时。用 f f f的值近似 f ′ f' f,可少算一个函数值。
割线法示意图
切 线 斜 率 ≈ 割 线 斜 率 ⟹ f ′ ( x k ) ≈ f ( x k ) − f ( x k − 1 ) x k − x k − 1 ⟹ x k + 1 = x k − f ( x k ) ( x k − x k − 1 ) f ( x k ) − f ( x k − 1 ) \begin{array}{c} 切线斜率\approx 割线斜率&\Longrightarrow\quad f'(x_k)\approx\frac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}}\\ &\Longrightarrow\quad x_{k+1}=x_k-\frac{f(x_k)(x_k-x_{k-1})}{f(x_k)-f(x_{k-1})} \end{array} 线线f(xk)xkxk1f(xk)f(xk1)xk+1=xkf(xk)f(xk1)f(xk)(xkxk1)
需要两个初值 x 0 x_0 x0 x 1 x_1 x1
收敛比Newton迭代法慢,且对初值要求同样高。

收敛性

Newton迭代法收敛性依赖于 x 0 x_0 x0的选取。
切线法初值的选取

收敛的充分条件:

f ∈ C 2 [ a , b ] f\in C^2[a,b] fC2[a,b],若

  1. f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0;(有根)
  2. 在整个 [ a , b ] [a,b] [a,b] f ′ ′ f'' f不变号且 f ′ ( x ) ≠ 0 f'(x)\neq0 f(x)=0;(根唯一)
  3. 选取 x 0 ∈ [ a , b ] x_0\in[a,b] x0[a,b]使得 f ( x 0 ) f ′ ′ ( x 0 ) > 0 f(x_0)f''(x_0)>0 f(x0)f(x0)>0;(序列单调有界,保证收敛)
    则Newton迭代法产生的序列 { x k } \{x_k\} {xk}收敛到 f ( x ) f(x) f(x) [ a , b ] [a,b] [a,b]的唯一根。

局部收敛。
实际上是一种特殊的不动点迭代。

Newton下山法

若由 x k x_k xk得到的 x k + 1 x_{k+1} xk+1不能使 ∣ f ∣ \vert f\vert f减小,则在 x k x_k xk x k + 1 x_{k+1} xk+1之间找一个更好的点 x k + 1 ‾ \overline{x_{k+1}} xk+1,使得 ∣ f ( x k + 1 ‾ ) ∣ < ∣ f ( x k ) ∣ \vert f(\overline{x_{k+1}})\vert<\vert f(x_k)\vert f(xk+1)<f(xk)。取
x k + 1 ‾ = λ x k + 1 + ( 1 − λ ) x k   = λ [ x k − f ( x k ) f ′ ( x k ) ] + ( 1 − λ ) x k   = x k − λ f ( x k ) f ′ ( x k ) \begin{array}{c} \overline{x_{k+1}}=\lambda x_{k+1}+(1-\lambda)x_k\, =\lambda[x_k-\frac{f(x_k)}{f'(x_k)}]+(1-\lambda)x_k\, =x_k-\lambda\frac{f(x_k)}{f'(x_k)} \end{array} xk+1=λxk+1+(1λ)xk=λ[xkf(xk)f(xk)]+(1λ)xk=xkλf(xk)f(xk)
λ = 1 \lambda=1 λ=1时为Newton迭代公式。
λ = 1 \lambda=1 λ=1带入效果不好时, λ \lambda λ取半再代入计算。
效果不好:函数值序列没有递减。

加速迭代法

有的迭代过程虽然收敛,但收敛阶低,收敛速度慢,效果不好。

如何优化?

Aitken加速迭代法。

x ‾ k + 1 = x k − ( x k + 1 − x k ) 2 x k − 2 x k + 1 + x k + 2   ( k = 0 , 1 , ⋯   ) \overline x_{k+1} = x_k-\frac{(x_{k+1}-x_k)^2}{x_k-2x_{k+1}+x_{k+2}}\,(k=0,1,\cdots) xk+1=xkxk2xk+1+xk+2(xk+1xk)2(k=0,1,)

收敛速度:

可以证明:
lim ⁡ k → ∞ x ‾ k + 1 − x ∗ x k − x ∗ = 0 \underset{k\rightarrow\infty}{\lim}\frac{\overline x_{k+1}-x^*}{x_k-x^*}=0 klimxkxxk+1x=0
它表明序列 { x ‾ k } \{\overline x_k\} {xk}的收敛速度比 { x k } \{x_k\} {xk}的收敛速度快。

Aitken加速迭代法有 lim ⁡ k → ∞ ∣ x k + 1 − x ∗ ∣ ∣ x k − x ∗ ∣ = 0 \underset{k\rightarrow\infty}{\lim}\frac{\vert x_{k+1}-x^*\vert}{\vert x_k-x^*\vert}=0 klimxkxxk+1x=0 lim ⁡ k → ∞ ∣ e k + 1 ∣ ∣ e k ∣ = 0 \underset{k\rightarrow\infty}{\lim}\frac{\vert e_{k+1}\vert}{\vert e_k\vert}=0 klimekek+1=0称为超线性收敛。

应试

牛顿迭代法

对单根:平方收敛(2阶收敛)。
收敛性取决于 x 0 x_0 x0的选取。一般给 x 0 x_0 x0 x 0 x_0 x0的取值区间。给取值区间的时候如果不放心收敛性可以取端点。
套公式就完了。
x k + 1 = x k − f ( x k ) f ′ ( x k ) x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)} xk+1=xkf(xk)f(xk)
考试不考Newton下山法,计算量太大,没必要。

收敛阶

好像是要考选择
ε k + 1 ε k p   →   C   ≠ 0   lim ⁡ k → ∞ x k + 1 − x ∗ x k − x ∗ = C   ≠ 0 \frac{\varepsilon_{k+1}}{\varepsilon_k^p}\,\rightarrow\,C\,\neq0\\\,\\ \underset{k\rightarrow\infty}{\lim}\frac{x_{k+1}-x^*}{x_k-x^*}=C\,\neq0 εkpεk+1C=0klimxkxxk+1x=C=0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值