Entwickler-Ecke
Algorithmen, Optimierung und Assembler - Algo für das Lösen von x-beliebigen Gleichungen
ImbaPanda - Mi 02.01.08 19:23
Titel: Algo für das Lösen von x-beliebigen Gleichungen
Also mein Problem sieht wie folgt aus, ich habe diverse Funktionen wie zB:
f(x)=x^2+4x
Nun will ich herausfinden wann dieser Term null wird, ich setze ihn also gleich null
x^2+4x=0
Bei solch einfachen Funktionen ist das ganze kein Problem, aber bei etwas komplizierteren Funktionen bleib ich da stecken:
zB: f(x)=(ln(x)+4x) / sin(x^2)
Kennt jemand zufällig einen Algorithmus bzw. ein Verfahren mit dem man derartige Gleichungen lösen kann?
Schonmal danke für alle Ideen
alzaimar - Mi 02.01.08 19:31
Da gibt es diverse Verfahren. such mal nach 'Newton', 'Regula Falsi'. Regula Falsi ist sehr leicht zu implementieren, allerdings benötigt man zwei X-Werte (X1 und X2), wobei f(x1) < 0 und f(x2) > 0 sein muss. Oder umgekehrt.
Beim Newton-Verfahren benötigst du die 1.Ableitung, die Du jedoch sehr leicht ausrechnen kannst. Z.B. so
Quelltext
1:
| f'(x) = [f(x+dx) - f(x) ] / dx |
Wobei dx irgendwas Kleines sein sollte. 10^-5 z.B. Kommt aber auf die Funktion an.
jaenicke - Mi 02.01.08 23:49
Was die Ableitung angeht: Eine symbolische Ableitung ist eigentlich relativ einfach, ich habe das selbst schon in Delphi implementiert (genau wie die ein wenig kompliziertere Integration), und es gibt dafür auch Freeware Quelltexte für Delphi, zum Beispiel hier:
http://www.aidaim.com/products/free_components/difr_spc.php
Und damit kannst du ja dann das Newton-Verfahren durchführen. Units mit Parsern zur Auswertung von Mathematischen Ausdrücken gibt es ja fast wie Sand am Meer, dies hier ist ein bei vielen Auswertungen der selben Funktion sehr schnelles Exemplar:
http://www.delphipraxis.net/topic49639.html
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!