標籤:
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 //計算f(x)=1/x 在[1,3]上的積分 5 6 double f(double x){ 7 return 1.0/(x+2); 8 } 9 10 double f1(double x){11 return 1.0/(x+5);12 }13 double f2(double x){14 return 1.0/(x+7); 15 }16 17 double f3(double x){18 return 1.0/(x+9);19 }20 double f4(double x){21 return 1.0/(x+11); 22 }23 24 int main(){25 //運用三點高斯公式積分值 26 printf("%2.8f\n", (0.5555556*f( -0.7745967)+0.8888889*f( 0 )+0.5555556*f( 0.7745967) ));27 28 //運用五點高斯公式求積分值 29 printf("%2.8f\n", 0.2369269*f(-0.9061799)+ 0.2369269*f(0.9061799)+0.4786287*f(-0.5384693)+0.4786287*f(0.5384693) +30 0.5688889*f(0) );31 printf("\n");32 33 //將區間4等分,分別利用二點高斯公式,然後累加得積分值 34 printf("%2.8f\n",f1( -1.0/sqrt(3.0))+f1(1.0/sqrt(3.0)) );35 printf("%2.8f\n",f2( -1.0/sqrt(3.0))+f2(1.0/sqrt(3.0)) ); 36 printf("%2.8f\n",f3( -1.0/sqrt(3.0))+f3(1.0/sqrt(3.0)) );37 printf("%2.8f\n",f4( -1.0/sqrt(3.0))+f4(1.0/sqrt(3.0)) );38 39 printf("sum=%2.8f\n",f1( -1.0/sqrt(3.0))+f1(1.0/sqrt(3.0)) +f2( -1.0/sqrt(3.0))+f2(1.0/sqrt(3.0)) +f3( -1.0/sqrt(3.0))+f3(1.0/sqrt(3.0)) +f4( -1.0/sqrt(3.0))+f4(1.0/sqrt(3.0)) );40 41 }
高斯-勒讓德公式 求積分