prolog derivate |
May 30 |
derivative(X,X,1) :- !. derivative(C,X,0) :- atomic(C), !.
% (u + v)' = u' + v' derivative(F+G,X,Fd+Gd) :- !, derivative(F,X,Fd), derivative(G,X,Gd).
% (u * v)' = u' * v + u * v' derivative(F*G,X,F*Gd+G*Fd) :- !, derivative(F,X,Fd), derivative(G,X,Gd).
% (u^v)' = u^v * (log u * v + u' * u^(-v)) derivative(F^G,X,F^G*(log(F)*Gd+Fd*F^(-1)*G)) :- !, derivative(F,X,Fd), derivative(G,X,Gd).
и так далее, например, для сложной функции -
derivative(cos(W),X,-sin(W)*Z) :- derivative(W,X,Z).
пример вызова:
?- derivative(cos(3x+5),x,D).
только все же непонятно, зачем там отсечение - наверное подразумевается, что при падении одного из предикатов дифференциирования падает весь комплексный предикат



