私はこれを作った
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++]]
これをニュートン ラプソン関数に変換しようとしています。関数 F[x]、初期推定値、および imax を入力できる必要があります。
私はこれを作った
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++]]
これをニュートン ラプソン関数に変換しようとしています。関数 F[x]、初期推定値、および imax を入力できる必要があります。
もう少しMathematicaっぽい:
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}
*)
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]