mathematische methoden zur minimierung von integralen (kurvenanpassung usw.)

Status
Für weitere Antworten geschlossen.

hold_breal

New Member
hi everybody :)

das hier ist meine erste post :)

ach, bevor ich es vergesse. ich hatte ein konto hier vor ca. 2 wochen erstellt, konnte mich mit konqueror 3.4.2 nicht anmelden. komisch, gelle? jetzt funktionierts aber mit firefox.

also, ich frage mich, ob jemand mir ein paar denkanstoesse geben kann bezueglich der kurvenanpassung / minimierung von integralen.

zur zeit schreib ich eine software in c womit man den pfad einer raumsonde ausrechnen kann in dem man den pfad der längsten eigenzeit findet. dies bedeutet, dass ich (in 2-dimensionen sagen wir mal) ein ziemlich grosses 2-dimensionelles array haben wobei jeder punkt so aussieht: [ x, y, eigenzeit, echte zeit ].

die änderung in eigenzeit von einem element zum naechsten laesst sich numerisch mit den x-,y- und echtzeit-werten errechnen.

um einen besseren pfad zu finden, betrachte ich die elemente, [i+1] und [i+2], und variiere die x- und y-werte vom element[i+1] und berrechne die neue eigenzeitaenderung. falls sie groesser ist, dann behalte ich die aenderung und mache weiter.

insgesamt wird diese schleife durchlaufen, bis kein punkt mehr (um einen gewissen minimal betrag) verschoben werden musste. dann wird die antwort rausgespuckt.

zur zeit funktioniert die methode einigermassen, wird aber schnell langsam. damit ihr ein gefühl für die grössenordnungen bekommt, an meinem amd64, wenn ich den gesamtpfad in 1000 punkte zerlege, und zwei punkte nah der erdoberflaeche nehme (also wir erwarten eine ziemlich gute parabel, die auch rauskommt), dann dauert die berrechnung vielleicht 10 minuten, wobei die schleife um die 300 000 mal durchlaufen werden muss.

hat jemand jemals was aehnliches gemacht, oder kennt sich jemand damit aus?

aehnlich peinlich ist es auch bei der kurvenanpassung. hier habe ich eine aehnliche methode geschrieben, wodurch die summe der quadrate der abweichung summiert und minimiert werden. meine methode braucht vielleicht 10 mal so viele iterationen wie gnuplot...

(vielleicht sollte ich halt den quellcode von gnuplot durchsuchen.)

eine andere frage. ich habe neulich daran gedacht, auch eine graphische darstellung zu versuchen und habe angefangen, X11-programmierung zu lernen. schnell wurde es mir klar, dass widgetsets eine gute idee sind. da ich eher in C programmiere als in C++, dachte ich sofort, dass GTK die bessere wahl wäre und habe mit dem berühmten GTK-tutorial angefangen. leider wurde es mir dadurch klar, dass KDE manchmal echte probleme damit hat. und das ergebnis läuft auch nicht auf meinem kleinen, alten laptop (fluxbox windowmanager z.z.). jetzt kommt also die frage. was für einen widget set und windowmanager würdet ihr für alte hardware empfehlen?

danke im voraus :)

hold
 

Rain_Maker

Administrator
Teammitglied
AW: mathematische methoden zur minimierung von integralen (kurvenanpassung usw.)

hold_breal schrieb:
hi everybody :)

das hier ist meine erste post :)

ach, bevor ich es vergesse. ich hatte ein konto hier vor ca. 2 wochen erstellt, konnte mich mit konqueror 3.4.2 nicht anmelden. komisch, gelle? jetzt funktionierts aber mit firefox.
Das hat etwas mit den Cookie-Einstellungen von Konqui zu tun. Gehe mal ins KDE-Kontrollzentrum und lösche unter Sicherheit&Privatsphäre -->
Privatsphäre den Browsercache sowie die Cookies. Ausserdem musst Du der Domain root-forum.org in den Browsereinstellungen das Setzen von Cookies erlauben.

Also, ich frage mich, ob jemand mir ein paar denkanstoesse geben kann bezueglich der kurvenanpassung / minimierung von integralen.

zur zeit schreib ich eine software in c womit man den pfad einer raumsonde ausrechnen kann in dem man den pfad der längsten eigenzeit findet. dies bedeutet, dass ich (in 2-dimensionen sagen wir mal) ein ziemlich grosses 2-dimensionelles array haben wobei jeder punkt so aussieht: [ x, y, eigenzeit, echte zeit ].

die änderung in eigenzeit von einem element zum naechsten laesst sich numerisch mit den x-,y- und echtzeit-werten errechnen.

um einen besseren pfad zu finden, betrachte ich die elemente, [i+1] und [i+2], und variiere die x- und y-werte vom element[i+1] und berrechne die neue eigenzeitaenderung. falls sie groesser ist, dann behalte ich die aenderung und mache weiter.

insgesamt wird diese schleife durchlaufen, bis kein punkt mehr (um einen gewissen minimal betrag) verschoben werden musste. dann wird die antwort rausgespuckt.


Also eine Art Iteration bis zum Erreichen eines Minimums.


zur zeit funktioniert die methode einigermassen, wird aber schnell langsam. damit ihr ein gefühl für die grössenordnungen bekommt, an meinem amd64, wenn ich den gesamtpfad in 1000 punkte zerlege, und zwei punkte nah der erdoberflaeche nehme (also wir erwarten eine ziemlich gute parabel, die auch rauskommt), dann dauert die berrechnung vielleicht 10 minuten, wobei die schleife um die 300 000 mal durchlaufen werden muss.

hat jemand jemals was aehnliches gemacht, oder kennt sich jemand damit aus?

