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

📄 变步长抛物线求积分.cpp

📁 用C++实现的多个算法
💻 CPP
字号:
#include<iostream.h>
#include<math.h>
#include<iomanip.h>

double a,b,e;
int n;
double simpson(double e,int n);
void main()
{
	double t;
	cout<<"请输入区间下限a,上限b,精度e的值:"<<endl;
	cout<<"下限 a=";
	cin>>a;
	cout<<"上限 b=";
	cin>>b;
	cout<<"精度 e=";
	cin>>e;
	cout<<"将曲间划分段数为 n=";
	cin>>n;
	t=simpson(e,n);
	cout<<"函数f(x)在区间["<<a<<","<<b<<"]上的积分为:"<<setprecision(9)<<t<<endl;
}
double f(double x)
{
	double y;
	y=4.0/(1.0+x*x);
	return y;
}

double simpson(double e,int n)
{
	int i;
	double s,sn,s2n,p,x,h;
	h=(b-a)/n;
	s=f(a)+f(b);
	i=1;p=0;x=a+h;
	while(i<=n-1)
	{
		if((i%2)!=0)
		{
			p=p+4.0*f(x);
			x=x+h;
		}
		else{
			s=s+2*f(x);
			x=x+h;
		}
		i++;
	}s=s+p;
	s2n=s*h/3.0;
	do{
		sn=s2n;
		x=a+h/2.0;
		s=s-p/2.0; p=0;
		for(i=1;i<=n;i++)
		{
			p=p+4.0*f(x);
			x=x+h;
		}
		s=s+p; n=n*2; h=h/2.0;
		s2n=s*h/3.0;
	}while(fabs(s2n-sn)>e);
	cout<<"总共运算的次数为:"<<i<<endl;
	return s2n;
}

⌨️ 快捷键说明

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