文章

7

粉丝

116

获赞

2

访问

8.5k

头像
解方程 注意精度问题
P1092
发布于2023年4月29日 12:49
阅读数 977

牛顿迭代法

x(n+1)=x(n)-f(x(n))/f'(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式

注意精度问题,最好将精度值设在1e-14
#include<bits/stdc++.h>
using namespace std;
int a;
double x1,x2;
double f(double x)//相当于f(x)
{
    return sqrt(x)+pow(x,1.0/3)-a;
}
double Df(double x)//相当于f'(x)
{
    return 1/(2*sqrt(x))+1.0/(3*pow(x,2.0/3));
}
int main()
{
    int nCase;
    
    cin>>nCase;
    while(nCase--)
    {
        cin>>a;
        x1=1;
        x2=0;
        if(a==0)
        {
            cout<<"0.0000000000"<<endl;
            continue;
        }
        while(fabs(x1-x2)>=0.00000000000001&&x1>=0&&x2>=0)//迭代
        {
           x2=fabs(x1-f(x1)/Df(x1));
           x1=fabs(x2-f(x2)/Df(x2));
        }
        printf("%0.10lf\n",x1);
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发