Muller's method에 필요한 연산을 수행하는 루프가있는 함수를 작성하고 싶습니다.Mathematica의 뮬러 메서드
f[x_] := x^3 - x - 1;
x0 = 0.8
x1 = 1.5
x2 = 2.0
x3 = 5.0;
\[Epsilon] = 0.001;
While[(Abs[f[x3]] >= \[Epsilon]),
h0 = x1 - x0;
h1 = x2 - x1;
d0 = (f[x1] - f[x0])/h0;
d1 = (f[x2] - f[x1])/h1;
A = (d1 - d0)/(h1 + h0);
B = A*h1 + d1;
Cx = f[x2];
raiz = Sqrt[B^2 - 4.0*A*Cx];
If[Abs[B + raiz] > Abs[B - raiz], dens = B + raiz, dens = B - raiz];
x3 = (x2 - 2*Cx)/dens;
i++;
Print["Iteration: ", i, "\t root \[TildeTilde] ", x3];
x0 = x1;
x1 = x2;
x2 = x3;
]
하지만 infinit 루프를 얻을 수는 ...
'x3'은 (는)'x3 = x2-2 * Cx/dens'이어야한다고 생각합니다. – Heike