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

📄 jifen.cpp

📁 用梯形公式和simpson公式求积分
💻 CPP
字号:
#include <iostream>
#include <math.h>

#include <assert.h>
using namespace std;
#define PI 3.141592653579
typedef double (*pfn) (double);
double trapezoidal(double a,double b,pfn f,int n);
double simpson(double a,double b,pfn f,int n);
double fn(double x) {return x*x;};
double fn2(double x) {return exp(-x*x);}//{return (x*x-pow(cos(x),3));}
void fs(int n){ assert(n>0&&n<=100);}
void main()
{	
/*测试一下断言
     double a,b;
	 cin>>a;
	 cin>>b;
	 int n=100;
	 //fs(a);
	 cout<<trapezoidal(a,b,fn2,n)<<endl;//将断言放在函数种也可以在调用时执行
*/
	double a=0,b=2;
	int n=1000000;
	pfn f=fn;
	cout<<trapezoidal(a,b,fn2,n)<<endl;
	cout<<simpson(a,b,fn2,n)<<endl;

}

double trapezoidal(double a,double b,pfn f,int n)
{
//	fs(a); //断言放在函数
	if(a>b){double temp; temp=a; a=b; b=temp; }
	double h=(b-a)/n;
	double sum=f(a)*0.5;
	for(int i=1;i<n;i++) sum+=f(a+i*h);
	sum+=f(b)*0.5;
	return sum*h;
}
double simpson(double a,double b,pfn f,int n)
{
	if(a>b){double temp; temp=a; a=b; b=temp; }
	double h=(b-a)/n;
	double sum=f(a);
	for(int i=1;i<n;i++) sum+=f(a+i*h);
	sum+=f(b);
    double sumid=0.0;
	for(i=1;i<n;i++) sumid+=f(a+(i-0.5)*h);

	return (sum*h+2*sumid*h)/3;
}

⌨️ 快捷键说明

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