Hallo zusammen! kennt Jemand da eine c++\c Library, mit ihre Hilfe man die Extermstellen einer Funktion auf einer bestimmten Interval bestimmen kann. ZB. f(x)=x*sin(2*x)+2 ; Definitionsbereich von x= [1,5]; hier würde ich die maximale und die minimale Wert von f(x) für x=[1 bis 5] bestimmen. ich habe schön eine Library gefunden, mit der ich die Ableitung von der Funktion berechnen kann aber leider kann ich da die Definitionsbereich nicht eingrenzen. Danke schönmal im Voraus. Gruß Ctol
cTol schrieb: > ich habe schön eine Library gefunden, mit der ich die Ableitung von der > Funktion berechnen kann Die hilft dir so auch noch nicht recht viel. Denn wenn du die Ableitung hast, müsstest du die 0 setzen und dann diese Gleichung nach x auflösen. Und das wiederrum (eine Gleichung auflösen) ist nicht so trivial. > aber leider kann ich da die Definitionsbereich > nicht eingrenzen. Du brauchst eine Funktionalität, die dir eine Formel auswerten kann! Dann lässt du mit einem x deinen Definitionsbereich überstreichen und suchst denjenigen x-Wert (durch Probieren) heraus welcher den maximalen Funktionswert ergibt, wenn er in die Formel eingesetzt wird. Alternativ kannst du auf dieselbe Art natürlich auch in der Ableitung nach 0-Stellen suchen, wobei da wiedrrum die Randpunkte des Definitionsbereiches gesondert behandelt werden müssen. Denn dort ist die Ableitung nicht notwendigerweise 0, trotzdem kann sich dort ein Minimum/Maximum in diesem Definitionsbereich befinden.
Ich nehme an, die Funktion ist Dir erst zur Laufzeit bekannt? Ansonsten wärs ja einfach ;-). * die Praktiker-Methode: Erstelle ein approximierendes Polynom für Deine Funktion im gesuchten Bereich mit der gewünschten Genauigkeit. Dieses kann man dann mit einem Numerik-Paket exakt(!) ableiten und die Nullstellen sehr genau bestimmen. Die direkte Berechnung der Ableitung ist numerisch heikel und mit großem Fehler behaftet. Bibliotheken: In GSL: http://www.gnu.org/s/gsl/manual/html_node/Interpolation-Example-programs.html http://www.gnu.org/s/gsl/manual/html_node/Roots-of-Polynomials-Examples.html In MathNetNumerics: http://mathnetnumerics.codeplex.com/ * die Geld-Spielt-Keine-Rolle-Methode: Mathematica und Co. als Bibliothek aufrufen, die Funktion übergeben, von Mathematica (oder einem anderen CAS) das Problem lösen und auf Rückgabe warten.
sowas hab ich "früher" immer auf meinem Basic-Taschenrechner geschrieben..;-) schwierig ist ja "alle" min/maxima zu finden (weil man vorher nicht weiß mit welcher genauigkeit man suchen muss...) ausserdem gehen die ja auch gerne mal gegen unendlich ;-) fehlen tut einem in C++ mal hauptsächlich eine expression evaluator/parser der dir die formal (ist ja nur ein string) auswertet (das ist halt der vorteil von interpretierten sprachen, dass das einfach dabei war) das würd ich als 1. suchen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.