我正在尝试使用 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
在两个值之间波动。m=8
n=4
2.750000 1.750000
1.750000 2.750000
2.750000 1.750000
...
那么这里有什么问题呢?