例:设有非线性方程组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