【发布时间】:2018-10-27 14:03:30
【问题描述】:
我正在尝试使用迭代找到方程 3x3+x2-10 的根。这是我到目前为止的代码,但是我认为我没有正确实现 while 循环,因为它目前只评估了一次方程。本质上,代码应该评估xVal-cVal 的绝对值是否小于0.0001,如果是,它应该打印出cVal 的值并停止。否则,xVal 的值应设置为等于cVal 并循环返回,但代码不会这样做。
xVal = input('Enter a value for x:');
cVal =((10-xVal^2)/3)^(1/3);
while (abs(xVal-cVal)>0.0001)
xVal = cVal;
end
disp(cVal);
【问题讨论】:
-
在将旧值分配给
xVal后,您需要在循环内评估新的cVal。如果 Matlab 有一个 do-while 或 do-until,那将是理想的构造。 -
所以 while (abs(xVal-cVal)>0.0001) xVal = cVal; cVal = 0;结束
-
不,0 不是
cVal的正确新值。想一想,不要只是猜测。这只会无限循环并测试值 0。它需要按照第一次完成的方式计算。 -
要实现该流程图,您需要重新计算
cVal。但我不确定它是否一定会收敛。这是你的算法还是你从某个地方得到的? -
我将确认,如果正确实施,这个定点迭代会收敛(即,
cVal在while循环内更新。
标签: matlab loops iteration equation-solving