二、非线性方程的求解
概述
求根的方法一般分为 2 步:
- 根的搜索,分析方程存在多少个实根,找出每个根所在的区间
- 图解法:通过画函数的图形,了解根的分布情况
- 解析法:用微积分基本理论来分析
- 定步长搜索法:利用连续函数的介值定理
- 根的精确化,求满足给定精度的根的近似值
二分法
- 思想:依据连续函数的介值定理,反复将区间分半,在足够小的区间内,方程有且仅有一根
- 按此方法得到一系列区间 [a0,b0]⊃[a1,b1]⊃[a2,b2]⊃⋯⊃[ak,bk]⊃⋯[a_0, b_0] \supset [a_1, b_1] \supset [a_2, b_2] \supset \cdots \supset [a_k, b_k] \supset \cdots[a0,b0]⊃[a1,b1]⊃[a2,b2]⊃⋯⊃[ak,bk]⊃⋯,而且有
- bk−ak=12(bk−1−ak−1)=12k(b−a)b_k - a_k = \frac{1}{2}(b_{k-1} - a_{k-1}) = \frac{1}{2^k}(b-a)bk−ak=21(bk−1−ak−1)=2k1(b−a)
- f(ak)f(bk)<0f(a_k)f(b_k) \lt 0f(ak)f(bk)<0
- 对于给定精度 ϵ\epsilonϵ,若取 kkk 使得
12k+1(b−a)≤ϵ \frac{1}{2^{k+1}}(b-a) \le \epsilon 2k+11(b−a)≤ϵ
则有 ∣x∗−xk∣≤ϵ|x^* - x_k| \le \epsilon∣x∗−xk∣≤ϵ
简单迭代法
- 思想:通过递推产生一个序列,使其极限为方程的根(逐次逼近)
- 设方程 f(x)=0f(x) = 0f(x)=0,在 [a,b][a, b][a,b] 内有一根 x∗x^*x∗,将方程改写为 x=φ(x)x = \varphi(x)x=φ(x),任取 x0∈[a,b]x_0 \in [a, b]x0∈[a,b] 得到递推公式 xk+1=φ(xk),k=0,1,2,...x_{k+1} = \varphi(x_k), k=0, 1, 2, ...xk+1=φ(xk),k=0,1,2,...,从而得到序列 {xk}k=0∞\{ x_k \}_{k=0}^{\infty}{xk}k=0∞
- 📖若任取 x0∈[a,b]x_0 \in [a, b]x0∈[a,b] 迭代序列 {xk}k=0∞\{ x_k \}_{k=0}^{\infty}{xk}k=0∞ 收敛,则称迭代格式 xk+1=φ(xk)x_{k+1} = \varphi(x_k)xk+1=φ(xk) 收敛,否则称迭代格式发散
- 称 ek=x∗−xke_k = x^* - x_kek=x∗−xk 为第 kkk 次迭代误差
- 若 x∗=φ(x∗)x^* = \varphi(x^*)x∗=φ(x∗),x∗x^*x∗ 称为不动点
迭代法的收敛性
-
📖设 φ(x)\varphi(x)φ(x) 在 [a,b][a, b][a,b] 内存在一阶连续导数,且满足:
- 当 x∈[a,b]x \in [a, b]x∈[a,b] 时,φ(x)∈[a,b]⇒\varphi(x) \in [a, b] \Rightarrowφ(x)∈[a,b]⇒ 函数值不超过范围
- 存在正常数 L<1L \lt 1L<1,使得 maxa≤x≤b∣φ′(x)∣≤L<1⇒\max_{a \le x \le b}|\varphi^{'}(x)| \le L \lt 1 \Rightarrowmaxa≤x≤b∣φ′(x)∣≤L<1⇒ 导数值不超过范围
则有以下 2 个结论(部分内容要求证明)
- x=φ(x)x=\varphi(x)x=φ(x) 在 [a,b][a, b][a,b] 上有唯一实根,记为 x∗x^*x∗
- 对任意初值 x0∈[a,b]x_0 \in [a, b]x0∈[a,b],迭代格式 xk+1=φ(xk)x_{k+1} = \varphi(x_k)xk+1=φ(xk) 收敛,且 limk→∞xk=x∗\lim_{k \rightarrow \infty}x_k = x^*limk→∞xk=x∗。且有:
∣x∗−xk∣≤L1−L∣xk−xk−1∣, k=1,2,3,...(3.4)∣x∗−xk∣≤Lk1−L∣x1−x0∣, k=1,2,3,...(3.5)limk→∞x∗−xk+1x∗−xk=φ′(x∗)(3.6) \begin{aligned} &|x^* - x_k| \le \frac{L}{1-L}|x_k - x_{k-1}|,\ k=1, 2, 3,... && (3.4) \\ &|x^* - x_k| \le \frac{L^k}{1-L}|x_1 - x_0|,\ k=1, 2, 3,... && (3.5) \\ &\lim_{k \rightarrow \infty}\frac{x^* - x_{k+1}}{x^* - x_k} = \varphi^{'}(x^*) && (3.6) \end{aligned} ∣x∗−xk∣≤1−LL∣xk−xk−1∣, k=1,2,3,...∣x∗−xk∣≤1−LLk∣x1−x0∣, k=1,2,3,...k→∞limx∗−xkx∗−xk+1=φ′(x∗)(3.4)(3.5)(3.6)
- 😄设方程 x=φ(x)x = \varphi(x)x=φ(x) 在区间 [a,b][a, b][a,b] 上有根,且 mina≤x≤b∣φ′(x)∣>1\min_{a \le x \le b}|\varphi^{'}(x)| \gt 1mina≤x≤b∣φ′(x)∣>1,则对任意 x0∈[a,b]x_0 \in [a, b]x0∈[a,b],且 x0≠x∗x_0 \ne x^*x0=x∗,迭代格式发散
- 对于方程 x=φ(x)x = \varphi(x)x=φ(x),若在 x∗x^*x∗ 的某个邻域 S={x∣∣x−x∗∣≤δ}S = \{ x| |x-x^*| \le \delta \}S={x∣∣x−x∗∣≤δ} 内,对任意初值 x0∈Sx_0 \in Sx0∈S 迭代格式 xk+1=φ(xk)x_{k+1} = \varphi(x_k)xk+1=φ(xk) 都收敛,则称迭代法在 x∗x^*x∗ 的附近局部收敛
- 📖设方程 x=φ(x)x = \varphi(x)x=φ(x) 有根 x∗x^*x∗,且在 x∗x^*x∗ 的某个邻域 S={x∣∣x−x∗∣≤δ}S = \{ x| |x-x^*| \le \delta \}S={x∣∣x−x∗∣≤δ} 内 φ(x)\varphi(x)φ(x) 一阶连续可导,则:
- 当 ∣φ′(x∗)∣<1|\varphi^{'}(x^*)| \lt 1∣φ′(x∗)∣<1 时,迭代格式局部收敛
- 当 ∣φ′(x∗)∣>1|\varphi^{'}(x^*)| \gt 1∣φ′(x∗)∣>1 时,迭代格式发散
- 设序列 {xk}k=0∞\{ x_k \}_{k=0}^{\infty}{xk}k=0∞ 收敛于 x∗x^*x∗,并记 ek=x∗−xke_k = x^* - x_kek=x∗−xk。如果存在常数 p≥1p \ge 1p≥1 及非零常数 CCC,使得 limk→∞ek+1ekp=C\lim_{k \rightarrow \infty}\frac{e_{k+1}}{e_k^p} = Climk→∞ekpek+1=C,则称该序列是 ppp 阶收敛的
- ppp 越大,收敛越快
- 当 p=1p = 1p=1 且 0<∣C∣<10 \lt |C| \lt 10<∣C∣<1 时,称为线性收敛
- 当 p>1p \gt 1p>1 称超线性收敛,特别当 p=2p=2p=2 时,称平方收敛
- 若迭代序列是 ppp 阶收敛的,则称对应的迭代格式是 ppp 阶收敛的
- 😄设 φ(x)\varphi(x)φ(x) 在 x∗x^*x∗ 附近的某个邻域内有 p(p≥1)\pmb{p(p \ge 1)}p(p≥1)p(p≥1)p(p≥1) 连续导数,且 φ(k)(x∗)=0,k=1,2,..,p−1; φ(p)(x∗)≠0\pmb{\varphi^{(k)}(x^*) = 0, k=1, 2, .., p-1;\ \pmb{\varphi^{(p)}(x^*) \ne 0}}φ(k)(x∗)=0,k=1,2,..,p−1; φ(p)(x∗)=0φ(p)(x∗)=0φ(p)(x∗)=0φ(k)(x∗)=0,k=1,2,..,p−1; φ(p)(x∗)=0φ(p)(x∗)=0φ(p)(x∗)=0φ(k)(x∗)=0,k=1,2,..,p−1; φ(p)(x∗)=0φ(p)(x∗)=0φ(p)(x∗)=0,则迭代格式在 x∗x^*x∗ 附近是 p\pmb{p}ppp 阶局部收敛的,且有:
limk→∞x∗−xk+1(x∗−xk)p=(−1)p−1φ(p)(x∗)p! \lim_{k \rightarrow \infty} \frac{x^* - x_{k+1}}{(x^* - x_k)^p} = (-1)^{p-1}\frac{\varphi^{(p)}(x^*)}{p!} k→∞lim(x∗−xk)px∗−xk+1=(−1)p−1p!φ(p)(x∗)
注:若 p=1p=1p=1,要求 ∣φ′(x∗)∣<1|\varphi^{'}(x^*)| \lt 1∣φ′(x∗)∣<1
迭代法的加速(Aitken)
设方程 x=φ(x)x=\varphi(x)x=φ(x) 有根 x∗x^*x∗,且在 x∗x^*x∗ 附近 φ(x)\varphi(x)φ(x) 有 2 阶连续导数,若迭代格式 xk+1=φ(xk)x_{k+1} = \varphi(x_k)xk+1=φ(xk) 线性收敛,则迭代格式 xk+1=Φ(xk)x_{k+1} = \Phi(x_k)xk+1=Φ(xk) 平方收敛,其中
Φ(x)=xφ(φ(x))−φ2(x)x−2φ(x)+φ(φ(x))
\Phi(x) = \frac{x\varphi(\varphi(x)) - \varphi^2(x)}{x - 2\varphi(x) + \varphi(\varphi(x))}
Φ(x)=x−2φ(x)+φ(φ(x))xφ(φ(x))−φ2(x)
Newton 迭代格式
📖将 f(x)f(x)f(x) 在 xkx_kxk 处 Taylor 展开,整理后可得 Newton 迭代格式
f(x)=0⇒f(x)≈f(xk)+f′(xk)(x−xk)f(xk)+f′(xk)(x−xk)=0⇓xk+1=xk−f(xk)f′(xk), k=0,1,...
\begin{aligned}
&f(x) = 0 \Rightarrow f(x) \approx f(x_k) + f^{'}(x_k)(x-x_k) \\
&f(x_k) + f^{'}(x_k)(x-x_k) = 0 \Downarrow \\
&\pmb{x_{k+1} = x_k - \frac{f(x_k)}{f^{'}(x_k)},\ k = 0, 1, ...}
\end{aligned}
f(x)=0⇒f(x)≈f(xk)+f′(xk)(x−xk)f(xk)+f′(xk)(x−xk)=0⇓xk+1=xk−f′(xk)f(xk), k=0,1,...xk+1=xk−f′(xk)f(xk), k=0,1,...xk+1=xk−f′(xk)f(xk), k=0,1,...
- 设 x∗x^*x∗ 是方程 f(x)=0f(x) = 0f(x)=0 的 m\pmb{m}mmm 重根,则
- 当 m=1m = 1m=1,即 x∗x^*x∗ 为方程单根时,Newton 迭代二阶局部收敛
- 当 m≥2m \ge 2m≥2 时,Newton 迭代一阶(线性)局部收敛
😄证明:
f(x)=(x−x∗)mg(x), g(x∗)≠0f′(x)=(x−x∗)m−1(mg(x)+(x−x∗)g′(x))φ(x)=x−(x−x∗)g(x)mg(x)+(x−x∗)g′(x), φ(x∗)=x∗φ′(x∗)=limx→x∗φ(x)−φ(x∗)x−x∗=limx→x∗1x−x∗(x−(x−x∗)g(x)mg(x)+(x−x∗)g′(x)−x∗)=1−1m
\begin{aligned}
f(x) &= (x - x^*)^mg(x), \ g(x^*) \ne 0 \\
f^{'}(x) &= (x - x^*)^{m-1}(mg(x)+(x-x^*)g^{'}(x)) \\
\varphi(x) &= x - \frac{(x-x^*)g(x)}{mg(x) + (x-x^*)g^{'}(x)},\ \varphi(x^*) = x^* \\
\varphi^{'}(x^*) &= \lim_{x \rightarrow x^*} \frac{\varphi(x) - \varphi(x^*)}{x - x^*} \\
& = \lim_{x \rightarrow x^*} \frac{1}{x-x^*}(x - \frac{(x-x^*)g(x)}{mg(x) + (x-x^*)g^{'}(x)} - x^*) \\
& = 1 - \frac{1}{m}
\end{aligned}
f(x)f′(x)φ(x)φ′(x∗)=(x−x∗)mg(x), g(x∗)=0=(x−x∗)m−1(mg(x)+(x−x∗)g′(x))=x−mg(x)+(x−x∗)g′(x)(x−x∗)g(x), φ(x∗)=x∗=x→x∗limx−x∗φ(x)−φ(x∗)=x→x∗limx−x∗1(x−mg(x)+(x−x∗)g′(x)(x−x∗)g(x)−x∗)=1−m1
所以,当 m=1m=1m=1 时,φ′(x∗)=0⇒\varphi^{'}(x^*)=0 \Rightarrowφ′(x∗)=0⇒ Newton 迭代至少二阶局部收敛;当 m≥2m \ge 2m≥2 时,∣φ′(x∗)∣<1⇒|\varphi^{'}(x^*)| \lt 1 \Rightarrow∣φ′(x∗)∣<1⇒ 至少一阶局部收敛
重根处理
- 😄若 mmm 重根的 m\pmb{m}mmm 已知,迭代可改为
xk+1=xk−mf(xk)f′(xk), k=0,1,... x_{k+1} = x_k - m\frac{f(x_k)}{f^{'}(x_k)},\ k = 0, 1,... xk+1=xk−mf′(xk)f(xk), k=0,1,...
- 😄若 m\pmb{m}mmm 未知,记 u(x)=f(x)f′(x)u(x) = \frac{f(x)}{f^{'}(x)}u(x)=f′(x)f(x),此时 x∗x^*x∗ 是方程 u(x)=0u(x)=0u(x)=0 的单根,迭代格式如下
xk+1=xk−u(xk)u′(xk), k=0,1,... x_{k+1} = x_k - \frac{u(x_k)}{u^{'}(x_k)},\ k = 0, 1,... xk+1=xk−u′(xk)u(xk), k=0,1,...
Newton 迭代的大范围收敛性
😄设函数 f(x)f(x)f(x) 在区间 [a,b][a, b][a,b] 内 2 阶连续可导,且满足:
- f(a)f(b)<0⇒f(a)f(b) \lt 0 \Rightarrowf(a)f(b)<0⇒ 存在根
- 当 x∈[a,b]x \in [a, b]x∈[a,b] 时,f′(x)≠0⇒f^{'}(x) \ne 0 \Rightarrowf′(x)=0⇒ 和下面 f′′(x)f^{''}(x)f′′(x) 结合起来知道 f(x)f(x)f(x) 单调递增或单调递减
- 当 x∈(a,b)x \in (a, b)x∈(a,b) 时,f′′(x)f^{''}(x)f′′(x) 保号 ⇒\Rightarrow⇒ f′(x)f^{'}(x)f′(x) 单调
- a−f(a)f′(a)≤ba - \frac{f(a)}{f^{'}(a)} \le ba−f′(a)f(a)≤b,b−f(b)f′(b)≥ab - \frac{f(b)}{f^{'}(b)} \ge ab−f′(b)f(b)≥a ⇒\Rightarrow⇒ 值在一定范围内
则对 ∀x0∈[a,b]\forall x_0 \in [a, b]∀x0∈[a,b],Newton 迭代格式
xk+1=xk−f(xk)f′(xk), k=0,1,...
x_{k+1} = x_k - \frac{f(x_k)}{f^{'}(x_k)},\ k = 0, 1, ...
xk+1=xk−f′(xk)f(xk), k=0,1,...
收敛到方程 f(x)=0f(x)=0f(x)=0 在 [a,b][a, b][a,b] 内的唯一实根
Newton 法的变形
- 😄割线法
xk+1=xk−f(xk)f(xk)−f(xk−1)(xk−xk−1), k=1,2,... x_{k+1} = x_k - \frac{f(x_k)}{f(x_k)-f(x_{k-1})}(x_k - x_{k-1}),\ k=1, 2,... \\ xk+1=xk−f(xk)−f(xk−1)f(xk)(xk−xk−1), k=1,2,...
- 拟 Newton 法
xk+1=xk−f2(xk)f(xk)−f(xk−f(xk)), k=0,1,... x_{k+1} = x_k - \frac{f^2(x_k)}{f(x_k)-f(x_k - f(x_k))},\ k=0, 1,... \\ xk+1=xk−f(xk)−f(xk−f(xk))f2(xk), k=0,1,...
- Steffenson 法
xk+1=xk−f2(xk)f(xk+f(xk))−f(xk), k=0,1,... x_{k+1} = x_k - \frac{f^2(x_k)}{f(x_k+f(x_k))-f(x_k)},\ k=0, 1,... \\ xk+1=xk−f(xk+f(xk))−f(xk)f2(xk), k=0,1,...
本文详细介绍了非线性方程的求解方法,包括根的搜索与精确化。在根的搜索阶段,通过图解法和解析法分析根的分布,而定步长搜索法利用了连续函数的介值定理。在根的精确化阶段,二分法是一种常用方法,通过不断将区间分半找到根的近似值。此外,简单迭代法和Newton迭代法也被讨论,讨论了它们的收敛性和加速技巧。Newton法在满足一定条件时能实现二阶局部收敛,而在大范围内也能确保收敛。文章还提到了一些Newton法的变形,如割线法和拟Newton法,以及Steffenson法等高级迭代技术。
1972

被折叠的 条评论
为什么被折叠?



