Startwerte Newton-Verfahren (Homotopie-Verfahren)

Hi zusammen,

Kurz-Fassung: Ich löse ein Nicht-Lineares 6D Gleichungssystem mit Hilfe des Newton-Verfahrens. Allerdings habe ich Schwierigkeiten die Anfangswerte sinnvoll zu bestimmen, so dass die Lösung in etwa 8% der Fälle nicht konvergiert. Daher suche ich nach Möglichkeiten entweder die Anfangswerte besser zu wählen, im Falle der Nichtkonvergenz die Anfangswerte besser zu manipulieren oder den Konvergenzradius des Newtonverfahrens zu vergrößern / bzw. ein „zuverlässigeres“ Verfahren zu verwenden (z.b. Homotopie-Verfahren?).

Lang-Fassung:
ich bin leider auf ein Problem gestoßen, das ich analytisch nicht zu lösen vermag (auch nicht mittels Computer, zumindest nicht nach zwei Tagen Rechenzeit). Da ich diese Berechnungen jedoch mittels Java durchführen möchte brauche ich entweder die analytische Lösung oder ein (für mich verständliches :wink: ) numerisches Verfahren.
Jetzt aber erstmal anschauliche das Problem:
Ich habe zwei Objekte A und B, die sich in 2D frei bewegen können. Wir wählen Objekt A als Ursprung des Koordinatensystems, damit es in Selbigem ruht. Wir haben nun aus Ausgangssituation Objekt B das sich im Abstand (x,y) von Objekt A befindet und zu diesem die Relativgeschwindigkeit (vx,vy) hat. Des Weiteren beschleunigt es mit (axB,ayB). Die Fragestellung ist nun:
Wie lange und in welche Richtung muss Objekt A beschleunigen und danach wie lange und in welche Richtung „verzögern“, um Objekt B einzuholen UND die gleiche Geschwindigkeit zu besitzen. Dabei gilt als Randbedingung, dass die maximale Beschleunigung von Objekt A gegeben ist durch axA²+ayA² = aMaxA² (= const. dürfte als Näherung vorerst reichen).
Soweit so gut, Formeln aufstellen ist kein Problem:

\frac{1}{2} \cdot (ax_{A1} \cdot t_{1}^2 + ax_{A2} \cdot t_{2}^2) + ax_{A1} \cdot t_1 \cdot t_2 = x + vx \cdot (t_1 + t_2) + \frac{1}{2} \cdot ax_B \cdot (t_1 + t_2)^2

\frac{1}{2} \cdot (ay_{A1} \cdot t_{1}^2 + ay_{A2} \cdot t_{2}^2) + ay_{A1} \cdot t_1 \cdot t_2 = y + vy \cdot (t_1 + t_2) + \frac{1}{2} \cdot ay_B \cdot (t_1 + t_2)^2

ax_{A1} \cdot t_1 + ax_{A2} \cdot t_2 = vx + ax_B \cdot (t_1 + t_2)

ay_{A1} \cdot t_1 + ay_{A2} \cdot t_2 = vy + ay_B \cdot (t_1 + t_2)

ax_{A1}^2 + ay_{A1}^2 = a_{max}^2

ax_{A2}^2 + ay_{A2}^2 = a_{max}^2

Das ist also mein Gleichungs-System.
Wie schon erwähnt, mit Newton-Verfahren zu lösen funktioniert in etwa 92% der Fälle und wenn er es lösen kann, dann braucht er auch nur akzeptable (34 ± 25) Iterationen für eine relative Genauigkeit von 0.001. Ansonsten ist mein aktuelles Vorgehen, dass, wenn nach 100 Iterationen keine Lösung gefunden wurde die Anfangsbedinungen manipuliert werden und das Verfahren neu gestartet wird. Sollten 2000 Neustarts nicht zur Lösung führen bricht er ab. Dementsprechend ließe sich die Zuverlässigkeit durch ein Anpassen der Zahl der Neustarts und des Grenzwerts für den Abbruch zwar erhöhen, allerdings auf Kosten der Rechendauer, wobei für mich die Schmerzgrenze bei den genannten Werten erreicht ist (Bis zu 150ms bis er ohne Lösung abbricht).
Der sinnvollste Angriffs-Punkt sind somit die Anfangswerte, denn um das System zu lösen benötige ich im Mittel (115 ± 300) Neustarts, so dass sich hier nicht nur die Zuverlässigkeit sondern auch die mittlere Rechendauer deutlich verbessern lässt.

Was meine bisherigen Schätzungen angeht:

Die Zeit-Schätzungen funktionieren relativ gut mit einer mittleren Abweichung von (14 ± 10)% von der Lösung.
Die bekomm ich als Kombination der eindimensionalen Lösungen:

  • X bzw. Y-Richtung wird einfach ignoriert, Lösungssystem wird einfacher, lässt sich analytisch lösen
    -> es ergibt sich daraus ein t1x und ein t1y
    –> Der Zeit-Schätzwert ergibt sich als
    t_{1,0} = \sqrt{t_{1,x}^2 + t_{1,y}^2} .

Das Problem sind eher die Werte für die Beschleunigungen:
Hier ermittle ich eine erste Näherung a0, indem ich die Bewegung von Objekt B ignoriere und nur zum Ort sx gehe. Die Näherung ist allerdings nur gut, wenn s >> v,a. Das ist leider bei nicht immer der Fall, weshalb ich versucht habe das anzupassen aber auf keinen grünen Zweig komme.

Zur Manipulation der Anfangswerte verwende ich immer Zufallswerte zwischen 50% und 150% für die Beschleunigungen bzw. ±10% für die Zeiten.
Wenn also jemand Ideen hat, wie ich die Anfangswerte sinnvoll ermitteln kann, oder herausbekomme welche Anfangswerte ich wie ändern muss um die Konvergenz zu erreichen, dann wär ich dankbar für Hinweise.
Ansonsten bin ich auch offen für alternative Verfahren zum Lösen, allerdings war das Newton-Verfahren bis jetzt das einzige, bei dem ich verstanden habe, wie ich es auf mehrdimensionale Gleichungssysteme anwende.

Zum Abschluss habe ich noch ein vielversprechend klingendes, mir aber leider nicht viel sagendes Verfahren gefunden, das von der Beschreibung her das Newton-Verfahren globalisiert, das Homotopie-Verfahren.
http://de.wikipedia.org/wiki/Homotopieverfahren oder was ich deutlich hilfreicher fand:
http://books.google.de/books?id=l45jSrRdL7AC&pg=PA21…

Allerdings hab ich auch hier das Problem, dass ich zwar den mathematischen Grundgedanken verstehe, aber nicht die geringste Ahnung habe, wie ich das im konkreten Fall tatsächlich anwenden soll.

Ansonsten vielen Dank für’s Mitdenken :smile:

Schigum

Hallo,

Jetzt aber erstmal anschauliche das Problem:
Ich habe zwei Objekte A und B, die sich in 2D frei bewegen
können. Wir wählen Objekt A als Ursprung des
Koordinatensystems, damit es in Selbigem ruht. Wir haben nun
aus Ausgangssituation Objekt B das sich im Abstand (x,y) von
Objekt A befindet und zu diesem die Relativgeschwindigkeit
(vx,vy) hat. Des Weiteren beschleunigt es mit (axB,ayB). Die
Fragestellung ist nun:
Wie lange und in welche Richtung muss Objekt A beschleunigen
und danach wie lange und in welche Richtung „verzögern“,

Bewegungsrichtung von A und B können also anfangs verschieden sein.
Kann Objekt A seine Richtung ändern ? Beliebig ? Kurve ?
Also der Geschwindigkeitsverktor soll am Treffpunkt in allen
Komponenten gleich sein - oder nur in der Größe ?
Wenn nicht, welche „gleiche“ Geschwindigkeit wird hier definiert ?
Im Rahmen des Grenzwertes könnte A jede positive und negative
Beschleunigung annehmen ?.Dies sieht für mich (vorerst) nach vielen
Lösungen aus - kann mich aber irren.
Die iterative Lösung des Problems kommt auf die Feststellung der
gleichen Zeit hinaus.Da vorige Fragen für mich offen sind, kann ich
mich in das Problem noch nicht vertiefen.

