实验名称:牛顿法解非线性方程组
1引言
我们已经知道,线性方程组我们可以采取Jacobi迭代法,GS迭代法以及SOR迭代方法求解。而在科学技术领域里常常提出求解非线性方程组的问题,例如,用非线性函数拟合实验数据问题、非线性网络问题,用差分法求解非线性微分方程问题等。
我们在解非线性方程组时,也考虑用迭代法求解,其思路和解非线性方程式一样,首先要将Fx0转化为等价的方程组
xigix1x2x
i12
或者简记为xg(x),其中giR
RgR
R
g1x
x1
gx
g
2x
x
x
2
R
g
x
x
迭代法:首先从某个初始向量x0开始,按下述逐次代入方法构造一向量序列xk:
xk1i
gix1k
x
ki12
其中,xkx1kx2kx
kT。
或写成向量形式:xk1gxkk012
如果limxkk
x(存在),称xk为收敛。且当gix为连续函数时,可得
xglimxkgxk
说明x为方程组的解。又称为xg(x)的不动点。本实验中采用牛顿迭代法来求解非线性方程组。
2实验目的和要求
运用matlab编写一个m文件,要求用牛顿法非线性方程组:
x1
12
cosx2
x
2
1si
2
x1
0取x0
0
00T要求
xk1xk
103
f3算法原理与流程图
1、算法原理设有非线性方程组Fx0
其中:Fxf1xf2xfkxT
由fix偏导数作成的矩阵记为Jx或Fx称为Fx的Jacobi矩阵
f1x
x1
Jx
F
x
f2xx1
f
xx1
f1xx2f2xx2
f
xx2
f1x
x
f2x
x
f
x
x
设x为Fx0的解,且设xkx1kx2kx
kT,为x的近似解,现利用多元函数
fix在xk点的泰勒公式有
fix
fixkx1
x1k
fixkx1
x
x
k
fixkx
12
xj
jl1
x
kj
xl
xlk
2fiCixjxl
PixR
其中,Ci在xk与x的所连的线段内。
如果用泰勒公式中的线性函数Pix近似代替fix,并将线性方程组
Pix
fixkx1
x1k
fixkx1
i12
x
x
k
fixkx
0
的解作为x的第k1次近似解记为xk1将上述方程写成矩阵形式:FxkJxkxxk0
如果Jxk为非奇异矩阵,则得到牛顿迭代公式:
f
x0初始向量
xk1xkJxk1Fxkk012
求解非线性方程组Fx0牛顿法或为
x0
JxkxkFxk
xk1xkxk
用上式可知,每计算一步xkxk1,需要:
(1)计算矩阵Jxk及Fxk;
(2)求解一个线性方程组:JxkxkFxk
(3)计算xk1xkxk。2、流程图见附图1
4程序代码及注释
牛顿法解r