1.问题描述
编写牛顿迭代法求方程的根。方程为,系数由主函数输入。求在1附近的一个实根。求出根后,由主程序输出。
牛顿迭代法的公式是:,设迭代到。
2.源码实现
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
float a, b, c, d;
float u = 1, x;
double s, t, r;
printf("请输入方程的系数: ");
scanf("%f %f %f %f", &a, &b, &c, &d);
do {
s = a*u*u*u + b*u*u + c*u + d;
t = 3*a*u*u + 2*b*u + c;
x = u - s / t;
r = x - u;
u = x;
}
while(r > 0.00001 || r < -0.00001);
printf("所求方程的根为x=%f\n", x);
return 0;
}
3.编译源码
$ gcc -o test test.c -std=c89
4.运行及其结果
请输入方程的系数: 2 -4 3 -6
所求方程的根为x=2.000000
网友评论