关于使用matlab写牛顿迭代法计算方程 f (x) = x^3 + 2x^2 +10x - 20 = 0 在区间[1,2]内的一个根的问题。
使用牛顿(Newton)法计算方程f(x)=x^3+2x^2+10x-20=0在区间[1,2]内的一个根。以下是我的程序,但是迭代次数居然有31次!牛顿法平方收敛不至于要...
使用牛顿(Newton )法计算方程 f (x) = x^3 + 2x^2 +10x - 20 = 0 在区间[1,2]内的一个根。以下是我的程序,但是迭代次数居然有31次!牛顿法平方收敛不至于要迭代这么多次。请您帮忙看看是什么地方出错了。谢谢
function [ x,k ] = Newton( x0,tol,N )
x0=1;
tol=1.0e-5;
N=500;
x=x0;
x=x0+2*e;
k=0;
while abs(x0-x)>tol&k<N
k=k+1;
x0=x;
x=x0-(x0.^3+2*x0.^2+10*x0-20)/(3*x0*x0+4*x0+x0);
end
fprintf('diedaicishu=%2d x[%2d]=%12.9f\n',k,k,x);
if k==N
fprintf('已经到达迭代次数上限,程序结束')
end
end 展开
function [ x,k ] = Newton( x0,tol,N )
x0=1;
tol=1.0e-5;
N=500;
x=x0;
x=x0+2*e;
k=0;
while abs(x0-x)>tol&k<N
k=k+1;
x0=x;
x=x0-(x0.^3+2*x0.^2+10*x0-20)/(3*x0*x0+4*x0+x0);
end
fprintf('diedaicishu=%2d x[%2d]=%12.9f\n',k,k,x);
if k==N
fprintf('已经到达迭代次数上限,程序结束')
end
end 展开
2个回答
2013-12-06
展开全部
x=x0-(x0.^3+2*x0.^2+10*x0-20)/(3*x0*x0+4*x0+10);
最后应该是10,不是x0
最后应该是10,不是x0
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询