当前位置: 首页 > news >正文

数值方法笔记2:解决非线性方程

1. 不动点定理及其条件验证

不动点定义P=g(P){P}={g}({P})P=g(P)
不定点迭代xk+1=g(xk){x}_{{k}+1}={g}\left({x}_{{k}}\right)xk+1=g(xk)
定理: 如果g(xk)g({x_k})g(xk)是连续的并且序列xk{x_k}xk是收敛的,xk{x_k}xk收敛到方程的解:x=g(x){x}=g({x})x=g(x)
x∗=g(x∗)and xk−>x∗{x}^{*}={g}\left({x}^{*}\right) \text { and } {x}_{{k}}->{x}^{*}x=g(x) and xk>x

在这里插入图片描述

定理: 假设
(1) 对于g(x)g(x)g(x)g′(x)∈C[a,b]g'(x)\in C[a,b]g(x)C[a,b](连续)
(2) KKK是一个正的常数
(3) p0∈(a,b)p_0\in(a,b)p0(a,b)
(4) g(x)∈[a,b],∀x∈[a,b]g(x)\in[a,b],\forall x\in[a,b]g(x)[a,b],x[a,b]
那么
(a) 如果∣g′(x)∣≤K<1,∀x∈[a,b],xk+1=g(xk)\left|\mathrm{g}^{\prime}(x)\right| \leq \mathrm{K}<1 , \forall x \in[\mathrm{a}, \mathrm{b}], \mathrm{x}_{\mathrm{k}+1}=\mathrm{g}\left(\mathrm{x}_{\mathrm{k}}\right)g(x)K<1x[a,b],xk+1=g(xk)收敛。
(b) 如果∣g′(x)∣>1,∀x∈[a,b],xk+1=g(xk)\left|\mathrm{g}^{\prime}(x)\right|>1 , \forall x \in[\mathrm{a}, \mathrm{b}], \mathrm{x}_{\mathrm{k}+1}=\mathrm{g}\left(\mathrm{x}_{\mathrm{k}}\right)g(x)>1x[a,b],xk+1=g(xk)不收敛

曲线的切线斜率k∈(−1,1)k\in(-1,1)k(1,1)看下面的图逐渐收敛:

在这里插入图片描述

在这里插入图片描述
曲线的切线斜率k∈[−∞,−1)∪(1,∞]k\in[-\infty,-1)\cup (1,\infty]k[,1)(1,]看下面的图不收敛:

在这里插入图片描述
在这里插入图片描述
综上所述,不动点迭代满足最重要的是:

(1)∣g′(x)∣≤K<1,∀x∈[a,b]【g′(x)的边界条件】(2)g(x)∈[a,b],∀x∈[a,b],并且有g([a,b])⊂[a,b]【g(x)的边界条件】\begin{aligned}&(1) \left|\mathrm{g}^{\prime}(x)\right| \leq \mathrm{K}<1 ,\forall x \in[\mathrm{a}, \mathrm{b}] & 【g'(x)的边界条件】\\ &(2) \mathrm{g}(x) \in[\mathrm{a}, \mathrm{b}] , \forall x \in[\mathrm{a}, \mathrm{b}] ,并且有g([a, b]) \subset[a, b]& 【g(x)的边界条件】\end{aligned}(1)g(x)K<1,x[a,b](2)g(x)[a,b]x[a,b],并且有g([a,b])[a,b]g(x)的边界条件】g(x)的边界条件】

单调和非单调要分别判断边界条件,单调的g(x)的范围看端点就可以了,非单调还要看极值点。
在这里插入图片描述

2. 收敛阶、收敛检测与收敛加速

定义;
∣xk+1−x∗∣≤C∣xk−x∗∣p,k>M, for C>0,p>0\left|x_{k+1}-x^{*}\right| \leq C\left|x_{k}-x^{*}\right|^{p}, k>M \text {, for } C>0, p>0xk+1xCxkxp,k>M, for C>0,p>0

lim⁡k→∞∣xk+1−x∗∣∣xk−x∗∣p=C\lim _{k \rightarrow \infty} \frac{\left|x_{k+1}-x^{*}\right|}{\left|x_{k}-x^{*}\right|^{p}}=Cklimxkxpxk+1x=C
ppp阶收敛
其中:
p=1p=1p=1 , 线性收敛(linear convergence)
1<p<21<p<21<p<2 , 超线性收敛(superlinear convergence)
p=2p=2p=2 , 平方收敛(square convergence)

2.1 如何估计不动点迭代的收敛阶xk+1=g(xk){x}_{{k}+1}={g}\left({x}_{{k}}\right)xk+1=g(xk)

定理;设x∗x^*x是最优解,如果g′(x∗)=g′′(x∗)=…=g(p−1)(x∗)=0g^{\prime}\left(x^{*}\right)=g^{\prime \prime}\left(x^{*}\right)=\ldots=g^{(p-1)}\left(x^{*}\right)=0g(x)=g′′(x)==g(p1)(x)=0, g(p)(x∗)≠0g^{(p)}\left(x^{*}\right) \neq 0g(p)(x)=0xk+1=g(xk)x_{k+1}=g\left(x_{k}\right)xk+1=g(xk)ppp阶收敛。

证明
xk+1=g(xk)=g(x∗)+g′(x∗)(xk−x∗)+…+g(p−1)(x∗)(xk−x∗)p−1(p−1)!+g(p)(ξ)(xk−x∗)pp!,【ξ∈[xk,x∗]或[x∗,xk]】⇒xk+1=x∗+g(p)(ξ)(xk−x∗)pp!⇒xk+1−x∗(xk−x∗)p=g(p)(ξ)p!→g(p)(x∗)p!\begin{aligned} x_{k+1}&=g\left(x_{k}\right)=g\left(x^{*}\right)+g^{\prime}\left(x^{*}\right)\left(x_{k}-x^{*}\right)+\ldots\\&+\frac{g^{(p-1)}\left(x^{*}\right)\left(x_{k}-x^{*}\right)^{p-1}}{(p-1) !} +\frac{g^{(p)}(\xi)\left(x_{k}-x^{*}\right)^{p}}{p !}, \quad【\xi \in\left[x_{k}, x^{*}\right] 或\left[x^{*}, x_{k}\right] 】\\ \Rightarrow& x_{k+1}=x^{*}+\frac{g^{(p)}(\xi)\left(x_{k}-x^{*}\right)^{p}}{p !} \\ \Rightarrow& \frac{x_{k+1}-x^{*}}{\left(x_{k}-x^{*}\right)^{p}}=\frac{g^{(p)}(\xi)}{p !} \rightarrow \frac{g^{(p)}\left(x^{*}\right)}{p !} \end{aligned}xk+1=g(xk)=g(x)+g(x)(xkx)++(p1)!g(p1)(x)(xkx)p1+p!g(p)(ξ)(xkx)p,ξ[xk,x][x,xk]xk+1=x+p!g(p)(ξ)(xkx)p(xkx)pxk+1x=p!g(p)(ξ)p!g(p)(x)

2.2 给定精度的情况下,如何预测不动点迭代需要迭代的次数

定义L=max⁡x∈[a,b]{∣g′(x)∣}<1L=\max _{x \in[a, b]}\left\{\left|g^{\prime}(x)\right|\right\}<1L=maxx[a,b]{g(x)}<1
迭代的次数满足k≥ln⁡(ε(1−L)/∣x1−x0∣)/ln⁡Lk \geq \ln \left(\varepsilon(1-L) /\left|x_{1}-x_{0}\right|\right) / \ln Lkln(ε(1L)/x1x0)/lnL

证明:
xk+1=g(xk)=g(x∗)+g′(ξ)(xk−x∗)=x∗+g′(ξ)(xk−x∗)⇒∣xk+1−x∗∣≤∣g′(ξ)∥(xk−x∗)∣≤L∣xk−x∗∣≤Lk∣x1−x∗∣\begin{aligned}x_{k+1}=g\left(x_{k}\right)=g\left(x^{*}\right)+g^{\prime}(\xi)\left(x_{k}-x^{*}\right)=x^{*}+g^{\prime}(\xi)\left(x_{k}-x^{*}\right)\\ \Rightarrow \left|x_{k+1}-x^{*}\right| \leq\left|g^{\prime}(\xi) \|\left(x_{k}-x^{*}\right)\right| \leq L\left|x_{k}-x^{*}\right|\le L^{k}\left|x_{1}-x^{*}\right|\end{aligned}xk+1=g(xk)=g(x)+g(ξ)(xkx)=x+g(ξ)(xkx)xk+1xg(ξ)(xkx)LxkxLkx1x
又有
∣xk+1−xk∣=∣g(xk)−g(xk−1)∣≤L∣xk−xk−1∣≤Lk∣x1−x0∣\left|x_{k+1}-x_{k}\right|=\left|g\left(x_{k}\right)-g\left(x_{k-1}\right)\right| \leq L\left|x_{k}-x_{k-1}\right| \leq L^{k}\left|x_{1}-x_{0}\right| xk+1xk=g(xk)g(xk1)Lxkxk1Lkx1x0
于是有:
∣xk+q−xk∣≤∣xk+q−xk+q−1∣+∣xk+q−1−xk+q−2∣+…+∣xk+1−xk∣≤(Lq−1+Lq−2+…+1)∣xk+1−xk∣<(1+L+L2+…+Lq−1+…)∣xk+1−xk∣=11−L∣xk+1−xk∣≤Lk1−L∣x1−x0∣\begin{aligned} &\left|x_{k+q}-x_{k}\right| \leq\left|x_{k+q}-x_{k+q-1}\right|+\left|x_{k+q-1}-x_{k+q-2}\right|+\ldots+\left|x_{k+1}-x_{k}\right| \\ &\leq\left(L^{q-1}+L^{q-2}+\ldots+1\right)\left|x_{k+1}-x_{k}\right|\\&<\left(1+L+L^{2}+\ldots+L^{q-1}+\ldots\right)\left|x_{k+1}-x_{k}\right|\\ &=\frac{1}{1-L}\left|x_{k+1}-x_{k}\right| \\&\leq \frac{L^{k}}{1-L}\left|x_{1}-x_{0}\right| \end{aligned}xk+qxkxk+qxk+q1+xk+q1xk+q2++xk+1xk(Lq1+Lq2++1)xk+1xk<(1+L+L2++Lq1+)xk+1xk=1L1xk+1xk1LLkx1x0

q→∞q \rightarrow \inftyq

∣x∗−xk∣≤11−L∣xk+1−xk∣≤Lk1−L∣x1−x0∣\left|x^{*}-x_{k}\right| \leq \frac{1}{1-L}\left|x_{k+1}-x_{k}\right| \leq \frac{L^{k}}{1-L}\left|x_{1}-x_{0}\right|xxk1L1xk+1xk1LLkx1x0

于是:

Lk1−L∣x1−x0∣≤ε⇒k≥ln⁡(ε(1−L)/∣x1−x0∣)/ln⁡L\frac{L^{k}}{1-L}\left|x_{1}-x_{0}\right| \leq \varepsilon \Rightarrow k \geq \ln \left(\varepsilon(1-L) /\left|x_{1}-x_{0}\right|\right) / \ln L1LLkx1x0εkln(ε(1L)/x1x0)/lnL

2.3 如何加快收敛的速度

