执行环境:VC6.0
//牛顿迭代法解非线性方程 x ^ 3 = a, 即求a的开三次方
//---------------------Include Files-------------
#include
//#include
//-----------------end Include Files-------------
#define M 10//迭代次数
double f(double x, double a);//f(x)函数
double df(double x);//f(x)的导数
int main()
{
double x[100];
double a;
int i = 1;
x[0] = 1;
printf("Please input a: ");
scanf("%lf",&a);
// for(; i < M; i++)
// {
// x[i] = x[i-1] - f(x[i-1], a) / df(x[i-1]);
// printf("x[%d] = %.7lf/n", i, x[i]);
// }
// while(fabs(f(x[i-1], a)) > 0.0000005)
// while((f(x[i-1], a) >= -0.0000005) && (f(x[i-1], a) <= 0.0000005))
while(f(x[i-1], a) > 0 ? f(x[i-1], a) : -f(x[i-1], a) >= 0.0000005)
//0.0000005是运算精度
{
x[i] = x[i-1] - f(x[i-1], a) / df(x[i-1]);
printf("x[%d] = %.7lf/n", i, x[i]);
i++;
}
return(0);
}
double f(double x, double a)
{
return (x * x * x - a);
}
double df(double x)
{
return (3 * x * x);
}