⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 steffensen加速.cpp

📁 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 + -