xk+1−x∗≈L(xk−x∗)xk+2−x∗≈L(xk+1−x∗)xk+1−x∗xk+2−x∗≈xk−x∗xk+1−x∗⇒x∗≈xk−(xk+1−xk)2xk+2−2xk+1+xk=xΔ\begin{aligned} &x_{k+1}-x^{*} \approx L\left(x_{k}-x^{*}\right) \\ &x_{k+2}-x^{*} \approx L\left(x_{k+1}-x^{*}\right) \\ &\frac{x_{k+1}-x^{*}}{x_{k+2}-x^{*}} \approx \frac{x_{k}-x^{*}}{x_{k+1}-x^{*}} \Rightarrow\quad x^{*} \approx x_{k}-\frac{\left(x_{k+1}-x_{k}\right)^{2}}{x_{k+2}-2 x_{k+1}+x_{k}}=x^{\Delta} \end{aligned}xk+1xL(xkx)xk+2xL(xk+1x)xk+2xxk+1xxk+1xxkxxxkxk+22xk+1+xk(xk+1xk)2=xΔ

根据上面的思路我们可以:

Iterationxˉk+1=g(xk)Onemorex^k+1=g(xˉk+1)Tospeedupxk+1=xk−(xˉk+1−xk)2x^k+1−2xˉk+1+xk\begin{aligned}Iteration &\quad \bar{x}_{k+1}=g\left(x_{k}\right) \\ One more &\quad \hat{x}_{k+1}=g\left(\bar{x}_{k+1}\right) \\ To\, speed \,up &\quad x_{k+1}=x_{k}-\frac{\left(\bar{x}_{k+1}-x_{k}\right)^{2}}{\hat{x}_{k+1}-2 \bar{x}_{k+1}+x_{k}} \end{aligned}IterationOnemoreTospeedupxˉk+1=g(xk)x^k+1=g(xˉk+1)xk+1=xkx^k+12xˉk+1+xk(xˉk+1xk)2

2.4 停止不定点迭代的条件

L=max⁡x∈[a,b]{∣g′(x)∣}<1L=\max _{x \in[a, b]}\left\{\left|g^{\prime}(x)\right|\right\}<1L=maxx[a,b]{g(x)}<1时,可以使用下面的条件:

∣xk+1−xk∣<eps\left|x_{\mathrm{k}+1}-x_{\mathrm{k}}\right|<\mathrm{eps}xk+1xk<eps

2.5 不动点迭代的两个缺点

  1. 很难估计L(max⁡x∈[a,b]{∣g′(x)∣})L(\max _{x \in[a, b]}\left\{\left|g^{\prime}(x)\right|\right\})L(maxx[a,b]{g(x)})
  2. L<1L<1L<1时无法收敛。

3. 应用:如何求解非线性方程组f(x)=0f(x)=0f(x)=0的解

在这里插入图片描述

3.1 二分法(Bisection Method of Bolzano)

算法的流程

  1. 用一个区间找到一个根。
  2. 用中点分割该区间。
  3. 选择其中的一个子区间作为新的位置。

在这里插入图片描述

a=x0,b=x0+hc=a+b2f(a)f(b)<0,\begin{aligned} &a=x_{0}, \quad b=x_{0}+h \\ &c=\frac{a+b}{2}\\ &f(a) f(b)<0, \end{aligned}a=x0,b=x0+hc=2a+bf(a)f(b)<0,
于是:

在这里插入图片描述

[a,b]→[a1,b1]→[a2,b2]→…→[an,bn]a=a0≤a1≤⋯≤an≤⋯≤r≤⋯≤bn≤⋯≤b1≤b0=b\begin{aligned} &{[{a}, {b}]\rightarrow\left[{a}_{1}, {~b}_{1}\right]\rightarrow \left[{a}_{2}, {~b}_{2}\right]\rightarrow\ldots\rightarrow\left[{a}_{{n}}, {b}_{{n}}\right]} \\ &a=a_{0} \leq a_{1} \leq \cdots \leq a_{n} \leq \cdots \leq r \leq \cdots \leq b_{n} \leq \cdots \leq b_{1} \leq b_{0}=b \end{aligned}[a,b][a1, b1][a2, b2][an,bn]a=a0a1anrbnb1b0=b
定义rrr是精确解。
∣r−cn∣≤b−a2n+1,for n=0,1,2,…cn=an+bn2\begin{aligned} &\left|r-c_{n}\right| \leq \frac{b-a}{2^{n+1}}, \text { for } n=0,1,2, \ldots \\ &c_{n}=\frac{a_{n}+b_{n}}{2} \end{aligned}rcn2n+1ba, for n=0,1,2,cn=2an+bn

迭代次数N

∣r−cn∣≤b−a2n+1<δ2n+1>b−aδ(n+1)ln⁡2>ln⁡(b−a)−ln⁡δn+1>ln⁡(b−a)−ln⁡δln⁡2N=int⁡(ln⁡(b−a)−ln⁡δln⁡2)\begin{aligned} &\left|r-c_{n}\right| \leq \frac{b-a}{2^{n+1}}<\delta \\ &2^{n+1}>\frac{b-a}{\delta} \\ &(n+1) \ln 2>\ln (b-a)-\ln \delta \\ &n+1>\frac{\ln (b-a)-\ln \delta}{\ln 2} \\ &N=\operatorname{int}\left(\frac{\ln (b-a)-\ln \delta}{\ln 2}\right) \end{aligned}rcn2n+1ba<δ2n+1>δba(n+1)ln2>ln(ba)lnδn+1>ln2ln(ba)lnδN=int(ln2ln(ba)lnδ)

简单地利用二分法可以判断区间内有没有零点(区间内有变号【可取最大值和最小值】)

3.2 试位法(False Position Method)

算法的流程

  1. 用一个区间找到一个根。
  2. 以割线与X轴的交点划分区间。(过程中仍然保证端点的异号,让区间包含零点)
  3. 选择其中一个子区间作为新的位置。

c=b−f(b)(b−a)f(b)−f(a)c1→c2→…→r[an,bn]→[a,c]:=[an+1,bn+1]c=b-\frac{f(b)(b-a)}{f(b)-f(a)}\\ c_{1}\rightarrow c_{2}\rightarrow \ldots\rightarrow r\\ \left[a_{n}, b_{n}\right]\rightarrow [a, c]:=\left[a_{n+1}, b_{n+1}\right]c=bf(b)f(a)f(b)(ba)c1c2r[an,bn][a,c]:=[an+1,bn+1]

在这里插入图片描述

缺点:在凹函数下不适用,不会收敛。

3.3 牛顿-拉夫逊方法(Newton-Raphson method)

我们知道不动点迭代,能不能用到求解非线性方程组呢?

使用泰勒展式:

f(xk+1)=f(xk)+f′(xk)(xk+1−xk)+O(∣d∣2)=0f(x_{k+1})=f\left(x_{{k}}\right)+f^{\prime}\left(x_{{k}}\right) (x_{k+1}-x_k)+{O}\left(|d|^{2}\right)=0f(xk+1)=f(xk)+f(xk)(xk+1xk)+O(d2)=0

于是我们可以让

f(xk)+f′(xk)(xk+1−xk)=0f\left(x_{\mathrm{k}}\right)+f^{\prime}\left(x_{\mathrm{k}}\right)\left(x_{{k}+1}-x_{{k}}\right)=0f(xk)+f(xk)(xk+1xk)=0

使得:

xk+1=xk−f(xk)/f′(xk)=g(xk)x_{\mathrm{k}+1}=x_{{k}}-f\left(x_{\mathrm{k}}\right) / f^{\prime}\left(x_{\mathrm{k}}\right)=g(x_k)xk+1=xkf(xk)/f(xk)=g(xk)

总结Newton-Raphson方法即:

f(x)=0x=g(x)=x−f(x)f′(x)xk+1=g(xk)=xk−f(xk)f′(xk)\begin{array}{l} f(x)=0 \\ x=g(x)=x-\frac{f(x)}{f^{\prime}(x)} \\ x_{k+1}=g\left(x_{k}\right)=x_{k}-\frac{f\left(x_{k}\right)}{f^{\prime}\left(x_{k}\right)} \end{array}f(x)=0x=g(x)=xf(x)f(x)xk+1=g(xk)=xkf(xk)f(xk)

在这里插入图片描述

我们可以证明在解的附近,Newton-Raphson方法是收敛的。

证明:

g(x)=x−f(x)/f′(x)g(x)=x-f(x) / f^{\prime}(x)g(x)=xf(x)/f(x)

g′(x)=1−f′(x)f′(x)−f(x)f′′(x)[f′(x)]2=f(x)f′′(x)[f′(x)]2g^{\prime}(x)=1-\frac{f^{\prime}(x) f^{\prime}(x)-f(x) f^{\prime \prime}(x)}{\left[f^{\prime}(x)\right]^{2}}=\frac{f(x) f^{\prime \prime}(x)}{\left[f^{\prime}(x)\right]^{2}}g(x)=1[f(x)]2f(x)f(x)f(x)f′′(x)=[f(x)]2f(x)f′′(x)

我们知道不动点的条件是∣g′(x)∣<K<1\left|g^{\prime}(x)\right|<K<1g(x)<K<1,当我们取的邻域足够小,条件g([a,b])⊂[a,b]g([a, b]) \subset[a, b]g([a,b])[a,b]会满足,注意到f(x∗)=0f(x^*)=0f(x)=0,在解的邻域附近,因为f(x)=0f(x)=0f(x)=0,所以g′(x)=0g'(x)=0g(x)=0

