Funktion Ableiten
-
Hallo,weiß jemand wie ich mit C++ eine mathematische funktion ableiten kann?
z.b: x²+3x-5 oder eine e-funktion?!
soweit ich weiß ist das mit der math.h nicht möglich?!
bitte um schnelle und qualifizierte Antwort!
danke!
-
naja wie du ableitest solltest du wissen oder nicht?
eine funktion musst du dir selber schreiben da sie etwas komplizirter(fu ich weis dass da en rechtschreibfehler ist aber nicht wo :() ist
aber du kannst eine anch folgendems chema schreiben:
float *ableiten(char *funk, int const grad) //funk ist ein string in der die gesamte funktion steht, und der grad ist der funktions grad -> also x³ am anfang wäre grad 3 { float *koef = new float[grad]; koef = teileInKoeffzienten(funk, grad); // ab hier kannst du eigendlich ganz leicht ableiten }
-
Skym0sh0 schrieb:
aber du kannst eine anch folgendems chema schreiben:
Nur falls die Funktion ein Polynom ist. Ansonsten wird das dann doch etwas komplizierter
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum Mathematik verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
audacia schrieb:
Skym0sh0 schrieb:
aber du kannst eine anch folgendems chema schreiben:
Nur falls die Funktion ein Polynom ist. Ansonsten wird das dann doch etwas komplizierter
ok stimmt
-
Am einfachsten wäre es, wenn du nur einzelne Punkte bräuchtest, dann könntest du einfach den Differenzenquotienten näherungsweise bestimmen.
ggf. kannst du natürlich mehrere Punkte damit bestimmen und durch diese die Ableitungsfunktion approximieren.Wenn du das alles in algebraischer Form haben willst, dann wäre ein Computeralgebrasystem das richtige und da würde ich dir auch empfehlen dir ein solches zu Kaufen, die meisten bieten auch die Möglichkeit ihre Funktionen als Biblitohek zu benutzen und ansonsten kommen die alle eh mit einer Programmiersprache daher.
-
Du solltest dir erst einmal überlegen, in welcher Form du die Funktion in C++ representierst. Dann kannst du mit einem einfachen Patternmatcher schon gute Ergebnise erzielen.
Mittels Boost.Spirits Phoenix habe ich zB mal einen differenzierer gebaut, der zur Compilezeit C++-Ausdrücke ableiten konnte. Die zweite Ableitung sah dann zB so aus:
d<2>(arg1 * arg1 + 3 * arg1 + 42)/d<2>(arg1)
Wenn du zur Laufzeit die Funktionen einlesen willst, musst du dich selbst um das parsen und zerlegen in eine geeignete Datenstruktur kümmern. Aber vielleicht reicht es dir auch die Ableitung an einem Punkt einfach numerisch zu bestimmen.