求解一元多次方程 牛顿迭代法

举例:

求解如下问题


首先不要管这个0.0001什么意思,其实就是后面进行do~while循环判断的一个界值。

编写程序如下,注释都写了:

#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
double a=1,b=-0.495,c=-0.198;  //分别代表该一元多次方程的每项系数的值,分别是1,0.495,0.198
double f(double x)
{
    double y;
    y=a*x*x*x*x*x+b*x+c;   //把原函数表示出来
    return(y);
}
double f1(double x)
{
    double y;
    y=5*a*x*x*x*x+b;       //把原函数一阶导数表示出来
    return(y);
}

int main()
{
    double x0=1.0,x1;
    x1=1;
    do
    {
        x0=x1;
        x1=x0-f(x0)/f1(x0);
    }
    while(fabs(x1-x0)>0.0001);
    printf("%f",x1);
}

最后输出:0.918151

版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/Tobyuyu/p/4965320.html