#include #include #include /***** 表3.4のガウス・ルジャンドル積分公式の数値解を求めるプログラム ***** ・まず,変数変換を行います. S=8/3integral^1_-1 (1-ξ^2)^(3/2)dξ ・下記Nをルジャンドル多項式の次数として誤差を求めます. ・Nを変更する場合はコンパイルしなおしてください. ・多項式の0点を求めるのに,4.2節の二分法を用います. **************************************************************************/ #define N 3 //ルジャンドル多項式の次数 #define delta pow(10,-10) //δ(二分法条件式(4.10)) #define epsilon pow(10,-10) //ε(二分法条件式(4.10)) #define kmax 1000 //収束判定条件との比較回数の上限 #define Pi acos(-1.) //πの値 double f(double x){ double y; y = 8./3.*pow((1-pow(x,2)), 1.5); return y; } double P_k(int k, double x){ //式(2.87) int n; double p0, p1, p2; p0 = 1; p1 = x; if( k==0 ){ return p0; }else{ for(n=1; n