各种条件下的推导(不做要求,想了解可以看一下)

  1. f′(x∗)>0and f′′(x∗)<0,g([x∗−δ,x∗+δ])⊂[x∗−δ,x∗+δ]f^{\prime}\left(x^{*}\right)>0 \text { and } f^{\prime \prime}\left(x^{*}\right)<0, \,\,\,\,g\left(\left[x^{*}-\delta, x^{*}+\delta\right]\right) \subset\left[x^{*}-\delta, x^{*}+\delta\right]f(x)>0 and f′′(x)<0,g([xδ,x+δ])[xδ,x+δ]
    在这里插入图片描述
    x∗−δ<g(x∗−δ)=(x∗−δ)−f(x∗−δ)f′(x∗−δ)⇔0<−f(x∗−δ)f′(x∗−δ)⇔f(x∗−δ)f′(x∗−δ)<0⇔f(x∗−δ)<0⇔f(x∗)−f′(ξ)δ<0【ξ∈[x∗−δ,x∗]】⇔−f′(ξ)δ<0⇒∃δ1>0,f′(ξ)>0,for x∗−ξ<δ1\begin{aligned} &x^{*}-\delta<g\left(x^{*}-\delta\right)=\left(x^{*}-\delta\right)-\frac{f\left(x^{*}-\delta\right)}{f^{\prime}\left(x^{*}-\delta\right)} \\ \Leftrightarrow& 0<-\frac{f\left(x^{*}-\delta\right)}{f^{\prime}\left(x^{*}-\delta\right)} \\ \Leftrightarrow &\frac{f\left(x^{*}-\delta\right)}{f^{\prime}\left(x^{*}-\delta\right)}<0 \\ \Leftrightarrow &f\left(x^{*}-\delta\right)<0 \\ \Leftrightarrow &f\left(x^{*}\right)-f^{\prime}(\xi) \delta<0 【\xi\in[x^*-\delta,x^*]】\\ \Leftrightarrow&-f^{\prime}(\xi) \delta<0\\ \Rightarrow&\exists \delta_1>0, f^{\prime}(\xi)>0, \text { for } x^{*}-\xi<\delta_1 \\ \end{aligned}xδ<g(xδ)=(xδ)f(xδ)f(xδ)0<f(xδ)f(xδ)f(xδ)f(xδ)<0f(xδ)<0f(x)f(ξ)δ<0ξ[xδ,x]f(ξ)δ<0δ1>0,f(ξ)>0, for xξ<δ1
    又有
    f′′(x∗)<0⇒∃δ2>0,f′′(x)<0【保号性】⇒g′(x)=f(x)f′′(x)[f′(x)]2>0,for x∗−x<δ2【δ2足够小,导数保号性,f′(x)>0,x<x∗,f(x∗)=0,f(x)<0】\begin{aligned} &f^{\prime \prime}\left(x^{*}\right)<0\\ \Rightarrow & \exists \delta_2>0, f^{\prime \prime}(x)<0 【保号性】\\ \Rightarrow & g^{\prime}(x)=\frac{f(x) f^{\prime \prime}(x)}{\left[f^{\prime}(x)\right]^{2}}>0, \text { for } x^{*}-x<\delta_2\\ &【\delta_2足够小,导数保号性,f'(x)>0,x<x^*,f(x^*)=0,f(x)<0】 \end{aligned}f′′(x)<0δ2>0,f′′(x)<0【保号性】g(x)=[f(x)]2f(x)f′′(x)>0, for xx<δ2δ2足够小,导数保号性,f(x)>0,x<x,f(x)=0f(x)<0
    δ<min⁡{δ1,δ2}\delta<\min\{\delta_1,\delta_2\}δ<min{δ1,δ2}有:
    x∗−δ<g(x∗−δ)<g(x),for x∗−x<δx^{*}-\delta<g\left(x^{*}-\delta\right)<g(x), \text { for } x^{*}-x<\deltaxδ<g(xδ)<g(x), for xx<δ
  2. f′(x∗)>0and f′′(x∗)<0,g([x∗−δ,x∗+δ])⊂[x∗−δ,x∗+δ]f^{\prime}\left(x^{*}\right)>0 \text { and } f^{\prime \prime}\left(x^{*}\right)<0, \,\,\,\,g\left(\left[x^{*}-\delta, x^{*}+\delta\right]\right) \subset\left[x^{*}-\delta, x^{*}+\delta\right]f(x)>0 and f′′(x)<0,g([xδ,x+δ])[xδ,x+δ]
    在这里插入图片描述
    x∗−δ<g(x∗−δ)=(x∗−δ)−f(x∗−δ)f′(x∗−δ)⇔0<−f(x∗−δ)f′(x∗−δ)⇔f(x∗−δ)f′(x∗−δ)<0⇔f(x∗−δ)<0⇔f(x∗)−f′(ξ)δ<0【ξ∈[x∗−δ,x∗]】⇔−f′(ξ)δ<0⇒∃δ1>0,f′(ξ)>0,for x∗−ξ<δ1\begin{aligned} &x^{*}-\delta<g\left(x^{*}-\delta\right)=\left(x^{*}-\delta\right)-\frac{f\left(x^{*}-\delta\right)}{f^{\prime}\left(x^{*}-\delta\right)} \\ \Leftrightarrow& 0<-\frac{f\left(x^{*}-\delta\right)}{f^{\prime}\left(x^{*}-\delta\right)} \\ \Leftrightarrow &\frac{f\left(x^{*}-\delta\right)}{f^{\prime}\left(x^{*}-\delta\right)}<0 \\ \Leftrightarrow &f\left(x^{*}-\delta\right)<0 \\ \Leftrightarrow &f\left(x^{*}\right)-f^{\prime}(\xi) \delta<0 【\xi\in[x^*-\delta,x^*]】\\ \Leftrightarrow&-f^{\prime}(\xi) \delta<0\\ \Rightarrow&\exists \delta_1>0, f^{\prime}(\xi)>0, \text { for } x^{*}-\xi<\delta_1 \\ \end{aligned}xδ<g(xδ)=(xδ)f(xδ)f(xδ)0<f(xδ)f(xδ)f(xδ)f(xδ)<0f(xδ)<0f(x)f(ξ)δ<0ξ[xδ,x]f(ξ)δ<0δ1>0,f(ξ)>0, for xξ<δ1
    又有
    f′′(x∗)>0⇒∃δ2>0,f′′(x)<0【保号性】⇒g′(x)=f(x)f′′(x)[f′(x)]2<0,for x∗−x<δ2【δ2足够小,导数保号性,f′(x)>0,x<x∗,f(x∗)=0,f(x)<0】\begin{aligned} &f^{\prime \prime}\left(x^{*}\right)>0\\ \Rightarrow & \exists \delta_2>0, f^{\prime \prime}(x)<0 【保号性】\\ \Rightarrow & g^{\prime}(x)=\frac{f(x) f^{\prime \prime}(x)}{\left[f^{\prime}(x)\right]^{2}}<0, \text { for } x^{*}-x<\delta_2\\ &【\delta_2足够小,导数保号性,f'(x)>0,x<x^*,f(x^*)=0,f(x)<0】 \end{aligned}f′′(x)>0δ2>0,f′′(x)<0【保号性】g(x)=[f(x)]2f(x)f′′(x)<0, for xx<δ2δ2足够小,导数保号性,f(x)>0,x<x,f(x)=0f(x)<0
    δ<min⁡{δ1,δ2}\delta<\min\{\delta_1,\delta_2\}δ<min{δ1,δ2}有:
    x∗−δ<x∗=g(x∗)<g(x),for x∗−x<δ,x<x∗x^{*}-\delta<x^{*}=g\left(x^{*}\right)<g(x), \text { for } x^{*}-x<\delta,x<x^*xδ<x=g(x)<g(x), for xx<δ,x<x

注意Newton-Raphson方法对于单根是二阶收敛(二次收敛)【quadratic convergence】

∣En+1∣≈∣f′′(p)∣2∣f′(p)∣∣En∣2n→∞\left|E_{n+1}\right| \approx \frac{\left|f^{\prime \prime}(p)\right|}{2\left|f^{\prime}(p)\right|}\left|E_{n}\right|^{2}\quad n\rightarrow \inftyEn+12f(p)f′′(p)En2n

证明:
在这里插入图片描述

而对于多重根是线性(一次)收敛,收敛速度降低。

