基本思想与迭代公式

通常对已知方程f(x)=0f(x)=0f(x)=0进行变形而构造的迭代函数φ(x)\varphi(x)φ(x)不是惟一的。在实际作用中,如果希望迭代函数φ(x)\varphi(x)φ(x)有一种固定格式的构造方法,就可以采用Newton迭代法。

Newton迭代法的基本思想是:设法将一个非线性方程f(x)=0f(x)=0f(x)=0转化为某种线性方程求解,其解决问题的基础是Taylor(泰勒)多项式。具体描述如下:

设f(x)=0f(x)=0f(x)=0的近似根为xkx_kxk​,则函数f(x)f(x)f(x)在点xkx_kxk​附近可用一阶Taylor多项式p1(x)p_1(x)p1​(x)来近似,即:
p(x)=f(xk)+f′(xk)(x−xk)≅f(x) p_(x)=f(x_k)+f'(x_k)(x-x_k) \cong f(x) p(​x)=f(xk​)+f′(xk​)(x−xk​)≅f(x)
从而得到线性方程:
f(xk)+f′(xk)(x−xk)=0 f(x_k)+f'(x_k)(x-x_k)=0 f(xk​)+f′(xk​)(x−xk​)=0
解之,得该线性方程的根xxx,但它是f(x)=0f(x)=0f(x)=0的一个新近似根,记做xk+1x_{k+1}xk+1​,即:
xk+1=xk−f(xk)f′(xk) x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)} xk+1​=xk​−f′(xk​)f(xk​)​
上式实质上就是一种迭代格式,称为Newton迭代格式。相应地,Newton迭代函数为:
φ(x)=x−f(x)f′(x)(1) \varphi(x)=x-\frac{f(x)}{f'(x)} \tag{1} φ(x)=x−f′(x)f(x)​(1)
于是,按(1)式构造迭代函数解方程f(x)=0f(x)=0f(x)=0的方法,就是Newton迭代法。

Newton迭代法的几何解释如下图所示。方程f(x)=0f(x)=0f(x)=0的根x∗x^*x∗为y=f(x)y=f(x)y=f(x)和y=0y=0y=0(即x轴)的交点。设xkx_kxk​为x∗x^*x∗的某个初始近似值,过pkp_kpk​点(xk,f(xk))(x_k,f(x_k))(xk​,f(xk​))作y=f(x)y=f(x)y=f(x)的切线交x轴于xk+1x_{k+1}xk+1​,即为所求得的近似值。继续过pk+1p_{k+1}pk+1​点(xk+1,f(xk+1))(x_{k+1},f(x_{k+1}))(xk+1​,f(xk+1​)),pk+2p_{k+2}pk+2​点(xk+2,f(xk+2)),⋯(x_{k+2},f(x_{k+2})),\cdots(xk+2​,f(xk+2​)),⋯,作y=f(x)y=f(x)y=f(x)的切线,即可逐步逼近精确的根x∗x^*x∗。因此,Newton法也叫切线法,因为它是沿着曲线y=f()xy=f()xy=f()x上某一点作切线逐步外推逼近的。从pkp_kpk​点作切线与x轴的交点xk+1x_{k+1}xk+1​,由于y=f(x)y=f(x)y=f(x)不是直线,所以f(xk+1)f(x_{k+1})f(xk+1​)就不可能为零。因此必须以xk+1x_{k+1}xk+1​作为新的起点,从与之对应的pk+1p_{k+1}pk+1​点继续作切线,重复上述步骤,直至f(xk+1)f(x_{k+1})f(xk+1​)充分小,逼近零时为止。

例1:用Newton迭代法求方程xex−1=0xe^x-1=0xex−1=0的根。

解:方程可改写为x=e−xx=e^{-x}x=e−x,即f(x)=x−e−x=0f(x)=x-e^{-x}=0f(x)=x−e−x=0,此方程的Newton迭代格式为:
xk+1=xk−xk−e−xk1+e−xk=xk−xk−e−xk1+xk x_{k+1}=x_k-\frac{x_k-e^{-x_k}}{1+e^{-x_k}}=x_k-\frac{x_k-e^{-x_k}}{1+x_k} xk+1​=xk​−1+e−xk​xk​−e−xk​​=xk​−1+xk​xk​−e−xk​​
取迭代初值为x0=0.5x_0=0.5x0​=0.5,逐次迭代结果为x1=0.57102,x2=0.56716;x3=0.56714;x4=0.56714x_1=0.57102,x_2=0.56716;x_3=0.56714;x_4=0.56714x1​=0.57102,x2​=0.56716;x3​=0.56714;x4​=0.56714。由此可见,迭代4次即达到了∣x4−x3∣≤0.000005|x_4-x_3|\leq 0.000005∣x4​−x3​∣≤0.000005的要求,收敛速度是很快的。

例2:推导立方根的Newton迭代公式,并求a=155a=155a=155的立方根。

解:该问题等价于求f(x)=x3−af(x)=x^3-af(x)=x3−a的零点,即解方程:
f(x)=x3−a=0 f(x)=x^3-a=0 f(x)=x3−a=0
运用Newton迭代公式,有:
xk+1=xk−f(xk)f′(xk)=xk−xk3−a3xk2=23xk−a3xk2 x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}=x_k-\frac{x_k^3-a}{3x_k^2}=\frac{2}{3}x_k-\frac{a}{3x_k^2} xk+1​=xk​−f′(xk​)f(xk​)​=xk​−3xk2​xk3​−a​=32​xk​−3xk2​a​
令a=155,x0=5a=155,x_0=5a=155,x0​=5,迭代计算结果为:

n0123
x55.45.3718345.371686

仅迭代3步就求得精确解。再使用较差一些的初值x0=10x_0=10x0​=10,则迭代计算结果为:

n012345
x107.1833345.7901765.4012035.3718475.371686

迭代5步之后得到精确值。

使用Newton法求方程的根,在什么条件下、选取什么样的初始值x0x_0x0​,才能保证迭代过程总是收敛于方程的根的根x∗x^*x∗呢?这是运用Newton法求方程根的重要问题。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