このディレクトリの索引

# 出典 :: C/C++の宿題片付けます 129代目 # [1] 授業単元: プログラミング実習 # [2] 問題文(含コード&リンク):台形公式により関数y=x^2とx軸によって # 挟まれる部分のx=0〜x=8までの範囲の面積を求めよ。 # 分割は4で計算せよ。 :- dynamic(func/2). '台形公式により関数y=x^2とx軸によって 挟まれる部分のx=0〜x=8までの範囲の面積を求めよ。 分割は4で計算せよ。' :- assertz((func(X,F) :- F is X ^ 2)), 台形公式による積分(4,0,8,S), writef('台形則による近似面積は %w です\n',[S]). 台形公式による積分(_分割数,X0,Xn,S) :- _分割数 > 1, 0 is _分割数 mod 2, Xn > X0, 台形則(_分割数,X0,Xn,S). 台形則(_分割数,X0,Xn,X) :- _間隔 is (Xn-X0) / _分割数, 台形則(1,_分割数,_間隔,X0,0.0,S), func(X0,F0), func(Xn,Fn), X is (F0 + Fn + S + S ) * _間隔 * 0.5. 台形則(N,_分割数,_,_,X,X) :- N > _分割数,!. 台形則(N,_分割数,_間隔,X0,Y,X) :- 'Nが分割数を越えるまで、前後の刻みのそれぞれの関数値に間隔を乗じたものの二分の一を加えて行く'(N,_分割数,_間隔,X0,Y,X). 'Nが分割数を越えるまで、前後の刻みのそれぞれの関数値に間隔を乗じたものの二分の一を加えて行く'(N,_分割数,_間隔,X0,Y,X) :- U is _間隔 * N + X0, func(U,F), Y2 is Y + F, N2 is N + 1, 台形則(N2,_分割数,_間隔,X0,Y2,X).