文章
7
粉丝
116
获赞
2
访问
8.0k
牛顿迭代法
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;
}
登录后发布评论
暂无评论,来抢沙发