第二十一篇 非线性方程组的迭代替换求解
非线性方程组
为了简单起见,我们到目前为止只关注了一个非线性方程。在实际中,我们可能有一个联立形式的非线性方程。
这种系统的解或根将由一组形式为(x1,x2,xn)的变量组成,并且通常会有多个满足方程的解。
在已经描述的方法中,即迭代替换和牛顿迭代法,都可以扩展到解决非线性方程组
方程组的迭代替换
标准方程能重新排列成下面的形式
该方法继续对所有变量(x1, x2,···,xn)0进行初始猜测。将这些值代入方程(3.25)的右侧,得到变量(x1, x2,···,xn)1等的更新值。迭代将继续进行,直到所有变量的更改都不超过指定的公差。这种方法的一个缺点是,对于大多数非线性方程组,可能会出现上面显示的几种重排。有些重排具有收敛的性质,有些则没有。对于单个方程,收敛取决于函数F(x)在根附近的梯度大小。同样,对于两个非线性方程,只有当
时才收敛,随着方程数目的增加,对收敛性的限制也越来越搞,因此限制了该方法在实践中的应用。
计算实例:
使用迭代替换的方法去发现下面函数在x1=1,x2=1附近的根
方程首先被重新排列成一个右手边为0的‘标准形式’
现在重新排列方程,使每个变量都出现在左边。有几种方法可以做到这一点,一种可能的排列如下
当初始猜测值为x1==x2=1.0时,迭代的解展现在下面的表中
很显然,解应该在x1=x2=1.2的时候收敛。在高斯迭代方法中,只要更新的值可用,就可以提高收敛性。
程序如下:
其中有一个主程序和一个对多个数判断收敛的子程序checkit,和一个函数程序
#对于一个方程组的迭代替换
import numpy as np
import B
n=2