主题:非线性方程组求解迭代的问题
主程序
function y=mulVNewton(x0)
A=df(x0);
x1=x0-fc(x0)/df(x0);tic
n=1;
k=1;
eps=1.0e-4;
while k>eps
x0=x1;
x1=x0-fc(x0)/df(x0);
y=x1-x0;
z= fc(x1)-fc(x0);
A1=A+(z-A*y)*y'/(y'.*y); %此处实系数取1
A=A1;
n=n+1;
if(n>100000) %迭代步数控制
disp('迭代步数太多,可能不收敛!');
return;
end
k=norm(x1-x0);
end
x1
n
toc
辅助程序
function y=fc(x)
y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2));
y(2)=x(2)-0.7*cos(x(1))+0.2*sin(x(2));
y=[y(1) y(2)];
function y=df(x)
y=[1-0.7*cos(x(1)) 0.2*sin(x(2))
0.7*sin(x(1)) 1+0.2*cos(x(2))]
我想让矩阵A附上初值之后不再改变,然后代入A的迭代公式计算A,再进行x的迭代,老是报错,请求帮助
function y=mulVNewton(x0)
A=df(x0);
x1=x0-fc(x0)/df(x0);tic
n=1;
k=1;
eps=1.0e-4;
while k>eps
x0=x1;
x1=x0-fc(x0)/df(x0);
y=x1-x0;
z= fc(x1)-fc(x0);
A1=A+(z-A*y)*y'/(y'.*y); %此处实系数取1
A=A1;
n=n+1;
if(n>100000) %迭代步数控制
disp('迭代步数太多,可能不收敛!');
return;
end
k=norm(x1-x0);
end
x1
n
toc
辅助程序
function y=fc(x)
y(1)=x(1)-0.7*sin(x(1))-0.2*cos(x(2));
y(2)=x(2)-0.7*cos(x(1))+0.2*sin(x(2));
y=[y(1) y(2)];
function y=df(x)
y=[1-0.7*cos(x(1)) 0.2*sin(x(2))
0.7*sin(x(1)) 1+0.2*cos(x(2))]
我想让矩阵A附上初值之后不再改变,然后代入A的迭代公式计算A,再进行x的迭代,老是报错,请求帮助