- 締切済み
prolog言語で積分計算
PROLOG計算 prolog言語で積分計算のできるプログラムを作っています。 積分定数Cを表示させるようにしているのですが 、3*x^3の積分の結果が 3* (x^2/2+c)+cとなってしまいます。 ()内のcを消すにはどーしたらよいでしょうか? プログラムは以下のように書きました。 t(x,x^2/2+c). t(Y ,Y*x+c) :- integer(Y). t(Y+Z,TY+TZ+c):- t(Y,TY),t(Z,TZ). t(Z*Y,Z*TY+c) :- integer(Z),t(Y,TY). t(Y^N ,(1/N)*Y^N1*TY+c):-integer(N),N1 is N+1,t(Y,TY). t(Y-Z,TY-TZ+c):-t(Y,TY),t(Z,TZ).
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.1
「積分定数をつけるだけ」のルール, たとえば integrate(X, Y+c) :- integrate0(X, Y) を作っておき, 途中の計算は積分定数なしで済ませることができれば簡単. ところで, 「3*x^3の積分の結果」はどうやっても「3* (x^2/2+c)+c」にはならないんですが, それは問題なしでしょうか?
補足
ご返答ありがとうございます。 プログラムを書き直してみました。 (x,x^2/2). t(Y ,Y*x) :- integer(Y). t(Y+Z,TY+TZ):- t(Y,TY),t(Z,TZ). t(Z*Y,Z*TY) :- integer(Z),t(Y,TY). t(Y^N ,(1/N1)*Y^N1):-integer(N),N1 is N+1. t(Y-Z,TY-TZ):-t(Y,TY),t(Z,TZ). t(sin(Y), -cos(x)). t(cos(Y),sin(x)) :. t(tan(Y),-log(cos(Y))). t(1/x ,log(x)). t(X, Y+c):-t0(X, Y). 積分はうまくいくのですが、積分定数が付かないです。 よろしければアドバイスをお願いいたします。