Matlab_牛顿迭代法解非线性方程组

例:设有非线性方程组x^2-2x-y+0.5=0,x^2+4y^2-4=0,设初值x=2.00,y=0.25,误差小于0.001。求该方程组的近似根。

算法步骤:

程序代码:

vf.m

function  F= vf( x )

F(1)=x(1)^2-2*x(1)-x(2)+0.5;

F(2)=x(1)^2+4*x(2)^2-4;

end

 

jacobi.m

function J = jacobi(x)

J=[2*x(1)-2,-1;2*x(1),8*x(2)];

end

 

manewton20.m

function X=manewton20(fun,dfun,x0,ep,N)

k=0;

while k<N

    F=feval(fun,x0);    

    J=feval(dfun,x0);    

    deltaX=-J\F';

    k=k+1

    X=x0'+deltaX

    if norm(deltaX,inf)<ep

        break;

    elseif k==N

        warning('已达到迭代次数上限!');

    else

        x0=X';

    end

end

disp(['k= ',num2str(k)]);

 

运行代码:

>> X=manewton20('vf','jacobi',[2.0 0.25],1e-3,50)

 

中间结果:

k =

 

     1

 

X =

 

    1.9063

    0.3125

 

k =

 

     2

 

X =

 

    1.9007

    0.3112

k =

 

     3

 

X =

 

    1.9007

    0.3112

最终结果:

k= 3

 

X =

 

    1.9007

    0.3112

 

该方程组的近似解为x=1.9007,y=0.3112

发布了71 篇原创文章 · 获赞 131 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_43239560/article/details/95446069