∣En+1∣≈M−1M∣En∣n→∞\left|E_{n+1}\right| \approx \frac{M-1}{M}\left|E_{n}\right |\quad n\rightarrow \inftyEn+1MM1Enn

证明:
在这里插入图片描述
如果出现了多重根p∗p^*p,我们看到在f′(p∗)=0f'(p^*)=0f(p)=0,Newton-Raphson方法的分母会出现0.然而一般来说,分子f(pk)f(p_k)f(pk)要比分母f′(pk)f'(p_k)f(pk)先出现0,所以Newton-Raphson方法一般还是可以用的。

Newton-Raphson方法的问题

1.分母可能为0,除以零是不允许的。
2.收敛到一个不同的根,或发散。
3.产生一个循环序列。
4.产生一个发散的振荡序列。
在这里插入图片描述

由于多重根线性收敛的问题,可以考虑Newton-Raphson方法加速:
pk=pk−1−Mf(pk−1)f′(pk−1)M>1p_{k}=p_{k-1}-\frac{M f\left(p_{k-1}\right)}{f^{\prime}\left(p_{k-1}\right)}\quad M>1pk=pk1f(pk1)Mf(pk1)M>1

证明
在这里插入图片描述

3.4 割线法(Secant Method)

在这里插入图片描述
当Newton-Raphson的导数不好显式表达的时候,可以通过两端点的直线的斜率来近似导数。

我们有:

xk+2=g(xk,xk+1)=xk+1−f(xk+1)(xk+1−xk)f(xk+1)−f(xk)x_{k+2}=g\left(x_{k}, x_{k+1}\right)=x_{k+1}-\frac{f\left(x_{k+1}\right)\left(x_{k+1}-x_{k}\right)}{f\left(x_{k+1}\right)-f\left(x_{k}\right)}xk+2=g(xk,xk+1)=xk+1f(xk+1)f(xk)f(xk+1)(xk+1xk)

3.5 Aitken过程加速

使用不定点的迭代,Aitken过程加速又称为史蒂芬森加速(Steffensen’s acceleration).注意,只对一阶方法有效。

lim⁡n→∞p−pn+1p−pn=A,p≈pn+2pn−pn+12pn+2−2pn+1+pn=qn\lim _{n \rightarrow \infty} \frac{p-p_{n+1}}{p-p_{n}}=A, \quad p \approx \frac{p_{n+2} p_{n}-p_{n+1}^{2}}{p_{n+2}-2 p_{n+1}+p_{n}}=q_{n}nlimppnppn+1=A,ppn+22pn+1+pnpn+2pnpn+12=qn

3.6 Muller方法(Muller’s method)

在这里插入图片描述
给定三个初始值(p0,f(p0)),(p1,f(p1)),(p2,f(p2))\left(p_{0}, f\left(p_{0}\right)\right),\left(p_{1}, f\left(p_{1}\right)\right),\left(p_{2},f\left(p_{2}\right)\right)(p0,f(p0)),(p1,f(p1)),(p2,f(p2))


t=x−p2h0=p0−p2,h1=p1−p2\begin{aligned} &t=x-p_{2} \\ &h_{0}=p_{0}-p_{2}, h_{1}=p_{1}-p_{2} \\ \end{aligned}t=xp2h0=p0p2,h1=p1p2

我们使用二次函数计算下一个点:

y=at2+bt+cy=a t^{2}+b t+cy=at2+bt+c

则有:

t=h0:ah02+bh0+c=f0⇒ah02+bh0=f0−c=e0t=h1:ah12+bh1+c=f1⇒ah12+bh1=f1−c=e1t=0:a02+b0+c=f2⇒c=f2\begin{aligned} t=h_{0}: a h_{0}^{2}+b h_{0}+c=f_{0} &\Rightarrow a h_{0}^{2}+b h_{0}=f_{0}-c=e_{0} \\ t=h_{1}: a h_{1}^{2}+b h_{1}+c=f_{1} &\Rightarrow a h_{1}^{2}+b h_{1}=f_{1}-c=e_{1} \\ t=0: a 0^{2}+b 0+c=f_{2}& \Rightarrow c=f_{2} \end{aligned}t=h0:ah02+bh0+c=f0t=h1:ah12+bh1+c=f1t=0:a02+b0+c=f2ah02+bh0=f0c=e0ah12+bh1=f1c=e1c=f2

解得:

a=e0h1−e1h0h1h02−h0h12,b=e1h02−e0h12h1h02−h0h12a=\frac{e_{0} h_{1}-e_{1} h_{0}}{h_{1} h_{0}^{2}-h_{0} h_{1}^{2}}, \quad b=\frac{e_{1} h_{0}^{2}-e_{0} h_{1}^{2}}{h_{1} h_{0}^{2}-h_{0} h_{1}^{2}}a=h1h02h0h12e0h1e1h0,b=h1h02h0h12e1h02e0h12

于是得到:

at2+bt+c=0:t=z1,z2⇒zi=−2cb±b2−4acz=arg⁡min⁡{∣zi∣}【对于一个复数,在计算中只保留其实数部分】\begin{aligned} &a t^{2}+b t+c=0: \quad t=z_{1}, z_{2} \Rightarrow z_{i}=\frac{-2 c}{b \pm \sqrt{b^{2}-4 a c}} \\ &z=\arg \min \left\{\left|z_{i}\right|\right\}【\text{对于一个复数,在计算中只保留其实数部分}】 \end{aligned}at2+bt+c=0:t=z1,z2zi=b±b24ac2cz=argmin{zi}对于一个复数,在计算中只保留其实数部分

p3=p2+zp_{3}=p_{2}+zp3=p2+z

继续得到(pˉ1,pˉ2,p3)\left(\bar{p}_{1}, \bar{p}_{2}, p_{3}\right)(pˉ1,pˉ2,p3),其中pˉ1,pˉ2\bar{p}_{1}, \bar{p}_{2}pˉ1,pˉ2是距离p3p_3p3最近的两个点。