aehnlich peinlich ist es auch bei der kurvenanpassung. hier habe ich eine aehnliche methode geschrieben, wodurch die summe der quadrate der abweichung summiert und minimiert werden. meine methode braucht vielleicht 10 mal so viele iterationen wie gnuplot...

(vielleicht sollte ich halt den quellcode von gnuplot durchsuchen.)
Da ich von Programmierung soviel Ahnung habe, wie eine Kuh vom Eier legen, muß ich mir hier leider einen Ratschlag verkneifen.

eine andere frage. ich habe neulich daran gedacht, auch eine graphische darstellung zu versuchen und habe angefangen, X11-programmierung zu lernen. schnell wurde es mir klar, dass widgetsets eine gute idee sind. da ich eher in C programmiere als in C++, dachte ich sofort, dass GTK die bessere wahl wäre und habe mit dem berühmten GTK-tutorial angefangen. leider wurde es mir dadurch klar, dass KDE manchmal echte probleme damit hat. und das ergebnis läuft auch nicht auf meinem kleinen, alten laptop (fluxbox windowmanager z.z.). jetzt kommt also die frage. was für einen widget set und windowmanager würdet ihr für alte hardware empfehlen?

danke im voraus :)

hold
Ich denke, daß Du dich hier wohl entscheiden musst (ohne viel von der Materie selbst zu kennen). GTK(1) sieht zwar nicht besonders "schnieke" aus, aber es erfüllt seinen Zweck auch auf älterer Hardware.

Ich habe mir einige Icon/Widget-Sets (hoffentlich bringe ich da jetzt nichts durcheinander, siehe Kuh und Eier legen) installiert, um meine GTK-Anwendungen unter KDE anzupassen.

Es gibt ein Paket, daß gtk-qt-engine heisst, womit man das unter SUSE/Ubuntu und dann auch sicher unter anderen Distros einstellen kann. Dort sind einige Sets dabei, die ganz nett aussehen, z.B. die ganzen XFCE-styles.

VLC verwendet ein Set, daß glaube ich *nachgugg* "wxWidgets" heisst. Das wäre vielleicht auch eine Alternative.

Trotzdem: Vorsicht mit meinen Vorschlägen, gefährliches Halbwissen.

Greetz,

RM
 

Jacko

Moderator
AW: mathematische methoden zur minimierung von integralen (kurvenanpassung usw.)

Hallo hold!

ad anmelden:
Hab hier mal irgendwo gelesen, dass ein User auch schon mal Probleme mit der Anmeldung hatte, das lag wohl an Cookies ... Aber wenns ja jetzt klappt ist ja alles in Butter, oder? :)

ad raumsonde:
Was Du beschreibst scheint mir zunächst ja nur ein Minimierungsproblem zu sein, richtig?
Ohne jetzt genau zu wissen, ob es sinnvoll ist, da ich Dein Problem nicht näher kenne, vielleicht kannst Du das ganze mit einem Newton-Verfahren lösen.
Dazu eine geschickte LineSearch Methode und die Rechenzeit sollte stark sinken ...
Die Matrix (dein 2dim Array) ist wohl recht groß, aber ist sie auch voll besetzt? Falls nein, versuche mal Dich mit dem Stichworte Sparse-Matrizen auseinander zu setzen.
Überhaupt, finde ich 10 Minuten Rechenzeit für komplexe Systeme nicht weiter überraschend oder gar schlimm.
Allgemein ist dies aber kein Problem der verwendeten Programmiersprache/Software oder ähnlichem.
Du kannst natürlich spezielle mathematische Programmierumgebungen nutzen, einen Rechenzeitgewinn wirst Du dadurch nicht erhalten, evtl. kannst Du ein paar Routinen nutzen, aber häufig programmieren Mathematiker auch in C(++) oder andren ("normalen") Programmiersprachen.

Damit Dir wirklich jemand helfen kann, solltest Du das Problem vielleicht mal näher beschreiben. Ich glaube, ich habe jetzt auch genug rum geraten... oder?

ad alte hardware:
was für einen widget set und windowmanager würdet ihr für alte hardware empfehlen?
Hm, schau mal hier, da haben wir uns über alte Hardware und Linux schon unterhalten, vielleicht ist da was für Dich dabei:
http://www.pc-forum24.de/showthread.php?t=365

Grüße Jacko

PS: Sorry für das doppelte ... RM war wohl schneller ...

Anmerkung (RM) Passt schon ;)
 

Jacko

Moderator
AW: mathematische methoden zur minimierung von integralen (kurvenanpassung usw.)

Hallo hold!

Wie immer kommen mir die besten Idee entweder Nachts oder beim Duschen, diesmal war wohl ersteres der Fall ;)

Nun, also meine gestrige Idee Richtung Newton-Verfahren war nicht schlecht, nur man sollte das Rad ja nicht allzu oft neu erfinden.

Das richtige Stichwort für die Minimierungsaufgabe heißt SQP Methode (Sequential Quadratic Program).
Google mal danach, da solltest Du einiges finden.

So nebenbei steht das Quadratic im Namen für die quadratische Konvergenz des Verfahrens (unter gewissen Voraussetzungen *blabla*). Umgangssprachlich könnte man das als sehr schnelles Verfahren beschreiben.

Von dieser tollen SQP Methode gibts auch ein spezielle Version für sog. "nonlinear least squares", diese wird oft auch als (verallgemeinerte) Gauß-Newton-Methode bezeichnet.
Das sollte so ungefähr auf Dein zweites Problem passen.

So, das wars erstmal von mir, wenn Du weitere Fragen zu meinen Vorschlägen hast, vielleicht einfach per PN, ich bin mir nicht sicher, ob das hier sonst nicht den Rahmen des allg. Interesses sprengt...

Grüße Jacko
 
Status
Für weitere Antworten geschlossen.
Oben