用割线法解非线性方程组
自动化学院1011203050 陈晓祺
拟牛顿法解下列方程组
先将拟牛顿法的程序代码如下
Function[r,m]=mulVlineF,x0,A, eps)
Format long;
If nargin=3
Eps=1e-4;
End
X0=transpose(x0);
X1=tanspose(x1);
N=length(x0);
Fx=subs(F,findsym(F),x0);
Fx1=subs(F,findsym(F),x1);
H=x0-x1;
J=zeros(n,n);
Xt=x1;
Xt(1)=x0(1);
J(:,1)=(subs(F,findsym(F),xt)-sbus(F,findsym(F),x1))/h(1);
For i=2:n
Xt=x1;
Xt(1:i)=x0(1:i);
Xt_m=xl;
Xt_m(1:i-1)=x0(1:i-1);
J(:,i)=(subs(F,findsym(F),xt)-sbus(F,findsym(F),xt_m))/h(1);
End
R=x1-inv(J)*fx1;
M=1;
Tol=1;
While tol>eps
X0=x1;
X1=r;
Fx=subs(F,findsym(F),x0);
Fx1=subs(F,findsym(F),x1);
H=x0-x1;
J=zeros(n,n);
Xt=x1;
Xt(1)=x0(1);
J(:,1)=(subs(F,findsym(F),xt)-subs(F,findsym(F),x1))/h(1);
For i=2:n
Xt=x1;
Xt(1:i)=x0(1:i);
Xt_m=x1;
Xt_m(1:i-1)x0(1:i-1);
J(:,1)=(subs(F,findsym(F),xt)-subs(F,findsym(F),xt_m))/h(1);
End
R=x1-inv(J)*fx1;
Tol=norm(r-x1);
M=m+1;
If(m>100000)
Disp(fail);
Return;
End
End
然后直接调用该方法
Syms x y
Z=[x^2+y^2-5;2*x-y-3];
[r,m]=mulline(z,[0 1],[4,3])
[r,m]=mulline(z,[-3 1],[4,3])
得到解为(2,1)(0.4,-2.2)
展开阅读全文