Ein Gedanke von mir ist - den Zielpunkt als Koordinatenursprung
zu definieren (Richtung B = X-Achse) und den bekannten Y-Abstand des
Startpunktes von A zu suchen.(Koordinatentransformation !)
(nur so ein Gedanke von mir auf die Schnelle - ich würde so vorgehen)
Gruß VIKTOR

Hallo,

Bewegungsrichtung von A und B können also anfangs verschieden
sein.

Natürlich, die prinzipielle Ausgangssituation ist ein Objekt A mit Geschwindigkeit vA und ein Objekt B mit vB, mit beliebigen Richtungen und Beträgen, wobei sich dies auch auf ein System reduzieren lässt, in dem A ruht und nur Objekt B bewegt wird.

Kann Objekt A seine Richtung ändern ? Beliebig ? Kurve ?

Ich muss gestehen, ich verstehe die Frage nicht ganz. Objekt A beschleunigt durchgehend mit der ermittelten Beschleunigung. Bis zum Zeitpunkt t1, dann macht die Beschleunigung einen Sprung auf den anderen ermittelten Wert.

Also der Geschwindigkeitsverktor soll am Treffpunkt in allen
Komponenten gleich sein - oder nur in der Größe ?
Wenn nicht, welche „gleiche“ Geschwindigkeit wird hier
definiert ?

Er soll wirklich in allen Komponenten gleich sein, Richtung und Betrag.

Im Rahmen des Grenzwertes könnte A jede positive und negative
Beschleunigung annehmen ?.Dies sieht für mich (vorerst) nach vielen
Lösungen aus - kann mich aber irren.

Oh, verdammt, das habe ich tatsächlich vergessen explizit dazu zu schreiben, wobei es zumindest durch die Formeln impliziert wird. Die (Gesamt-)Beschleunigung ist immer maximal, lediglich die Richtung ist zu ermitteln (Schnellst mögliches Abfangen). Ansonsten gäbe es definitiv unendlich viele Lösungen. Mit der genannten Bedingung allerdings bleiben nur noch 6 Lösungen, von denen nur eine physikalisch sinnvoll ist (t1 und t2 positiv und reell).

Die iterative Lösung des Problems kommt auf die Feststellung der
gleichen Zeit hinaus.Da vorige Fragen für mich offen sind, kann ich
mich in das Problem noch nicht vertiefen.

Mh, was meinst du mit „der gleichen Zeit“?

Ein Gedanke von mir ist - den Zielpunkt als Koordinatenursprung
zu definieren (Richtung B = X-Achse) und den bekannten Y-Abstand des
Startpunktes von A zu suchen.(Koordinatentransformation !)
(nur so ein Gedanke von mir auf die Schnelle - ich würde so vorgehen)

Der Zielpunkt ist der Treffpunkt von A und B. Dieser liegt irgendwo auf der Bahnkurve von Objekt B, mehr lässt sich dazu allerdings nicht sagen, solange t1 und t2 nicht bekannt sind.

Gruß,
Schigum

Hallo,

Bewegungsrichtung von A und B können also anfangs verschieden
sein.

Natürlich,

Kann Objekt A seine Richtung ändern ? Beliebig ? Kurve ?

Ich muss gestehen, ich verstehe die Frage nicht ganz.

aber unten bestätigst Du am Treffpunkt für A zu B:

Er soll wirklich in allen Komponenten gleich sein, Richtung
und Betrag.

Wenn also die Bewegungsrichtungen von A und B am Treffpunkt gleich
sind, dann muß, wenn die Ausgangslage unterschiedlich sein kann ,
Objekt A seine Richtung dann ändern, B angleichen, entweder durch eine
oder mehrere Knicke in der Bahn oder durch eine Kurve.
Was ist da nicht zu verstehen ?
Wenn dieser Widerspruch nicht geklärt ist, kann keine Aussage gemacht
werden.

Die (Gesamt-)Beschleunigung ist immer maximal, lediglich
die Richtung ist zu ermitteln (Schnellst mögliches Abfangen).
Ansonsten gäbe es definitiv unendlich viele Lösungen.

Also was nun.
Wenn die Richtung von B fest gelegt ist, welche Richtung von A ist dann zu ermitteln wenn am Treffpunkt beide Richtungen gleich sein sollen ? (vorausgesetzt es gibt nur geradlinige Bahnen).
Oder sind die Richtungen am Treffpunkt doch verschieden ?

