急求:牛顿迭代法matlab程序及输出结果。即包括在matlab中的执行部分。。万分感谢!·~
1个回答
展开全部
例如求解方程组:x1^2+x2^2=4;x1^2-x2^2=1
可以编写程序如下:
clear;
x0=1;y0=1;n=10;tol=1e-6;
x(1)=x0;y(1)=y0;
i=1;u=[1 1];k(1)=1;
while(norm(u)>tol*norm([x(i),y(i)]'))
A=2*[x(i),y(i);x(i),-y(i)];
b=[4-x(i)^2-y(i)^2,1-x(i)^2+y(i)^2]';
u=A\b;
x(i+1)=x(i)+u(1);
y(i+1)=y(i)+u(2);
i=i+1;k(i)=i;
if(i>n)error('n is full');
end
end
[k',x',y']
得到ans =
1.0000 1.0000 1.0000
2.0000 1.7500 1.2500
3.0000 1.5893 1.2250
4.0000 1.5812 1.2247
5.0000 1.5811 1.2247
6.0000 1.5811 1.2247
欢迎追问~
可以编写程序如下:
clear;
x0=1;y0=1;n=10;tol=1e-6;
x(1)=x0;y(1)=y0;
i=1;u=[1 1];k(1)=1;
while(norm(u)>tol*norm([x(i),y(i)]'))
A=2*[x(i),y(i);x(i),-y(i)];
b=[4-x(i)^2-y(i)^2,1-x(i)^2+y(i)^2]';
u=A\b;
x(i+1)=x(i)+u(1);
y(i+1)=y(i)+u(2);
i=i+1;k(i)=i;
if(i>n)error('n is full');
end
end
[k',x',y']
得到ans =
1.0000 1.0000 1.0000
2.0000 1.7500 1.2500
3.0000 1.5893 1.2250
4.0000 1.5812 1.2247
5.0000 1.5811 1.2247
6.0000 1.5811 1.2247
欢迎追问~
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询