C-牛顿迭代法求根

158 阅读1分钟

牛顿迭代法:

牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是[牛顿]在17世纪提出的一种在[实数域]和复数域上近似求解方程的方法。

代码:

#include <math.h>
int main()
{
	float qiugeng(int a, int b, int c, int d, int e);
	int a, b, c, d; float e = 1, answer = 1;
	scanf("%d %d %d %d", &a, &b, &c, &d);
	printf("方程为%dx**3+%dx**2+%dx+%d=0", a, b, c, d);//输入方程的系数
	printf("\n");
    answer = qiugeng(a, b, c, d, e);
	printf("%f", answer);//输出方程的根
	return 0;
}
float qiugeng(int a, int b, int c, int d, float e)//牛顿迭代法求解方程的根
{
	float q; float k;
	q = a * e * e * e + b * e * e + c * e + d;
	while (fabs(q) > 1e-6)//精度为10^(-6)
	{
		q = a * e * e * e + b * e * e + c * e + d;
		k = 3 * a * e * e + 2 * b * e + c;
		e = e - q / k;
	}
	return e;
}