potensexp(TOKL,TOKL,EXP);
potensexp1(TOKL,TOKL,EXP,EXP);
multexp(TOKL,TOKL,EXP);
multexp1(TOKL,TOKL,EXP,EXP);
plusexp(TOKL,TOKL,EXP);
plusexp1(TOKL,TOKL,EXP,EXP);
elmexp(TOKL,TOKL,EXP);
reduce(EXP,EXP); /* Reducer */
doreduce(EXP,EXP);
plusr(EXP,EXP,EXP);
minusr(EXP,EXP,EXP);
multr(EXP,EXP,EXP);
divr(EXP,EXP,EXP);
lnr(EXP,EXP)
/* String Editor */
editstr(string,string,integer,integer,integer).
editstr(char,string,string,integer,integer,integer).
editstr(symbol,char,string,string,integer,integer,integer).
lstcat(TOKL,string)
repeat
GOAL
run.
CLAUSES
run:-
makewindow(1,71,7,"",0,0,25,80),
makewindow(1,71,7,"",1,14,9,52),
write(" СИМВОЛЬНОЕ ИНТЕГРИРОВАНИЕ "),nl,
write(" ********************************************"),nl,
field_attr(0,3,44,112),
write(" Выражение может содержать следующие операции:"),nl,
write(" сложение, вычитание, умножение, деление, sin \n"),
write(" cos, sin ,tan, нат. логарифмы и степени.\n\n"),
write(" e.g. x+x or x*(2+y)^2 or ln(1+1/(1-x))"),
makewindow(3,7,7,"",10,3,14,73),
clearwindow, integr.
integr:readexp(EXP),
i(EXP,var(x),EXP1),
write("\n Integrated expression:\n "),
writeexp(EXP1),
write("\n\n Reduced expression:\n "),
doreduce(EXP1,EXP2), writeexp(EXP2),
write("\n\n Hit any key to continue..."),readchar(_),
fail.
integr :- integr.
repeat.
repeat:- repeat.
%Предикат константы
const(flt(_),_):-!.
const(var(i),_):-!.
const(var(X),var(Y)):-X<>Y, !.
const(var(_),flt(_)):-!.
const(mult(E1,E2),X):-const(E1,X), const(E2,X), !.
const(plus(E1,E2),X):-const(E1,X), const(E2,X), !.
const(minus(E1,E2),X):-const(E1,X), const(E2,X), !.
const(div(E1,E2),X):-const(E1,X), const(E2,X), !.
const(potens(E1,E2),X):-const(E1,X), const(E2,X), !.
const(ln(E),X):-const(E,X), !.
const(abs(E),X):-const(E,X), !.
const(sin(E),X):-const(E,X), !.
const(cos(E),X):-const(E,X), !.
const(tan(E),X):-const(E,X), !.
const(sec(E),X):-const(E,X), !.
const(atan(E),X):-const(E,X), !.
const(asin(E),X):-const(E,X), !.
const(E,plus(E1,E2)):-const(E,E1), const(E,E2), !.
const(E,minus(E1,E2)):-const(E,E1), const(E,E2), !.
const(E,mult(E1,E2)):-const(E,E1), const(E,E2), !.
const(E,div(E1,E2)):-const(E,E1), const(E,E2), ! .
const(E,potens(E1,E2)):-const(E,E1), const(E,E2), !.
const(E,sin(E1)):-const(E,E1), !.
const(E,cos(E1)):-const(E,E1), !.
const(E,sec(E1)):-const(E,E1), !.
const(E,tan(E1)):-const(E,E1), !.
const(E,ln(E1)):-const(E,E1), !.
const(E,abs(E1)):-const(E,E1), !.
const(E,asin(E1)):-const(E,E1), !.
const(E,atan(E1)):-const(E,E1), !.
%Равенство выражений:
equal(X,X):-!.
/*
Интегрирование
*/
% +\i(plus(U,V),X,plus(U1,V1)):-i(U,X,U1), i(V,X,V1), !.
i(minus(U,V),X,minus(U1,V1)):-i(U,X,U1), i(V,X,V1), !.
i(E,X,mult(E,X)):-const(E,X), !.
i(X,X,div(potens(X,flt(2)),flt(2))):-!.
i(div(flt(1),X),X,ln(abs(X))):-!.
i(potens(X,flt(-1)),X,ln(abs(X))):-!.
i(potens(X,flt(N)),X,div(potens(X,flt(M)),flt(M))):-N<>-1, M=N+1, !.
i(sin(X),X,mult(flt(-1),cos(X))):-!.
i(cos(X),X,sin(X)):-!.
i(tan(X),X,mult(flt(-1),ln(abs(cos(X))))):-!.
i(potens(sin(X),flt(2)),X,minus(div(X,flt(2)),div(sin(mult(flt(2),X)),flt(4)))):-!.
i(potens(cos(X),flt(2)),X,plus(div(X,flt(2)),div(sin(mult(flt(2),X)),flt(4)))):-!.
i(potens(sin(X),flt(3)),X,minus(div(potens(cos(X),flt(3)),flt(3)),cos(X))):-!.
i(potens(cos(X),flt(3)),X,minus(sin(X),div(potens(sin(X),flt(3)),flt(3)))):-!.
i(potens(sin(X),flt(N)),X,minus(div(mult(V,flt(K)),flt(N)),div(mult(potens(sin(X),flt(K)),cos(X)),flt(N)))):-N1=trunc(N), N2=N-N1, N2=0, M=N-2, K=N-1, i(potens(sin(X),flt(M)),X,V),!.
i(potens(cos(X),flt(N)),X,plus(div(mult(V,flt(K)),flt(N)),div(mult(potens(cos(X),flt(K)),sin(X)),flt(N)))):-N1=trunc(N), N2=N-N1, N2=0, M=N-2, K=N-1, i(potens(cos(X),flt(M)),X,V),!.
i(potens(plus(mult(A,X),B),flt(N)),X,div(potens(plus(mult(A,X),B),flt(M)),mult(A,flt(M)))):-N<>-1,M=N+1,const(A,X), const(B,X),!.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.