Skip to content

19.2.2 非线性方程组 ​

若含有 n 个未知量 x1,x2,⋯,xn 的 n 个方程的非线性方程组

(19.55)Fi(x1,x2,⋯,xn)=0(i=1,2,⋯,n)

有解, 通常数值解仅可由迭代法得到.

19.2.2.1 一般迭代法 ​

若方程 (19.55) 可以转化为不动点形式

(19.56)xi=fi(x1,x2,⋯,xn)(i=1,2,⋯,n),

则可用一般迭代法. 从估计的近似值 x1(0),x2(0),⋯,xn(0) 出发,通过下面的方法得到改进值.

1. 同步迭代 ​

(19.57)xi(μ+1)=fi(x1(μ),x2(μ),⋯,xn(μ))(i=1,2,⋯,n;μ=0,1,2,⋯).

2. 顺序迭代 ​

xi(μ+1)=fi(x1(μ+1),⋯,xi−1(μ+1),xi(μ),xi+1(μ),⋯,xn(μ))(19.58)(i=1,2,⋯,n;μ=0,1,2,⋯).

对该方法收敛性特别重要的是,在解的邻域函数 fi 应该较弱地依赖于未知量, 即如果函数 fi 可微,其偏导数的绝对值必须相当小. 我们得到收敛性条件

K<1

其中

(19.59)K=maxi⁡(∑k=1n⁡max|∂fi∂xk|).

带有量 K 的误差估计如下:

(19.60)maxi⁡|xi(μ+1)−xi|≤K1−Kmaxi⁡|xi(μ+1)−xi(μ)|,

这里 xi 为要求的解的分量, xi(μ) 与 xi(μ+1) 为相应的第 μ 次和第 μ+1 次近似值.

19.2.2.2 牛顿法 ​

牛顿法可以用来求解形如 (19.55) 的问题. 在得到初始近似值 x1(0),x2(0),⋯,xn(0) 后, Fi 作为 n 个独立变量 x1,x2,⋯,xn 的函数按泰勒公式展开 (参见第 630 页 7.3.3.3,1.). 在线性项后终止展开, 由 (19.55) 可得线性方程组, 其迭代改进则通过如下公式得到

Fi(x1(μ),x2(μ),⋯,xn(μ))+∑k=1n⁡∂Fi∂xk(x1(μ),⋯,xn(μ))(xk(μ+1)−xk(μ))=0(19.61)(i=1,2,⋯,n;μ=0,1,2,⋯).

要在每一步迭代中求解的线性方程组 (19.61) 的系数矩阵为

(19.62)F′(x(μ))=(∂Fi∂xk(x1(μ),x2(μ),⋯,xn(μ)))(i,k=1,2,⋯,n),

称之为雅可比矩阵. 若雅可比矩阵在解的邻域内是可逆的, 牛顿法是局部平方收敛的,即收敛基本上依赖于是否适当选取了初始近似值. 若在 (19.61) 中代入 xk(μ+1)− xk(μ)=dk(μ) ,则牛顿法可写成校正形式

(19.63)xk(μ+1)=xk(μ)+dk(μ)(i=1,2,⋯,n;μ=0,1,2,⋯).

为降低对初值的依赖性,与松弛法类似,引入所谓阻尼或步长参数 γ (阻尼法):

(19.64)xk(μ+1)=xk(μ)+γdk(μ)(i=1,2,⋯,n;μ=0,1,2,⋯;γ>0).

确定参数 γ 的方法见 [19.31].

19.2.2.3 无导数高斯-牛顿法 ​

为求解最小二乘问题 (19.24), 对非线性问题可以进行如下迭代:

(1) 从适当的初值 x1(0),x2(0),⋯,xn(0) 出发,对于非线性函数 Fi(x1,x2,⋯,xn) (i=1,2,⋯,m;m>n) 由牛顿法 (19.61) 的线性函数 F~i(x1,x2,⋯,xn) 近似,得到迭代步骤如下:

F~i(x1,⋯,xn)=Fi(x1(μ),x2(μ),⋯,xn(μ))+∑k=1n⁡∂Fi∂xk(x1(μ),⋯,xn(μ))(xk−xk(μ))(i=1,2,⋯,m;μ=0,1,2,⋯).

(19.65)

(2) 在 (19.65) 中代入 dk(μ)=xk−xk(μ) ,校正项 dk(μ) 由高斯最小二乘法,即求解线性最小二乘问题确定

(19.66)∑i=1m⁡F~i2(x1,⋯,xn)=min,

例如借助正则方程 (见 (19.42)), 或豪斯霍尔德方法 (参见第 1280 页 19.6.2.2).

(3)所求解的近似值由以下公式给出:

(19.67a)xk(μ+1)=xk(μ)+dk(μ)

或

(19.67b)xk(μ+1)=xk(μ)+γdk(μ)(k=1,2,⋯,n),

其中 γ(γ>0) 类似于牛顿法为步长参数.

重复步骤 (2) 与步骤 (3),用 xk(μ+1) 代替 xk(μ) 得到高斯-牛顿法. 于是得到近似值序列,其收敛性依赖于初值的准确性. 误差的平方和可以通过引入参数 γ 而降低.

如果偏导数 ∂Fi∂xk(x1(μ),⋯,xn(μ))(i=1,2,⋯,m;k=1,2,⋯,n) 的计算量过大, 偏导数可由以下差分近似得到

∂Fi∂xk(x1(μ),⋯,xk(μ),⋯,xn(μ))≈1hk(μ)[Fi(x1(μ),⋯,xk−1(μ),xk(μ)+hk(μ),xk+1(μ),⋯,xn(μ))−Fi(x1(μ),⋯,xk(μ),⋯,xn(μ))](19.68)(i=1,2,⋯,m;k=1,2,⋯,n;μ=0,1,2,⋯).

所谓离散步长 hk(μ) 可能依赖于迭代步数和变量值.

若用 (19.68) 近似,则高斯-牛顿法仅需计算函数值 Fi ,即该方法是与导数无关的.

version 1.24.0