将命令列表转换为函数

时间:2012-10-25 01:57:16

标签: function wolfram-mathematica

我做了这个

f[x_] := x - 2
x0 = 999.; imax = 5;
Module[{i, x}, x[0] = x0;
 For[i = 0, i < imax, x[i + 1] = x[i] - f[x[i]]/f'[x[i]];
  Print[x[i]];
  i++]]

我正试图把它变成一个牛顿rhapson函数。我需要能够输入函数F [x],初始猜测和imax。

2 个答案:

答案 0 :(得分:3)

更多Mathematica-ish:

newt[f_, x0_, imax_] := NestList[# - f@#/f'@# &, x0, imax];
f[x_] := x - 2
x0 = 999; imax = 5; 
newt[f, x0, imax]
(*
-> {999, 2, 2, 2, 2, 2}
*)

答案 1 :(得分:0)

Mathematica就这么简单:

newtonraph = Function[{f,x0,imax},Module[{i,x}, 
                       x[0] = x0;
                       For[i=0, i < imax, x[i+1] = x[i] - f[x[i]]/f'[x[i]];
                         Print[x[i]];
                         i++
                       ];
                      ];
                     ];

并调用函数:

func[t_] = 23 + t + 2*(t^2)
newtonraph[func,10,100]