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

📄 数值积分.cpp

📁 这是一些c++例程
💻 CPP
字号:
// 数值积分.cpp : Defines the entry point for the console application.
//

#include <stdafx.h>
#include <iostream.h>
#include <iomanip.h>
#include <math.h>

#define PI 3.141592653589793238462643

class CIntegral
{
public:
	double a, b;						//成员变量,分别表示积分的下界与上界
	double epsilon, MaxD;				//成员变量,分别表示积分的误差限和导数限。
	CIntegral(double, double);				//构造函数
	double f(double);					//成员函数,表示待积分的运算函数
	double Simpson();			 		//成员函数,表示Simpson公式的运算过程,返回运算结果;
};

CIntegral::CIntegral(double xa, double xb)			//构造函数
{
	epsilon=0.5E-8;
	MaxD=24.0;
	a=xa;
	b=xb;
}

double CIntegral::f(double x)				//成员函数,表示待积分的运算函数
{
	return 4.0/(1.0+x*x);
}

double CIntegral::Simpson()				//成员函数,用来计算Simpson积分
{
	double h,s,x;
	int i,n;
		//利用误差公式估计h
		h=2*exp(log(epsilon*180/MaxD/(b-a))*0.25);	
		n=(int) ((b-a)/h+0.5);				//n表示分段数目
		h=(b-a)/double(n);					//h表示积分步长
		//计算s
		s=0.0;
		for(x=a,i=0;i<n;i++,x+=h)
		s+=h/6*(f(x)+4*f(x+h/2)+f(x+h));
		//返回s,为最终积分数值
	return s;
}

void main()
{
		CIntegral test(0.0,1.0);				//生成CIntegral类的对象test,并给出积分上下界。
		double res=test.Simpson();				//计算积分
		setprecision(16);
		cout<<res<<endl;				//输出结果
		cout<< PI-res<<endl;			//输出误差
}


⌨️ 快捷键说明

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