问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

用牛顿迭代法求多元方程的根

创作时间:
作者:
@小白创作中心

用牛顿迭代法求多元方程的根

引用
CSDN
1.
https://m.blog.csdn.net/qq_53250579/article/details/136901603

牛顿迭代法是一种用于求解方程根的数值方法,尤其适用于求解非线性方程。本文将通过一个具体的例子,详细介绍如何使用牛顿迭代法求解多元方程的根,并给出完整的C语言实现代码。

问题描述

给定一个三次方程:

[f(x) = ax^3 + bx^2 + cx + d]

其中系数 (a, b, c, d) 的值依次为 1, 2, 3, 4,由主函数输入。要求在 1 附近找到方程的一个实根并输出。

牛顿迭代法原理

牛顿迭代法的基本思想是通过迭代逼近方程的根。其迭代公式为:

[x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}]

其中 (f'(x_n)) 是 (f(x)) 在 (x_n) 处的导数。

代码实现

下面是使用 C 语言实现的牛顿迭代法求解方程根的完整代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>

int main() {
    int a, b, c, d;
    scanf("%d,%d,%d,%d", &a, &b, &c, &d);
    double x0 = 1, x1 = 0, f1, f2; // f2 用来存储 f1 的导函数
    while (fabs(x0 - x1) >= 1e-6) { // 当二者的绝对值足够小时退出循环
        x0 = x1;
        f1 = a * pow(x0, 3) + b * pow(x0, 2) + c * x0 + d;
        f2 = 3 * a * pow(x0, 2) + 2 * b * x0 + c;
        x1 = x0 - f1 / f2;
    }
    printf("%.2f", x1);
    return 0;
}

运行结果

运行上述代码,输入系数 1, 2, 3, 4,得到的运行结果如下:

从运行结果可以看出,方程在 1 附近的一个实根约为 -1.67。

总结

本文通过一个具体的例子,详细介绍了牛顿迭代法求解多元方程根的原理和实现过程。通过本文的学习,读者可以掌握牛顿迭代法的基本思想,并能够使用 C 语言实现该算法。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号