4. 其他问题

4.1 如何寻找初值

例如
在这里插入图片描述
可以有两个判断条件:

  1. 【针对r1r_1r1r2r_2r2
    f(xk−1)f(xk)<0[a,b]=[xk−1,xk]f\left(x_{k-1}\right) f\left(x_{k}\right)<0 \quad[{a}, {b}]=\left[{x}_{{k}-1}, {x}_{{k}}\right]f(xk1)f(xk)<0[a,b]=[xk1,xk]

  2. 【针对r3r_3r3
    ∣f(xk)∣<ε并且(f(xk)−f(xk−1))(f(xk+1)−f(xk))<0[a,b]=[xk−1,xk+1]\left|f\left(x_{k}\right)\right|<\varepsilon \text { 并且}\left(f\left(x_{k}\right)-f\left(x_{k-1}\right)\right) \left(f\left(x_{k+1}\right)-f\left(x_{k}\right)\right)<0\quad [{a}, {b}]=\left[{x}_{{k}-1}, {x}_{{k}+1}\right]f(xk)<ε 并且(f(xk)f(xk1))(f(xk+1)f(xk))<0[a,b]=[xk1,xk+1]

4.2 收敛条件

可以有两个收敛条件:

1. 根据纵坐标
∣f(xk)∣<ε\left|f\left(x_{k}\right)\right|<\varepsilonf(xk)<ε

在这里插入图片描述

误差为:Errorx=∣xk−r∣\text{Error}_{x}=\left|x_{k}-r\right|Errorx=xkr

2. 根据横坐标

∣xk−xk−1∣<δ\left|x_{k}-x_{k-1}\right|<\deltaxkxk1<δ

由以下推出:

∣xk−r∣<δ⇒∣xk−xk−1∣<δ\left|x_{k}-r\right|<\delta \Rightarrow\left|x_{k}-x_{k-1}\right|<\deltaxkr<δxkxk1<δ

在这里插入图片描述
误差为:Error f=max⁡{∣f(r−δ)∣,∣f(r+δ)∣}\text { Error }_{f}=\max \{|f(r-\delta)|,|f(r+\delta)|\} Error f=max{f(rδ),f(r+δ)}

3. 我们也可以把上面两个进行组合:

∣f(xk)∣<ε并且∣xk−r∣<δ\left|f\left(x_{k}\right)\right|<\varepsilon \text{并且}\left|x_{k}-r\right|<\deltaf(xk)<ε并且xkr<δ

在这里插入图片描述

  1. 如果针对Newton-Raphson问题,我们还可以有如下的判断标准:

f′(r)≠0f^{\prime}(r) \neq 0f(r)=0
x0∈[r−δ,r+δ]x_{0} \in[r-\delta, r+\delta]x0[rδ,r+δ], δ\deltaδ足够小。

4.3 算法的收敛速度对比

在这里插入图片描述

4.4 算法的选择

单根:
Newton-Raphson方法

双根(当分母为0失效):
Newton-Raphson方法
Steffensen’s method

相关文章:

数值方法笔记2:解决非线性方程

1. 不动点定理及其条件验证2. 收敛阶、收敛检测与收敛加速2.1 如何估计不动点迭代的收敛阶xk1g(xk){x}_{{k}1}{g}\left({x}_{{k}}\right)xk1​g(xk​)2.2 给定精度的情况下&#xff0c;如何预测不动点迭代需要迭代的次数2.3 如何加快收敛的速度2.4 停止不定点迭代的条件2.5 不动…...

基于SpringBoot的在线文档管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…...

软件体系结构(期末复习)

文章目录软件体系结构软件体系结构概论软件体系结构建模软件体系结构风格统一建模语言基于体系结构的软件开发软件体系结构 软件体系结构概论 软件危机是指计算机软件的开发和维护过程中遇到的一系列严重问题。 软件危机的表现: 软件危机的原因: 软件工程的基本要素&#xf…...

[vue3] pinia的基本使用

使用Pinia npm install piniastore文件里index.js import { createPinia } from piniaconst pinia createPinia()export default piniamain.js导入并引用 import { createApp } from vue import App from ./App.vue import pinia from ./storescreateApp(App).use(pinia).m…...

进程和线程详解

在计算机领域中&#xff0c;进程和线程是非常重要的概念。了解进程和线程是软件开发的基础&#xff0c;也是计算机科学教育中的一部分。本文将介绍进程和线程的概念、区别和应用。 一、什么是进程 在计算机科学中&#xff0c;进程是正在执行的程序实例。一个进程可以由一个或…...

《刀锋》读书笔记

刀锋&#xff08;毛姆长篇作品精选&#xff09;毛姆50个笔记点评认为好看的确是完美的结局。《刀锋》里面的人每个人都以自己的方式生活着。艾略特的势利&#xff0c;拉里的自由&#xff0c;伊莎贝尔的现实&#xff0c;苏珊的清醒&#xff0c;索菲的堕落&#xff0c;至于“我”…...

nginx中的ngx_modules

ngx_modules和ngx_module_names是configure脚本生成的&#xff0c;是在objs/ngx_modules.c文件中与其生成的相关的脚本文件相关的变量在options脚本中定义了objs目录的变量NGX_OBJSobjs在init脚本中定义的最终存放ngx_modules的文件 NGX_MODULES_C$NGX_OBJS/ngx_modules.c2. 处…...

设计模式之访问者模式

什么是访问者模式 访问者模式提供了一个作用于某对象结构中的各元素的操作表示&#xff0c;他使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。     访问者模式主要包含以下几个角色&#xff1a;         Vistor(抽象访问者)&#xff1a;为对象结…...

Go项目(三)

文章目录用户微服务表结构查表web 服务跨域问题图形验证码短信用户注册服务中心注册 grpc 服务动态获取端口负载均衡配置中心启动项目小结用户微服务 作为系统的第一个微服务&#xff0c;开发的技术点前面已经了解了一遍&#xff0c;虽有待补充&#xff0c;但急需实战这里主要…...