Die iterative Lösung des Problems kommt auf die Feststellung der
gleichen Zeit hinaus.

Mh, was meinst du mit „der gleichen Zeit“?

A und B haben die gleiche Flugzeit.Bei computergestützten iterativen
Lösungen könnte man bei jedem „Schritt“ die Zeit vergleichen
(eigene Programmierung wenn „Rezepte“ nicht mehr zuzuordnen sind)
unter schrittweiser Veränderung der anderen Parameter, wobei
Abhängigkeiten zusammengefaßt werden können.
z.Bsp.vA=vB am Zielpunkt.

Ein Gedanke von mir ist - den Zielpunkt als Koordinatenursprung
zu definieren (Richtung B = X-Achse) und den bekannten Y-Abstand des
Startpunktes von A zu suchen.(Koordinatentransformation !)
(nur so ein Gedanke von mir auf die Schnelle - ich würde so vorgehen)

Der Zielpunkt ist der Treffpunkt von A und B. Dieser liegt
irgendwo auf der Bahnkurve von Objekt B, mehr lässt sich dazu
allerdings nicht sagen, solange t1 und t2 nicht bekannt sind.

Mit „Kurve“ meinst Du doch eine Gerade.
Es ist rationeller den Zielpunkt als Koordinaten-Nullpunkt zu
begreifen (s.oben).
Doch dazu eventuell später - wenn obige Mißverständnisse ausgeräumt
sind.
Eine Skizze ist oft hilfreich, für beide Seiten.
Gruß VIKTOR

Hiho,

nur kurz als Beispiel, vielleicht wird es dann klarer:

Für die Anfangswerte:
sx -> 10, sy -> 20, vx -> 10, vy -> 10, aBx -> 1, aBy -> -2, aMax -> 5

ergibt sich die Lösung:
a1x -> 4.57188, a1y -> 2.02432, a2x -> -1.22052, a2y -> -4.84874,
t1 -> 5.06927, t2 -> 3.65086

Die Bahnkurven der beiden Objekte sehen dann (vom Startpunkt bis zum Treffpunkt) wie folgt aus:
http://img828.imageshack.us/img828/1872/bahnkurvenbe…
Im Ursprung startet Objekt A, bei (10,20) startet B. A beschleunigt anfangs in Richtung (a1x,a1y) und ab dem Zeitpunkt t2 beschleunigt A in Richtung (a2x,a2y). B beschleunigt durchgehend mit (aBx,aBy).

Die Bahn beschreibt natürlich eine Kurve, immerhin wirken Beschleunigungen die nicht zwangsläufig parallel zur Geschwindigkeit sind.

Hoffe das hilft ein wenig.

Ansonsten eine gute Nacht,
Schigum

Hallo,

Die Bahnkurven der beiden Objekte sehen dann (vom Startpunkt
bis zum Treffpunkt) wie folgt aus:
http://img828.imageshack.us/img828/1872/bahnkurvenbe…
Die Bahn beschreibt natürlich eine Kurve, immerhin wirken
Beschleunigungen die nicht zwangsläufig parallel zur
Geschwindigkeit sind.

entschuldige bitte, meine Einlassungen dazu bisher sind Kappes.
Natürlich sind vx/vyax/ay weder für die Bahnkurve von B noch
für A ab dem dem Beschleunigungswechsel.(hab ich übersehen)
Die beiden Kurven sind praktisch wie zwei Wurfparabeln, welche
am Berührungpunkt die gleiche Tangente haben.
Hierzu (Deiner speziellen Fragestellung)kann ich leider keinen
qualifizierten Beitrag leisten.
Ob es doch Sinn machen würde den Zielpunkt als Koordinatenursprung
zu betrachten (vy=0, vxA=vxB) und die Startpunkte zu suchen (tA=tB)
wäre trotzdem zu überlegen.(ich weiß es auch nicht)
Objekt B beschreibt ja eine reine Wurfparabel, Objekt A eine
Wurfparabel bis zum Beschleunigungswechsel - dann Gerade.
(vom Zielpunkt gesehen)
Danke, daß Du Dir mit meinem „Unverständnis“ so Mühe gemacht hast.
Gruß VIKTOR