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

📄 guass.cpp

📁 二维三点高斯积分公式
💻 CPP
字号:
#include<iostream.h>
#include<fstream.h>
#include<math.h>
class Point{
public:
	double x,y;
	Point(double p1=0,double p2=0){x=p1;y=p2;}
	Point(Point& p1){x=p1.x;y=p1.y;}
	Point& operator=(Point& p1){this->x=p1.x;this->y=p1.y;return *this;}
	friend Point operator *(double k,Point p){
		Point p3;
		p3.x=p.x*k;
		p3.y=p.y*k;
		return p3;
	}
	friend Point operator+(Point p1,Point p2){
		Point p3;
		p3.x=p1.x+p2.x;
		p3.y=p1.y+p2.y;
		return p3;
	}
    friend Point operator *(Point p,double k){
		Point p3;
		p3.x=p.x*k;
		p3.y=p.y*k;
		return p3;
	}
	friend ostream& operator<<(ostream& out,Point p){
		out<<"x="<<p.x<<"\t"<<"y="<<p.y<<endl;
		return out;
	}
};
double f(Point p){
	return sqrt(4*p.x*p.x-p.y*p.y);
}
double Guass(double (*f)(Point x),Point i,Point j,Point k){//3点公式
	double s=((i.x-j.x)*(i.y-k.y)-(i.x-k.x)*(i.y-j.y))/2;
	Point p1,p2,p3;//下面这一条语句它是先执行后面的加号
	p1=0.666666666666667*i+j*0.166666666666667+k*0.166666666666667;
	p2=0.666666666666667*j+i*0.166666666666667+k*0.166666666666667;
	p3=0.666666666666667*k+i*0.166666666666667+j*0.166666666666667;
	return s*(f(p1)+f(p2)+f(p3))/3;
}
/*double Guass(double (*f)(Point x),Point i,Point j,Point k){//13点公式
	double s=((i.x-j.x)*(i.y-k.y)-(i.x-k.x)*(i.y-j.y))/2;
	Point p[13];
	p[0]=0.333333333333333*i+j*0.333333333333333+k*0.333333333333333;
	p[1]=0.479308067841923*i+j*0.260345966079038+k*0.260345966079038;
	p[2]=0.479308067841923*j+i*0.260345966079038+k*0.260345966079038;
	p[3]=0.479308067841923*k+i*0.260345966079038+j*0.260345966079038;
	p[4]=0.869739794195598*i+j*0.065130102902216+k*0.065130102902216;
	p[5]=0.869739794195598*j+i*0.065130102902216+k*0.065130102902216;
	p[6]=0.869739794195598*k+i*0.065130102902216+j*0.065130102902216;
	p[7]=0.638444188569809*i+j*0.312865496004875+k*0.486903154253160;
	p[8]=0.638444188569809*i+k*0.312865496004875+j*0.486903154253160;
	p[9]=0.638444188569809*j+i*0.312865496004875+k*0.486903154253160;
	p[10]=0.638444188569809*j+k*0.312865496004875+i*0.486903154253160;
	p[11]=0.638444188569809*k+i*0.312865496004875+j*0.486903154253160;
	p[12]=0.638444188569809*k+j*0.312865496004875+i*0.486903154253160;
	double result=0;
	result+=(-0.149570044467670)*f(p[0]);
	result+=0.175615257433204*(f(p[1])+f(p[2])+f(p[3]));
	result+=0.053347235608839*(f(p[4])+f(p[5])+f(p[6]));
	result+=0.077113760890257*(f(p[7])+f(p[8])+f(p[9])+f(p[10])+f(p[11])+f(p[12]));
	return s*result;
}*/
void main(){
    cout.precision(4);
	Point p1(0,0),p2(1,0),p3(1,1);
	double result;
	result=Guass(f,p1,p2,p3);
	cout<<result<<endl;
	cout<<(3.1415926535897932/3+sqrt(3)/2)/3;	
}

⌨️ 快捷键说明

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