CTK学习:(一)编译CTK

CTK插件框架简介 CTK Plugin Framework是用于C++的动态组件系统,以OSGi规范为模型。在此框架下,应用程序由不同的组件组成,遵循面向服务的方法。 ctk是一个开源项目,Github 地址:https://github.com/commontk。 源码地址commontk/CTK: A set of common support code for…...

15种NLP数据增强方法总结与对比

数据增强的方法 数据增强&#xff08;Data Augmentation&#xff0c;简称DA&#xff09;&#xff0c;是指根据现有数据&#xff0c;合成新数据的一类方法。毕竟数据才是真正的效果天花板&#xff0c;有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP…...

Python每日一练(20230219)

目录 1. 循环随机取数组直到得出指定数字&#xff1f; 2. 旋转链表 3. 区间和的个数 1. 循环随机取数组直到得出指定数字&#xff1f; 举个例子&#xff1a; 随机数字范围&#xff1a;0~100 每组数字量&#xff1a;6&#xff08;s1,s2,s3,s4,s5,s6&#xff09; 第二轮开始随…...

vTESTstudio - VT System CAPL Functions - VT7001

vtsSerialClose - 关闭VT系统通道的串行端口功能&#xff1a;关闭由系统变量命名空间指定的VT系统通道的串行端口。Target&#xff1a;目标通道变量空间名称&#xff0c;例如&#xff1a;VTS::ECUPowerSupply返回值&#xff1a;0&#xff1a;成功重置目标通道最大和最小值-1&am…...

「可信计算」论文初步解读

可信计算组织&#xff08;Ttrusted Computing Group,TCG&#xff09;是一个非盈利的工业标准组织&#xff0c;它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立&#xff0c;并采纳了由可信计算平台联盟&#xff08;the Trusted Computing Platform Alli…...

CSDN 算法技能树 蓝桥杯-基础 刷题+思考总结

切面条-蓝桥杯-基础-CSDN算法技能树https://edu.csdn.net/skill/algorithm/algorithm-530255df51be437b967cbc4524fe66ea?category188 目录 切面条 大衍数列 门牌制作 方阵转置 微生物增殖 成绩统计 星系炸弹 判断闰年的依据: 特别数的和 *日志统计*&#xff08;双指…...

信小程序点击按钮绘制定制转发分享图

1. 说明 先上代码片断分享链接&#xff1a; https://developers.weixin.qq.com/s/vl3ws9mA72GG 使用 painter 画图 按钮传递定制化信息 效果如下&#xff1a; 2. 关键代码说明 文件列表如下&#xff1a; {"usingComponents": {"painter": "/com…...

Python自动化测试-使用Pandas来高效处理测试数据

Python自动化测试-使用Pandas来高效处理测试数据 目录&#xff1a;导读 一、思考 二、使用pandas来操作Excel文件 三、使用pandas来操作csv文件 四、总结 一、思考 1.Pandas是什么&#xff1f; 功能极其强大的数据分析库可以高效地操作各种数据集 csv格式的文件Excel文件H…...

语音增强学习路线图Roadmap

语音增强算是比较难的研究领域&#xff0c;从入门到精通有很多台阶&#xff0c;本文介绍一些有价值的书籍&#xff0c;值得反复阅读。主要分为基础类和进阶类书籍&#xff0c;大多都是理论和实践相结合的书籍&#xff0c;编程实践是抓手,让知识和基础理论变扎实。基础书籍《信号…...

nginx配置ssl实现https访问

文章目录一、介绍二、创建证书1、OpenSSL创建自签名密钥和证书三、nginx配置四、开放端口一、介绍 nginx配置ssl证书&#xff0c;实现https访问&#xff0c;可以使用自签名SSL证书或者购买机构颁发的证书两种方式参考链接 https://blog.csdn.net/weixin_39198406/article/deta…...

JavaScript 语句

JavaScript 语句向浏览器发出的命令。语句的作用是告诉浏览器该做什么。JavaScript 语句JavaScript 语句是发给浏览器的命令。这些命令的作用是告诉浏览器要做的事情。下面的 JavaScript 语句向 id"demo" 的 HTML 元素输出文本 "Hello Dolly" &#xff1a;…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面&#xff0c;gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress&#xff0c;说明目标所使用的cms是wordpress&#xff0c;访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用

一、方案背景​ 在现代生产与生活场景中&#xff0c;如工厂高危作业区、医院手术室、公共场景等&#xff0c;人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式&#xff0c;存在效率低、覆盖面不足、判断主观性强等问题&#xff0c;难以满足对人员打手机行为精…...

如何把工业通信协议转换成http websocket

1.现状 工业通信协议多数工作在边缘设备上&#xff0c;比如&#xff1a;PLC、IOT盒子等。上层业务系统需要根据不同的工业协议做对应开发&#xff0c;当设备上用的是modbus从站时&#xff0c;采集设备数据需要开发modbus主站&#xff1b;当设备上用的是西门子PN协议时&#xf…...

SQL进阶之旅 Day 22:批处理与游标优化

【SQL进阶之旅 Day 22】批处理与游标优化 文章简述&#xff08;300字左右&#xff09; 在数据库开发中&#xff0c;面对大量数据的处理任务时&#xff0c;单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”&#xff0c;深入探讨如何通过批量操作和游标技术提…...

PLC入门【4】基本指令2(SET RST)

04 基本指令2 PLC编程第四课基本指令(2) 1、运用上接课所学的基本指令完成个简单的实例编程。 2、学习SET--置位指令 3、RST--复位指令 打开软件(FX-TRN-BEG-C)&#xff0c;从 文件 - 主画面&#xff0c;“B: 让我们学习基本的”- “B-3.控制优先程序”。 点击“梯形图编辑”…...