几个问题
首先,这应该是迭代法求2的开方的,但是,判断退出的条件应该是相减小于1e-14,而不是大于。
将
if abs(x(i+1)-x(i))>1e-14
break;
end
改成
if abs(x(i+1)-x(i))<1e-14
break;
end
其次,x从1开始,但是i却从2开始,这样,计算x(3)会用到x(2),此时并没有计算出来,因此会错误。
将
for i=2:n;
改为
for i=i:n;
所以,整体程序为:
clc;clear;
x(1)=1;
n=100
for i=1:n;
x(i+1)=x(i)/2+3/(2*x(i));
if abs(x(i+1)-x(i))<1e-14
break;
end
end
x
结果为: