📄 steffensen加速.cpp
字号:
#include<iostream>
#include<cstdlib>
#include<cmath>
using namespace std;
const double EPS=0.1e-16;
const int MN=50;
double f(double x)
{return x*x*x+4*x*x-10;}
double T(double x)
{return sqrt(10/(4+x));}
double Steffensen(double x0)
{double x1,y,z,temp;
y=T(x0);
z=T(y);
x1=z;
temp=z-2*y+x0;
if(fabs(temp)<=EPS)
return x1;
x1=(y-x0)*(y-x0)/temp;
return x0-x1;
}
void SteffensenAcc(double x)
{int k;
double x0=x;
double Y[MN],X0[MN],X1[MN],E[MN];
X0[0]=x0;
Y[MN]=f(X0[0]);
X1[0]=Steffensen(X0[0]);
for(k=1;k<MN;k++)
{X0[k]=X1[k-1];
Y[k]=f(X0[k]);
X1[k]=Steffensen(X0[k]);
E[k]=fabs(X1[k]-X0[k]);
cout<<"k "<<"X0[k] "<<"Y0[k] "<<"X1[k]"<<endl;
cout.precision(10);
cout<<k<<X0[k]<<Y[k]<<X1[k]<<endl;
if(E[k]<EPS)
break;
}
}
void main()
{
double x0;
cout<<"请输入初值";
cin>>x0;
SteffensenAcc(x0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -