用牛顿迭代法求方程2**3 − 4**2 + 3 − 6 = 0在 1.5 附近的根

文章介绍了牛顿迭代法的基本思想和应用,展示了使用C语言实现牛顿迭代法求解非线性方程的代码示例,包括方程定义、导数计算以及迭代过程。代码通过不断迭代直到满足精度要求,找到方程的根。同时提到了方法的优缺点,如快速收敛和可能的发散问题。
摘要由CSDN通过智能技术生成

题为c程序设计(第五版) 谭浩强  第5章第14题

牛顿迭代法分析:

牛顿迭代法是一种求解方程的方法,它的基本思想是:如果一个函数在某一点的切线是直线,那么迭代下一次产生的值就是切线与x轴的交点的x坐标(简单来说就是用第一次取的点x做切线,再取切线与x轴的交点x1作为下一个点的横坐标,继续以x1做切线,如此反复,直到最后能够接近所求方程的根。),按照这个思想,我们可以不断迭代,直到收敛到方程的根 ¹。

牛顿迭代法的具体做法如下:

牛顿迭代法可以用于求解非线性方程、多项式方程、三角函数方程等等。它具有收敛速度快、精度高等优点。但是,它也有一些缺点,比如可能会出现发散现象、初值选取不当会导致无法收敛等等。

具体代码如下:

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

// 定义需要求解的方程
double f(double x) {
    return 2 * pow(x, 3) - 4 * pow(x, 2) + 3 * x - 6;
}

// 定义方程的导数
double f_prime(double x) {
    return 6 * pow(x, 2) - 8 * x + 3;
}

int main() {
    double x0 = 1.5; // 初始值
    double x1; // 迭代后的值
    double eps = 1e-6; // 精度要求

    do {
        x1 = x0 - f(x0) / f_prime(x0); // 计算迭代后的值
        printf("x = %lf\n", x1); // 输出迭代后的值
        if (fabs(x1 - x0) < eps) { // 判断是否满足精度要求
            break;
        }
        x0 = x1; // 更新初始值
    } while (1);

    return 0;
}

代码分析:

1.通过2个函数存放了原始方程所对应的函数,和原始方程所对应的导数,提高了代码的可读性。

2.后续代码是对牛顿迭代法数学思想和公式的编程表示。

需要注意的是:break虽然放在if中,但是break就是用来跳出最近的一个循环的,千万不要误认为只是跳出了if语句。

运行结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fashia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值