【牛顿迭代法】C++实现

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;

double f(double x)
{
    return x+exp(x)-2;
}
double df(double x)
{
    return 1+exp(x);
}
int main()
{
    double x0,x1,sec;
    int i,n,flag=0;
    scanf("%lf%lf%d",&x0,&sec,&n);
    for( i=1;i<=n;i++)
    {
        if(fabs(df(x0)<1e-5))
        {
            flag=1;
            break;
        }
        x1 = x0 - f(x0)/df(x0);
        if(fabs(x1-x0)<sec)
        {
            //printf("x1:%lf,x0:%lf,sec:%lf",x1,x0,sec);
            flag=2;
            break;
        }
        x0=x1;
    }
    if(flag==2)
        printf("%lf %lf %.10lf %d",x1,x0,f(x1),i);
    return 0;
}
发布了38 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41514794/article/details/89632878
今日推荐