对于非线性方程,我们可以使用迭代的方式求出近似解。下面介绍两种比较经典的算法:简单迭代法、牛顿法
简单迭代法
对于待求解方程,先把方程写成 f ( x ) = 0 f(x)=0 f(x)=0 的形式,然后改成如下同解形式:
x = φ ( x ) x = \varphi(x) x=φ(x)选一个初始值 x 0 x_0 x0,然后做迭代:
x k + 1 = φ ( x k ) , k = 1 , 2 , 3 , … x_{k+1}=\varphi(x_{k}), \;\;\;\;k=1,2,3,\dots xk+1=φ(xk),k=1,2,3,…如果迭代序列 { x k } \{x_k\} {
xk} 收敛于真解,则称简单迭代法使收敛的。
简单迭代法的收敛条件
根据压缩映射原理,如果 φ ( x ) \varphi(x) φ(x) 为定义域上的压缩映射,则 φ ( x ) \varphi(x) φ(x) 在定义域上有唯一的不动点,且对于任何初值,由迭代格式 x k + 1 = φ ( x k ) x_{k+1}=\varphi(x_{k}) xk+1=φ(xk) 产生的迭代序列 { x k } \{x_k\} { xk} 收敛于该不动点。
另外我们还常常讨论简单迭代法的局部收敛性,感兴趣的同学查阅相关书籍,此处不再赘述。
简单迭代法的Aitken加速算法
假设 φ ( x ) \varphi(x) φ(x) 在 α \alpha α 处可导,有
x k + 1 − α = φ ′ ( ξ 1 ) ( x k − α ) x k + 2 − α = φ ′ ( ξ 2 ) ( x k + 1 − α ) x_{k+1} - \alpha=\varphi'(\xi_1)(x_k-\alpha)\\ x_{k+2} - \alpha=\varphi'(\xi_2)(x_{k+1}-\alpha) xk+1−α=φ′(ξ1)(xk−α)xk+2−α=φ′(ξ2)(xk+1−α)假设 φ ′ ( ξ 1 ) ≈ φ ′ ( ξ 2 ) \varphi'(\xi_1)\approx \varphi'(\xi_2) φ′(ξ1)≈φ′(ξ

本文介绍了两种解决非线性方程的迭代方法——简单迭代法和牛顿迭代法,并提供了基于Python的实现。简单迭代法通过迭代寻找不动点,而牛顿法利用泰勒展开线性化问题。文章还讨论了Aitken加速算法以提高迭代效率,并给出了具体代码示例。
最低0.47元/天 解锁文章
1322

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



