牛顿方法仅适用于少量迭代,这怎么可能?

时间:2017-07-18 20:04:05

标签: matlab newtons-method

由于明天我有一个考试我决定尝试实际实现Newton的方法来计算MatLab中函数的真正根源,然后我写下了一些代码并对其进行了测试。事实证明,如果我删除了公差检查,我的方法永远不会结束(我不明白为什么),而对于少量的迭代(我已经尝试了多达4次迭代),我的功能完成了它的工作。

代码:

function [ root ] = Newton( f_name, max_steps, initial_guess )

syms x;
Function = sym(f_name);
Derivative = (diff(Function));

previous_guess = initial_guess;

for i=1:max_steps
    initial_guess = initial_guess - (subs(Function,x, initial_guess))/(subs(Derivative,x, initial_guess));
    if abs(previous_guess - initial_guess) < eps
       break;
    end
    previous_guess = initial_guess;
end

root = initial_guess;

请有人以正确的方式向我发言吗? 提前谢谢。

0 个答案:

没有答案