このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1244449887/551
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# cos(x)とx軸で囲まれる領域において、xがa〜bの区間の面積を台形積分で求めるプログラムを作成しなさい。
# なお、aとbは引数として与えるようにすること。

'cos(x)とx軸で囲まれる領域において、xがa〜bの区間の面積を台形積分で求める'(_開始X座標,_終了X座標,X) :-
        分割数(_分割数),
        刻み幅(_分割数,_開始X座標,_終了X座標,_刻み幅),
        Y座標ならびを得る(_分割数,_分割数,_開始X座標,_終了X座標,_Y座標ならび),
        台形の総面積(_Y座標ならび,_刻み幅,X).

分割数(30).

台形の総面積([A,B],_刻み幅,X) :-
        X is (A+B) * _刻み幅 / 2,!.
台形の総面積([A,B|R],_刻み幅,X) :-
        Z is (A+B) * _刻み幅 / 2,
        台形の総面積([B|R],_刻み幅,Y),
        X is Z + Y.

Y座標ならびを得る(_分割数,_分割数,_開始X座標,_終了X座標,[A]) :-
        A is cos(_終了X座標),!.
Y座標ならびを得る(N,_分割数,_開始X座標,_終了X座標,[A|R]) :-
        A is cos(((_終了X座標-_開始X座標) * N / _分割数 + _開始X座標)),
        Y座標ならびを得る(M,_分割数,_開始X座標,_終了X座標,R).

刻み幅(_分割数,_開始X座標,_終了X座標,_刻み幅) :-
        _刻み幅 is (_終了X座標-_開始X座標) / _分割数.