Bei meinen Versuchen in dieser Richtung war es vorteilhaft, für alle Operatoren die allgemeine Ableitungsregel aufzustellen und zu implementieren. Für Potenzen sähe das so aus:
Code:
f(x) = a^b
= e^(b * ln a)
f'(x) = e^(b * ln a) * (b * ln a)'
= a^b * (b' * ln a + b * 1/a * a')
= ln a * a^b * b' + b * a^b / a * a'
= ln a * a^b * b' + b * a^(b - 1) * a'
Das ist für alle Arten von Potenzen gültig. Beispiele:
Code:
f(x) = x^3
f'(x) = ln x * x^3 * 3' + 3 * x^(3 - 1) * x'
= ln x * x^3 * 0 + 3 * x^(3 - 1) * 1
= 3 * x^2
Code:
f(x) = 3^x
f'(x) = ln 3 * 3^x * x' + x * 3^(x - 1) * 3'
= ln 3 * 3^x * 1 + x * 3^(x - 1) * 0
= ln 3 * 3^x
Damit das effektiv anwendbar ist, muß der Parser aber vereinfachen können, sonst sind die Ergebnisse etwas unübersichtlich
Falls dich meine Implementation davon interessiert (C++), kann ich sie dir gerne mal schicken.