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

📄 romberg.cpp

📁 此代码可有于计算方法中的各种数学计算,如解线性方程组,求积分等,很方便!
💻 CPP
字号:
#define PI 3.14159265
#define E  2.718281828

#include <math.h>
#include <iostream>
using namespace std;

double  a,   //积分上限
        b,   //积分下限
	    h,   //上下限差
	    pre; //精度要求
double T[50][50];//复合梯形公式

int main()
{
	int k=0,r,s;
	double getmethod(double x);//获取被积函数
	double sum(int m);   //累加函数
	
	cout<<"请分别输入积分上下限:";
	cin>>a>>b;
	
	cout<<"请输入精度要求:";
	cin>>pre;
	
	h=b-a;
	cout<<"***************"<<endl;
	
	T[0][0]=h*(getmethod(a)+getmethod(b))/2;
	cout<<"T(0,0)="<<T[0][0]<<endl;
	do{
		k++;
		h=h/2;
		T[0][k]=T[0][k-1]/2+h*sum(k);
		cout<<"T(0,"<<k<<")="<<T[0][k]<<endl;
		for(s=1;s<=k;s++)
		{
			r=k-s;
			T[s][r]=(pow(4,s)*T[s-1][r+1]-T[s-1][r])/(pow(4,s)-1);
			cout<<"T("<<s<<","<<r<<")="<<T[s][r]<<endl;
		}
	}while(fabs(T[k][0]-T[k-1][0])>=pre);
	
	cout<<"***************"<<endl;
	cout<<"积分结果是:"<<sqrt(2/PI)*T[k][0]<<endl<<endl;
	return 0;
}

double getmethod(double x)//获取被积函数
{
	return (pow(E,-0.5*x*x));
}

double sum(int m)//累加函数
{
	double temp=0;
	for(int i=1;i<=pow(2,m-1);i++)
		temp+=getmethod(a+(2*i-1)*h);
	return temp;
}
     

⌨️ 快捷键说明

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