matlab中迭代求解,求大神帮助,看看程序哪里错了?老是出现索引超出范围

2025-03-22 14:31:31
推荐回答(1个)
回答1:

几个问题

首先,这应该是迭代法求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

结果为: