当前位置:   article > 正文

牛顿-拉普森法求解线性方程组原理及matlab程序_matlabnewton-raphson方法

matlabnewton-raphson方法

牛顿-拉普森法求解线性方程组原理及matlab程序


牛顿-拉普森法原理

在多变量微积分和矩阵理论的交叉点是求解非线性代数方程的迭代方法。设是的 n n n个未知向量x,有
F ( x ) = 0 ∈ R n \mathbf{F}\left( \mathbf{x} \right) =0\in \text{R}^{\text{n}} F(x)=0Rn
就是求解x n n n个非线性方程组,其中向量函数具有连续导数,并且雅可比矩阵 F x ( x ) \mathbf F_\mathbf{x}(\mathbf x) Fx(x) R n R^n Rn的开集D中是非奇异的。在解的估计值为 x 0 x^0 x0的情况下,一阶泰勒展开寻求 x 0 x^0 x0的扰动 Δ x 0 \Delta x^0 Δx0,该干扰 Δ x 0 \Delta x^0 Δx0使得 x 1 = x 0 + Δ x 0 \mathbf{x}^1=\mathbf{x}^0+\Delta \mathbf{x}^0 x1=x0+Δx0更好地逼近解,使得
F ( x 0 ) + F x ( x 0 ) Δ x 0 = 0 \mathbf{F}\left( \mathbf{x}^0 \right) +\mathbf{F}_{\mathbf{x}}\left( \mathbf{x}^0 \right) \Delta \mathbf{x}^0=0 F(x0)+Fx(x0)Δx0=0
经过 J J J次迭代,增量方程可表示为
F x ( x j ) Δ x j = − F ( x j ) x j + 1 = x j + Δ x j

Fx(xj)Δxj=F(xj)xj+1=xj+Δxj
Fx(xj)Δxj=F(xj)xj+1=xj+Δxj
一直持续到 ∥ F ( x j + 1 ) ∥ ≤ Tol \lVert \mathbf{F}\left( \mathbf{x}^{j+1} \right) \rVert \leq \text{Tol} F(xj+1)Tol ,其中Tol为解的容差。
如果 x 0 x^0 x0足够接近解,则该方法二次收敛于解;即
∥ x ˉ − x j + 1 ∥ ≤ k ∥ x ˉ − x j ∥ 2 \lVert \mathbf{\bar{x}}-\mathbf{x}^{j+1} \rVert \leq \text{k}\lVert \mathbf{\bar{x}}-\mathbf{x}^j \rVert ^2 xˉxj+1kxˉxj2
其中 x ‾ \overline x x是解, k k k是常数。然而,良好的初始估计通常很难获得,并且对于较差的初始估计,该方法可能会产生偏差。幸运的是,在时间 t i + 1 = t i + h , ( i = 1 , 2 , … , h 很 小 ) t_i+1=t_i+ h,(i=1,2,…,h很小) ti+1=ti+hi=1,2,h的运动学和动力学模拟应用中,其解可以用作 t i + 1 t_i+1 ti+1的初始估计,并且很可能收敛。


Nowton-Raphson方法matlab程序?

代码如下(示例):

tolerance=1.0e-10;  %迭代误差
x=0.5;  %初始值
iters=0;    %迭代次数
rnorm=1.0;    %初始误差的最大值
itersmax=20;    %最大迭代次数
while iters<itersmax && rnorm>tolerance  %Iteration for x, through line 15
fx=1+sin(x)-x;    %原函数
dfx=cos(x)-1;   %函数的一阶导数
K=-dfx; R=fx;
delx=R/K;  %Newton-Raphson iteration,x的增量
x=x+delx;
rnorm=abs(R);  
iters=iters+1;
fprintf('iters=%3d,|R|=%14.5e,|delx|=%14.5e\n',iters,rnorm,abs(delx));
end
% 输出最终结果
if rnorm<tolerance
    fprintf('the converged solution is:x=%14.6e,f(x)=%15.8e\n',x,fx);
else
    fprintf('oops,your newton-raphson failed')   
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

输出结果

iters=  1,|R|=   9.79426e-01,|delx|=   8.00070e+00
iters=  2,|R|=   6.70264e+00,|delx|=   4.18242e+00
iters=  3,|R|=   4.24162e+00,|delx|=   3.06478e+00
iters=  4,|R|=   6.96585e-01,|delx|=   1.01248e+00
iters=  5,|R|=   4.98041e-01,|delx|=   3.03586e-01
iters=  6,|R|=   3.80906e-02,|delx|=   2.75686e-02
iters=  7,|R|=   3.52559e-04,|delx|=   2.59991e-04
iters=  8,|R|=   3.15841e-08,|delx|=   2.32956e-08
iters=  9,|R|=   4.44089e-16,|delx|=   3.27548e-16
the converged solution is:x=  1.934563e+00,f(x)=-4.44089210e-16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号