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

📄 11.cpp

📁 理查德外推加速算法
💻 CPP
字号:
//Richardson外推加速法
#include<iostream.h>
#include<iomanip.h>
#include<cmath>
#include<vector>
const double x=1;
const double e=0.02;
const double E=0.00001;  

using namespace std;

void main()
{
	vector<double> D0,D1,D2,D3;
	double record,d,h,h0;    //步长h  初始步长h0
	int i=0;
	cout<<"区间长度h=";
		cin>>h0;
	h=h0/pow(2,i);
    d=(exp(x+h)-exp(x-h))/(2*h);
    D0.push_back(d);
	i++;
	do{ 
		record=d;
		h=h0/pow(2,i);
		d=(exp(x+h)-exp(x-h))/(2*h);
	    D0.push_back(d);	
		i++;
	}while(fabs(d-record)>e);	
			cout<<setw(5)<<"D0"<<endl;
			for(i=0;i<D0.size();i++)
		      cout<<setprecision(7)<<D0[i]<<endl;
		
	    cout<<endl;
		
		for(i=0;i<D0.size()-1;i++)
		    D1.push_back((4*D0[i+1]-D0[i])/3);
		  
		  cout<<setw(5)<<setprecision(7)<<"D1"<<endl;	
		
		for(i=0;i<D1.size();i++)
            cout<<setprecision(7)<<D1[i]<<endl;
			
		cout<<endl;
			
		for(i=0;i<D1.size()-1;i++)
			D2.push_back((16*D1[i+1]-D1[i])/15);
     
		cout<<setw(5)<<setprecision(7)<<"D2"<<endl;
		
		for(i=0;i<D2.size();i++)
			cout<<setprecision(7)<<D2[i]<<endl;
		cout<<endl;    

		cout<<setw(5)<<setprecision(7)<<"D3"<<endl;
		for(i=0;i<D2.size()-1;i++)
			D3.push_back((64*D2[i+1]-D2[i])/63);

		
		for(i=0;i<D3.size();i++)
		{
			if((D3[i+1]-D3[i])<E)
				cout<<setprecision(7)<<D3[i]<<endl;
			 break;
        }
} 
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -