#include #include #include /************** 表3.4の台形公式の数値解を求めるプログラム ****************** ・まず,変数変換を行っておきます. S=8/3integral^1_-1 (1-ξ^2)^(3/2)dξ ・実行すると小区間の数 N(textのNに対応)の入力を求めます. ・コマンドラインの第一引数にNを与えることでも 即時に数値解を出力することができます. 例) >daikei 100 ****************************************************************************/ #define a -1 //積分下限 #define b 1 //積分上限 double f(double x){ double y; y = 8./3.*pow((1-pow(x,2)), 1.5); return y; } int main(int argc, char **argv){ int i, N; double I, xi, yi, y0, yN, h; /********* 入力処理(始) ***********/ if(!(argc==1 || argc==2)){ printf("引数のエラーです\n"); return 1; } if(argc == 1){ printf("小区間の数Nを入力してください.\n N = "); scanf("%d",&N); }else{ argv++; N = atoi(*argv); } /********* 入力処理(終) **********/ y0 = f(a); yN = f(b); I = y0+yN; //式(3.4)の()中を計算 h = fabs(b-a)/N; for(i=1; i