【发布时间】:2023-04-05 10:27:01
【问题描述】:
我正在尝试实现一种迭代方法,以便在 matlab 中找到一个根。这是我的代码,非常简单
function [ res ] = iterative_method(f, a, b, x0, atol)
prev = f(x0);
xn = f(prev)
while (abs(xn - prev) < atol)
prev = xn
xn = f(prev)
end
res = xn
end
然后,我想在函数中找到一个根
f(x) = x^3 - 30*x^2 + 2552
所以我调用我的函数
iterative_method(@(x) x^3 -30*x^2 + 2552,0,10,1,10^-4);
但是输出没有意义:
res =
1.5869e+10
【问题讨论】:
-
毫无意义是什么意思?
-
由于条件错误,您的代码永远不会进入 while 循环。它认为它应该是这样的:
while (abs(xn - prev) > atol),当你不在任何地方使用这些值时,为什么要给出a和b的值?但是您的问题仍然不会收敛,我认为这是迭代方法的缺陷。 -
好的,我尝试修改它,但我得到一个 NaN 作为 res