Newton Raphson 法を使用して N ルートを見つけようとしています。これが私の実装です...
double derive(int guess, int m, int n) {
return guess - (pow(guess, n)-m)/(n*pow(guess, n-1));
}
double getNRoot(int m, int n) {
double guess = 1;
double nextGuess = derive(guess, m, n);
while (fabs(guess-nextGuess) >= 0.0001) {
guess = nextGuess;
nextGuess = derive(guess, m, n);
printf ("%f %f\n", guess, nextGuess);
}
return nextGuess;
}
多くの値で機能しますが、m=8
とn=4
. guess
との場合、 とnextGuess
は 2 つの値の間で変動します。m=8
n=4
2.750000 1.750000
1.750000 2.750000
2.750000 1.750000
...
ここで何が問題なのですか?