Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %Berechnet das Taylorpolynom zweiten Grades ein der stelle 0
- % Taylor aufruf:
- taylor2(Y,X,E) :- tfunc(Y,X,O),s(O,E). %Eigabeformel nimmt die Formel und den zu differenzierenden Wert an
- %%% Konstruiere Hauptfunktion %%%
- tfunc(Y,X,G0+G1*x+G2*x^2/2) :- nulltesglied(Y,X,G0),erstesglied(Y,X,G1),zweitesglied(Y,X,G2).
- nulltesglied(Y,X,E) :- ein(Y,X,E).
- erstesglied(Y,X,E) :- ds(Y,X,A),ein(A,X,E).
- zweitesglied(Y,X,E) :- ds(Y,X,D0),ds(D0,X,D1),ein(D1,X,E).
- ein(A,X,E) :- rekursivertaylorwert(A,X,O),nulltaylorwert(O,X,O1),s(O1,E). % Der nullte Taylorwert wird eingesetzt und mit dem Rest verbunden
- %%% Tayloerwerte werden Rekursiv gesetzt %%%
- rekursivertaylorwert(F+Y,X,EW1+EW2) :- rekursivertaylorwert(F, X, E1),nulltaylorwert(E1,X,EW1),rekursivertaylorwert(Y, X, E2),nulltaylorwert(E2,X,EW2).
- rekursivertaylorwert(F*Y,X,EW1*EW2) :- rekursivertaylorwert(F, X, E1),nulltaylorwert(E1,X,EW1),rekursivertaylorwert(Y, X, E2),nulltaylorwert(E2,X,EW2).
- rekursivertaylorwert(F-Y,X,EW1-EW2) :- rekursivertaylorwert(F, X, E1),nulltaylorwert(E1,X,EW1),rekursivertaylorwert(Y, X, E2),nulltaylorwert(E2,X,EW2).
- rekursivertaylorwert(F/Y,X,EW1/EW2) :- rekursivertaylorwert(F, X, E1),nulltaylorwert(E1,X,EW1),rekursivertaylorwert(Y, X, E2),nulltaylorwert(E2,X,EW2).
- rekursivertaylorwert(X,_,X).
- %%% Der Taylorwert wird einzeln auf null gesetzt (X=0) %%%
- nulltaylorwert(sin(X+Y),X,E) :- E is sin(Y).
- nulltaylorwert(-sin(X+Y),X,E) :- E is -sin(Y).
- nulltaylorwert(cos(X+Y),X,E) :- E is cos(Y).
- nulltaylorwert(-cos(X+Y),X,E) :- E is -cos(Y).
- nulltaylorwert(sin(X),X,0).
- nulltaylorwert(-sin(X),X,0).
- nulltaylorwert(cos(X),X,1).
- nulltaylorwert(-cos(X),X,-1).
- nulltaylorwert(X^N,X,0) :- number(N).
- nulltaylorwert(N*X^N,X,0) :- number(N).
- nulltaylorwert(N^X,X,1) :- number(N).
- nulltaylorwert(X,X,0).
- nulltaylorwert(X,X,0).
- nulltaylorwert(X,_,X).
- %%% Trigonomisch verkettete Funktionsregeln %%%
- diff(sin(Y),X,IN*cos(Y)) :- X\=Y, diff(Y,X,IN).
- diff(cos(Y),X,IN*(-sin(Y))) :- X\=Y, diff(Y,X,IN).
- diff(tan(Y),X,IN*sin(Y)/cos(Y)) :- X\=Y, diff(Y,X,IN).
- %%% Produktregel %%%
- diff(X1*X2,X,X1*Y2+X2*Y1) :- diff(X1,X,Y1),diff(X2,X,Y2),
- not(number(X1)),not(number(X2)).
- %%% Haupt Regeln %%%
- diff(X,X,1).
- diff(C,X,0) :- number(C), X\==C.
- diff(C*X,X, C) :- number(C), X\==C.
- diff(-F,X,-DF) :- diff(F,X,DF).
- %%% Potenz Regeln %%%
- diff(X^N,X,N*X^Z):- Z is N-1, number(N).
- diff(K*X^N,X,K*N*X^Z):- Z is N-1, number(N), number(K).
- diff(e^X,X,e^X).
- diff(e^N*X,X,N*e^N*X):- number(N).
- %%% Verkettungsregeln für Polynome mit Potenzen%%%
- diff(P^N, X, DP*(P^Z)*N) :- P\=X, Z is N-1, diff(P,X,DP).
- %%% Summieren und Differenzieren %%%
- diff(A+B,X,DFX+DFY) :- diff(A,X,DFX),diff(B,X,DFY).
- diff(A-B,X,DFX-DFY) :- diff(A,X,DFX),diff(B,X,DFY).
- %%% Trigonometrische Funktionen %%%
- diff(sin(X),X,cos(X)).
- diff(cos(X),X,-sin(X)).
- diff(tan(X),X,sin(X)/cos(X)).
- %%% Termvereinfachung %%%
- simplification0(X*X,X^2) :- not(number(X)).
- simplification0(1*X,X).
- simplification0(X*1,X).
- simplification0(X/1,X).
- simplification0(0+X,X).
- simplification0(X+0,X).
- simplification0(0*_,0).
- simplification0(_*0,0).
- simplification0(0/_,0).
- %%% Kürzung %%%
- simplification0(N+V,X) :- number(N),number(V), X is N+V.
- simplification0(N*X*V,E) :- number(N),number(V), Z is N*V, simplification0(Z*X,E).
- simplification0(N*X/V,E) :- number(N),number(V), Z is N/V, simplification0(Z*X,E).
- simplification0(N*X^1,N*X) :- number(N).
- %%% Ende Main %%%
- simplification0(X,X).
- %%% Simplifizierung %%%
- s(A+B,X) :- s(A,E1),s(B,E2),simplification0(E1+E2,X).
- s(A-B,X) :- s(A,E1),s(B,E2),simplification0(E1-E2,X).
- s(A*B,X) :- s(A,E1),s(B,E2),simplification0(E1*E2,X).
- s(A/B,X) :- s(A,E1),s(B,E2),simplification0(E1/E2,X).
- s(X,X).
- % abfrage fuer ableitung
- ds(F,X,DF) :- diff(F,X,S),s(S,REC),simplification0(REC,DF).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement