?
?
程序代码如下
1、
function x=easydiedai(g,x0,eps,N)
k=0;
while k<N
x=feval(g,x0);
if abs(x-x0)<eps && 0<=x && x<=1
%本题要求根在[0,1]内
break
end
x0=x;
k=k+1;
end
fprintf('迭代次数为%d,根为%s',k+1,x)
if k==N
fprintf(' 提示:精度仍不满足要求')
end
end
2、
function x=newtondiedai(f,df,x0,eps,N)
k=1;
while k<N
if feval(df,x0)==0
I=-1;
break
else
x=x0-feval(f,x0)/feval(df,x0);
end
if abs(x-x0)<eps && 0<=x && x<=1 %本题要求根在[0,1]内
I=0;
fprintf('迭代次数为%d 根为%s',k,x);
break
end
x0=x;
k=k+1;
end
if k==N
I=1;
end
if I==0
fprintf('状态提示:I=%d 求得满足精度要求的近似根',I)
end
if I==-1
fprintf('状态提示:I=%d 因df(x0)=0而计算中断',I)
end
if I==1
fprintf('状态提示:I=%d 迭代N次后精度要求仍不满足',I)
end
end
注:程序框架根据《数值计算方法》第4版第二章第2节所述内容设计,有误勿喷,敬请指教
|