📄 guass.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 + -