Matlab帮助Newton Rapshon方法

时间:2016-09-06 08:48:28

标签: matlab

如果我有这样的代码

funk=@(x) x2-4;     
dfunk=@(x) 2*x;   

xk=4; 

for i = 1:5    
   xk+i= xk-funk(of what? xk or @(x) x2-4) / dfunk( same problem here);    
 end

我不知道我应该在括号中写什么它应该是Newton Raphson方法。 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

你不应该在for循环中将i添加到你的xk中。作为Newton's Metod 生成一个收敛于funktion根的系列,+ i仅对系列的索引进行操作。

您的代码应如下所示。

funk = @(x) x^2-4;
dfunk = @(x) 2*x;
xk = 4;
for i=1:5
    xk = xk - funk(xk)/dfunk(xk)
end

无论如何,我不建议使用像i = 1:5这样的固定条件,但是

TOL = 10e-4;
DIFF = 1;             % something larger than TOL
funk = @(x) x^2-4;
dfunk = @(x) 2*x;
xk = 4;

while (DIFF > TOL)
   aux = xk - funk(xk)/dfunk(xk);
   DIFF = abs(xk-aux);
   xk = aux;
end