问题描述:
matlab编程m文件牛顿法求解非线性方程,
function newton(x0,esp,n)
for k=1:n
y=x0-nd(x0)/nt(x0);
xe=abs(y-x0);
if xe>esp
x0=y;
else fprintf('x0=%f xe=%f k=%d\n',x0,xe,k)
break;
end
end
function y=nd(x)
y=(x-pi/2)^2-sin(x)-1;
function y=nt(x)
y=2*(x-pi/2)-cos(x);
这是我写的程序,但是运行的时候,就变成
>> newton(0,1e-4,1000)
y=0.394294 xe=0.000000 k=4
>> newton(1,1e-4,1000)
y=0.394294 xe=0.000000 k=5
xe怎么都是0,题目是这样的:编写M –File函数用牛顿法求出其根,精度为10-4,最大循环次次为1000次,要求打印出最后的根及误差以及循环次数.
function newton(x0,esp,n)
for k=1:n
y=x0-nd(x0)/nt(x0);
xe=abs(y-x0);
if xe>esp
x0=y;
else fprintf('x0=%f xe=%f k=%d\n',x0,xe,k)
break;
end
end
function y=nd(x)
y=(x-pi/2)^2-sin(x)-1;
function y=nt(x)
y=2*(x-pi/2)-cos(x);
这是我写的程序,但是运行的时候,就变成
>> newton(0,1e-4,1000)
y=0.394294 xe=0.000000 k=4
>> newton(1,1e-4,1000)
y=0.394294 xe=0.000000 k=5
xe怎么都是0,题目是这样的:编写M –File函数用牛顿法求出其根,精度为10-4,最大循环次次为1000次,要求打印出最后的根及误差以及循环次数.
问题解答:
我来补答展开全文阅读