牛顿迭代法求方程的根

2021-10-17  本文已影响0人  一路向后

1.问题描述

编写牛顿迭代法求方程的根。方程为ax^3+bx^2+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后,由主程序输出。
牛顿迭代法的公式是:x=x_0-\frac{f({x_0})}{f(x)},设迭代到|x-x_0|\leqslant10^{-5}

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
上一篇 下一篇

猜你喜欢

热点阅读