首页 > 其他分享 >牛顿迭代法求方程根

牛顿迭代法求方程根

时间:2023-04-25 22:46:22浏览次数:38  
标签:1.5 方程 牛顿 fd 迭代法 x0

一、问题描述

  编写用牛顿迭代法求方程根的函数。方程为ax3 +bx2 +cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。

  牛顿迭代法的公式是: x=xo-f(x0)/f'(x0),设迭代到|x-x0|<=10e-5时结束。

二、牛顿迭代公式

  

 

三、解题思路

1、在1附近找任意实数作为x0的初值,我们这里取1.5,即x0=1.5.

2、用初值x0代入方程中计算此时的f(x0)以及f'(x0);程序中用变量f描述方程的值,用fd描述方程求导之后的值。

3、计算增量h=f/fd。

4、计算下一个x:x=x0-h。

5、用新产生的x替换原来的x0,为下一次迭代做好准备。

6、若|x-x0|>=1e-5,则转到第3步继续执行,否则转到步骤7。

7、所求的x就是方程的根,并将其输出。

四、代码实现

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    double x0, x = 1.5, a, b, c, d, f, fd, h;
    cin >> a >> b >> c >> d;
    do
    {
        x0 = x;
        f = a * x0 * x0 * x0 + b * x0 * x0 + c * x0 + d;
        fd = 3 * a * x0 * x0 + 2 * b * x0 + c;
        h = f / fd;
        x = x0 - h;
    } while (fabs(x - x0) > 1e-5);
    printf("%.6f", x);
    return 0;
}
View Code 运行结果

 

标签:1.5,方程,牛顿,fd,迭代法,x0
From: https://www.cnblogs.com/zk126/p/17354176.html

相关文章

  • 一些离谱的化学方程式
    一些离谱的化学方程式最近了解了一些比较离谱的化学方程式。特别是最后两个,绝对能够燃起你对化学的激情。希望能够对大家的学习有所帮助无奈水博基础班Ba+2Na=Banana工业制香蕉2Mg+2Na+O₂=2Mango工业制芒果CO+2Fe=Coffee工业制咖啡2CO+Ca+La=Cocacola工业制可口可乐Ar+N......
  • 牛顿迭代法求方程根
    问题描述编写用牛顿迭代法求方程的根。方程ax3+bx2+cx+d=0,系数a,b,c,d由主函数输出。求x在1附近的一个实根,由主函数输出。牛顿的迭代法公式是:x=x0-f(x0)/f’(x0)代码如下#include<stdio.h>#include<math.h>floatfun(doublea,doubleb,doublec,doubled){ floatx0=......
  • matlab中通过ode函数求解常微分方程附加简单的钟摆模型
    求解常微分方程常用matlab中的ode函数,该函数采用数值方法用于求解难以获得精确解的初值问题。ODE是一个包含一个独立变量(例如时间)的方程以及关于该自变量的一个或多个导数。在时域中,ODE是初始值问题,因此所有条件在初始时间t=0指定。Matlab有几个不同的函数(内置)用于ODEs的解决方案。......
  • 6牛顿迭代法
    #include<stdio.h>#include<math.h>floatsolution(floata,floatb,floatc,floatd){ floatx0,f,fd,h; floatx=1.5; do { x0=x; f=a*x0*x0*x0+b*x0*x0+c*x0+d; fd=3*a*x0*x0+2*b*x0+c; h=f/f......
  • 牛顿迭代法求方程根
    问题描述:编写用牛顿迭代法求方程根的函数。方程为ax三次方+bx平方+cx+d=0,系数a,b,c,d由主函数输入,求x在1附近的一个实根,由主函数输出。完整程序:#include<stdio.h>#include<math.h>main(){floatsolution(floata,floatb,floatc,floatd);floata,b,c,d,xprintf("请输入......
  • 1.6 牛顿迭代法求方程根
    第一部曲: 第二部曲:第三部曲:第四部曲:#include<iostream>#include<cmath>usingnamespacestd;doubleresult(doublea,doubleb,doublec,doubled){ doublex0,x=1.5,f,fd,h; do { x0=x; f=a*x0*x0*x0+b*x0*x0+c*x0+d; fd=3*a*x0+2*b*x0+c; h=f/fd; x=x0-h; }while(......
  • 牛顿迭代法求方程根(递归算法)
    #include<iostream>#include<cmath>usingnamespacestd;doublef_origianal(doublea,doubleb,doublec,doubled,doublenewx){ returna*pow(newx,3)+pow(newx,2)*b+c*newx+d;}doublef_after_or(doublea,doubleb,doublec,doubled,......
  • 牛顿迭代法求方程根
    一、问题描述:二、设计思路:1,在1附件任意取一个实数作为x1的初值,例如取x=1.52,把x=1.5带入方程,算出f函数和f函数的导数fd的值3,利用公式h=f/fd求出增量4,用牛顿迭代公式计算下一个x的值 x=x1-h5,用新产生的x替换调原来的x1,为下一次迭代做好准备6,如果|x-x1|>=1e-5,则返回第3步,......
  • 牛顿迭代求根公式
    1,问题描述:编写用牛顿迭代法求方程根的函数。方程为ax+bx’+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。2.问题分析:牛顿迭代法是取x之后,在这个基础上,找到比更接近的方程的根,一步一步迭代,从而找到更接近方程根的近似根。3.算法设计程序流程分析......
  • 牛顿迭代法求方程根
    一、问题描述:编写用牛顿迭代法求方程根的函数。方程为ax3+bx2+cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后,有主函数输出。牛顿迭代法的公式是:x=x。-(f(x。)/f'(x。)),设迭代到|x-x.。|<=10-5时结束。二、设计思路1、在1附近找任一实数作为的初值x。,我们去1......