用牛顿迭代法求根。方程为ax^3+bx^2+cx+d=0,系数a,b,c,d的值依次为1,2,3,4,由主函数输入。求x在1附近的一个实根。求出根由主函数输出
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
int main() {
float sout(float a, float b, float c, float d);
float a, b, c, d;
printf("请分别输入a,b,c,d的值:");
scanf("%f,%f,%f,%f", &a, &b, &c, &d);
printf("x=%f\n", sout(a, b, c, d));
return 0;
}
float sout(float a, float b, float c, float d) {
float x = 1, x0, f, f1;
do {
x0 = x;
f = ((a * x0 + b) * x0 + c)*x0 + d;
f1 = (3 * a * x0 + 2 * b) * x0 + c;
x = x0 - f / f1;
} while (fabs(x - x0) >= 1e-3);
return x;
}
标签:f1,x0,float,牛顿,sout,迭代法,求根 From: https://www.cnblogs.com/pinganxile/p/17375453.html