1.) Vielleicht findest du bei google was wenn du nach "symbolischem Differenzieren" oder so was in der Art suchst.
2.) Wie machenes denn die anderen Leute, die das lösen sollen?
3.) Wenns nur einfache Sachen lösen soll, kannst du ja probieren dem Programm die Rechenregeln "beizubringen":
Das Programm erwartet einen Ausdruck der Form
(((a^4+5*a^2)/(a^3+7*a)),a) und wendet darauf die Rechenregeln an:
1.) es durchsucht den Ausdruck nach Bruchstrichen und Multiplikationen, teilt den Ausdruck solange bis man auf einfache Terme kommt und wendet die einzelnen Regeln an:
f-->(a^4+5*a^2)
g-->(a^3+7*a)
h-->a^4
i-->5*a^2
f'=h'+i'=4*a^3+10*a
j-->a^3
k-->7*a
g'=j'+k'3*a^2+7
Auf das ganze wird dann die Quotientenregel angewendet:
(f'*g-f*g')/g^2
So in der Art halt.
Das müsste sich eigentlich ganz gut rekursiv programieren lassen, so in der art:
diff(string func, char var){
if (func.enthält('/')!=-1) teile func bei '/' und rufe mit beiden teilen diff() auf
usw.
Es muss dann nur wissen, daß man beim Ableiten die Hochzahl um 1 verringert und mit der Zahl multipliziert, und das eine Zahl abgeleitet 0 ergibt. Dann kann man i z.B. auch nach der Produktregel behandeln:
(5*a^2)'=0*a^2+5*2*a=10*a
Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
|