このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/987
#  (c言語) 
#  関数f(x)=4.0/(1.0+X^2) の (0,1)間の定積分を 
#  台形公式を用いて計算するプログラムを作成せよ。 
#  台形の分割数 n は 2のk乗とし、(k=1,2,3,,,10)について求める  
#  [台形公式] 
#   関数f(x)の定積分値は、積分区間(a,b)を幅hの区間にn等分し、 
#  区分点をx0(=a), x1, .. xn(=b)とするとき、面積Sは 
#   S=h×[0.5×f(x0)+f(x1)+f(x2)+...+0.5×f(xn)で近似される 
# 
# 

f(_x,_y) :-
        _y is 4.0 / (1.0 + _x ^ 2).

'関数f(x)=4.0/(1.0+X^2) の (0,1)間の定積分を台形公式を用いて計算する'(_k,_s) :-
        '_kと_分割数'(_k,_分割数),
        f(0.0,_y_0),
        '関数f(x)=4.0/(1.0+X^2) の (0,1)間の定積分を台形公式を用いて計算する'(1,_分割数,_h,_y_0,_s).

'_kと_分割数'(_k,_分割数) :-
        between(1,10,_k),
        _分割数 is truncate( 2 ^ _k).

'関数f(x)=4.0/(1.0+X^2) の (0,1)間の定積分を台形公式を用いて計算する'(N,_分割数,_h,_y_1,0.0) :-
        N > _分割数,!.
'関数f(x)=4.0/(1.0+X^2) の (0,1)間の定積分を台形公式を用いて計算する'(N,_分割数,_h,_y_1,_s) :-
        台形の面積(N,_y_1,_h,_y_2,_s_1),
        N_2 is N + 1,
        '関数f(x)=4.0/(1.0+X^2) の (0,1)間の定積分を台形公式を用いて計算する'(N_2,_分割数,_h,_y_2,_s_2),
        _s is _s_1 + _s_2.

台形の面積(N,_y_1,_h,_y_2,_s_1) :-
        _x_2 is 0.0 + _h * N,
        f(_x_2,_y_2),
        s_1 is (_y_1 + _y_2) * _h / 2.