1 概述
用牛顿迭代法求根,方程ax^3 + bx^2 + cx + d =0;系数a,b,c,d的值依次为1,2,3,4由主函数输入。
1.1 牛顿迭代法
2 解法
//C程序设计第五版(谭浩强)
//章节:第七章 用函数实现模块化程序设计
//练习7.12 用牛顿迭代法求根,方程ax^3 + bx^2 + cx + d =0;系数a,b,c,d的值依次为1,2,3,4由主函数输入。
// 求x在1附近的一个实根,求出根后由主函数输出
#include <stdio.h>
#include <math.h>
int main()
{
double newton_iteration_algorithm(double x);
double x;
printf("请输入x:");
scanf("%lf", &x);
printf("方程在 %lf 附近的实根为: %lf\n",x,newton_iteration_algorithm(x));
return 0;
}
double newton_iteration_algorithm(double x)
{
double r[100];
int i=0;
r[0] = x;
do{
r[i+1] = r[i] - (r[i]*r[i]*r[i]+2*r[i]*r[i]+3*r[i]+4)/(3*r[i]*r[i]+4*r[i]+3);
i++;
}while(fabs(r[i]-r[i-1])>=1e-6);
return r[i];
}