牛顿下山法计算高次方程真是利器啊,举个栗子
#include <limits>
#include <iostream>
#include <math.h>
double f(double x)
{
return pow(x, 3) + pow(x, 2) + 2;
}
double f1(double x)
{
return 3 * pow(x , 2) + 2 * x;
}
int main()
{
double a0 = 5.0;
std::cin >> a0;
double da = 0.0;
do
{
double a = a0 - f(a0) / f1(a0);
da = a - a0;
a0 = a;
} while (abs(da) > 0.001);
std::cout << a0 + da << std::endl;
system("pause");
return -1;
}