【发布时间】:2016-04-25 21:17:52
【问题描述】:
我来自物理 SE。
最近开始学习Matlab,训练了一些简单的函数,现在遇到了一个很严重的问题:
function [x,n] = newton( p,a,b,d )
%This function approximates a root of a polynomial in [a,b] with an error bound less than d.
c=(a+b)/2;
q=polyder(p);
c1=c-polyval(p,c)/polyval(q,c);
n=1;
while c1-c > d
c=c1;
c1=c-polyval(p,c)/polyval(q,c);
n=n+1;
end
x=c1;
end
如您所见,它是一个使用Newton's method 逼近多项式根并给出所需步数的函数。问题是它总是给出错误的答案。我已经用不同的多项式和区间尝试了很多次,它总是接近但从未达到所需的精度。代码中是否有一些我不知道的错误?任何帮助表示赞赏。
【问题讨论】:
标签: matlab