关于matlab中循环控制
我想在matlab中用迭代法求解方程1-115/x^2=0的解,利用牛顿法得到迭代公式x(i+1)=x(i)-{[x(i)]^2-115*x(i)}/230。经其他算法验...
我想在matlab中用迭代法求解方程1-115/x^2=0的解,利用牛顿法得到迭代公式
x(i+1)=x(i)-{[x(i)]^2-115*x(i)}/230。经其他算法验证迭代公式没有错误。我想在迭代过程中对结果精度进行控制。因而引入变循环次数j当打不到计算精度时循环次数加一。精度满足时跳出for循环。自己走了几遍程序感觉没错可是总是循环四次就停止了,而且没有满足跳出循环的条件。计算精度总是达不到设置精度。求大神们给瞧瞧到底是哪错了。代码如下。
j=2
x0 = 10;
for i= 1:j
x = x0-(x0^3-115*x0)/230;
if abs(x-x0)<= 0.5*10^(-8)
c=0
break
else
j = j+1
x0=x;
end
end
x 展开
x(i+1)=x(i)-{[x(i)]^2-115*x(i)}/230。经其他算法验证迭代公式没有错误。我想在迭代过程中对结果精度进行控制。因而引入变循环次数j当打不到计算精度时循环次数加一。精度满足时跳出for循环。自己走了几遍程序感觉没错可是总是循环四次就停止了,而且没有满足跳出循环的条件。计算精度总是达不到设置精度。求大神们给瞧瞧到底是哪错了。代码如下。
j=2
x0 = 10;
for i= 1:j
x = x0-(x0^3-115*x0)/230;
if abs(x-x0)<= 0.5*10^(-8)
c=0
break
else
j = j+1
x0=x;
end
end
x 展开
1个回答
展开全部
这是因为j是在for循环里变化的,而i=1:j是在开始就赋值的,初值等于2,它是不会根据循环里j的变化而变化的,如果你要计算迭代次数,用下面的方法即可,n为迭代次数,满意请采纳,谢谢!还有你文字中的迭代公式x0是2次方,程序里确实3次方,请注意修改。
clc
clear
j=100;
x0 = 10;
n=0; %迭代次数
for i= 1:j
x = x0-(x0^3-115*x0)/230;
if abs(x-x0)<= 0.5*10^(-8)
break
end
x0=x;
n=n+1;
end
x;
clc
clear
j=100;
x0 = 10;
n=0; %迭代次数
for i= 1:j
x = x0-(x0^3-115*x0)/230;
if abs(x-x0)<= 0.5*10^(-8)
break
end
x0=x;
n=n+1;
end
x;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询