matlab编程m文件牛顿法求解非线性方程,

问题描述:

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次,要求打印出最后的根及误差以及循环次数.
1个回答 分类:综合 2014-10-19

问题解答:

我来补答
原因在这一句:else fprintf('x0=%f xe=%f k=%d\n',x0,xe,k)
其中xe=%f只能输出的精度是0.000000,默认6位仅只小数点后面包含6位.而实际xe=0.0000001139,因此没有看到数字.
改成:xe=%.10f,表示小数位有十个.
结果:xe=0.0000001139
 
 
展开全文阅读
剩余:2000