Lot auf Ellipse
-
@EricC:
danke erstmal für den Ansatz.Beim Nchvollziehen komme ich aber bei d^2' auf
- anderes Vorzeichen im ersten Teilterm
- den halben Wert im 2. Teilterm
??? Ev. bin ich aber nur zu bl*** ???Mein Hauptproblem geht aber danach erst los:
- Wie knn ich die Gleichung nach x auflösen?
Da hab ich ja immer Summen von Quadraten IN Wurzen drin.
Genau dort hab ich das eigentliche ProblemÜbrigens: Differenzieren habe ich jahrelang gelernt, ist aber schon über 20 Jahre her.
@Taurin:
auch Dir sei gedankt. Dein Ansatz sieht besser verwendbar aus. Aber:
- Ich kenne die Lagrange- Funktion nicht
- Du sagst, 3 Gleichungen und 3 Unbekannte
dann sollte das ja berechenbar seinaber es gibt doch 2 x Lambda (mit x bzw y) ???
Darf ich die gleichsetzen?Dann bekomme ich nämlich eine schöne quadratische Funktion.
Die sollte sich lösen lassen für ein (gemeinsames) Lambda.- Der Rest sollte dann kein Problem sein.
Thx
Frank
-
Beim Nchvollziehen komme ich aber bei d^2' auf
- anderes Vorzeichen im ersten Teilterm
- den halben Wert im 2. Teilterm
??? Ev. bin ich aber nur zu bl*** ???nö, bist du nicht.
d2´=-2*(xp-x)+2*(yp-b/x*(a2-x2)0.5)*b/a*(a2-x2)^-0.5*x heißt es korrekt.
das vorzeichen im ersten term kommt von der inneren ableitung (kettenregel).
aber meinen ansatz muß man in die tonne befördern, da ich gestern nacht der irrigen annahme war, dass sich die 0 gesetzte ableitung auf eine quadratische funktion umformen läßt. das war falsch. die nullstelle ausrechnen ist alles andere als lustig. eine exakte lösung gibt es nicht. da müßte man dann wieder mit näherungswerten rechnen, was du ja nicht willst.- Ich kenne die Lagrange- Funktion nicht
doch sie steht in seinem text. er hat sie auch schon für dich partiell differenziert.
aber es gibt doch 2 x Lambda (mit x bzw y) ???
Darf ich die gleichsetzen?es heißt lambda*x und lambda*y
leider kann man den zusammenhang auch knicken, da wie bei meinem ansatz eine ziemlich bösartige nullstelle zu berechnen ist.auch habe auch 2 andere verfahren probiert, und bei beiden bin ich auch auf keine exakte lösung gestoßen.
mir fällt nicht dazu leider nichts mehr ein.
entweder ich habe etwas übersehen, oder es gibt nur näherungslösungen.mfg
EricC
-
Hallo EricC
Das mit dem Vorzeichen leuchtet mir noch nicht ganz ein.
Die Innere Ableitung liefert bei mir 2 x ein Minus - ich muss die Kettenregel doch zweimal anwenden?
- für den Teil (.....)^2
- und für den darin befindlichen Teil (...) ^0.5
damit hebt sich bei mir das Minus auf. Ist ja aber auch egal - ich hab lange
nicht solche Formeln berechnetDas problem ist, dass keine einfache quadratische Funktion rauskommt.
Schaaaaaaaaaade.Das mit ner Näherung zu lösen will ich nicht NICHT, das habe ich momentan so.
Das will ich aber weghaben, da die Näherung ja doch immer etwas dauert - und die Berechnung wird sehr oft ausgeführt. Ich will mein Programm beschleunigen.
( Ich habe eine Vektor- Geometrie- Datensammlung - Geometrische Masken in
einem Bild - mit Rechteck, polygonen, Kreisen und Ellipsen.
bei Mausbewegung im Programm soll die Kontur gesucht werden, die der Maus
am dichtesten liegt.
Bei sehr umfangreichen Kontur- Ansammlungen (mit vielen Ellipse) kann das
dann z.T zu langsam werden.)Die Lagrange Funktion kenn ich nicht, bedeutet: ich habe bisher nie davon gehört.
Die ist auch schon schön differenziert.Was bedeutet aber: "bösartige Nullstelle" zu berechnen?
Wenn die beiden Lambda ( lambda*x und lambda*y ) gleich zusetzen gehen,
kommt bei mir was "leichtes" raus.Darf mann die NICHT gleichsetzen, kann man das Teil gar nicht lösen:
- 3 Gleichungen mit 4 Unbekannten.Die Frage ist für mich: sind lambda*x und lambda*y gleichsetzbar oder nicht?
Thx
FrankPS:
Ich habe bisher einen Ansatz mit Parameterform der Ellipse - ist von ner Uni.
b/a*Yp + (a^2 - b^2)/a*sin(t)=Xp*tan(t)
das Teil bin ich aber zu dusselig aufzulösen nach t - oder es geht nicht?.
Der Prof hat auch ne Häherung als Übung von seinen Studenten angeraten.das mach ich momentan mit ner Näherung:
- von 45° ausgehend testen, ist linker oder rechter Teil grösser
- bei Bedarf Winkel zu X- Achse oder Y- Achse (je nach Auswertung)
halbieren.
- Abbruch, wenn Differenz klein genug geworden ist/ mximle Schrittanzahl.
Das klappt auch soweit, aber die Winkelfunktionen und die Suchzyklen bremsen mir doch irgendwie das Programm ein.Ok, so grosse Datenmengen hat das Proggi eigentlich (noch) nicht.
Aber ich wollte mal sehen, ob es nicht auch direkt zu rechnen geht.
Ev. brauch ich das ja irgendwann mal in einem anderen Programm ???
Als "Hobby- Mathematiker" interessiert mich das schon.
-
Das mit dem Vorzeichen leuchtet mir noch nicht ganz ein.
Die Innere Ableitung liefert bei mir 2 x ein Minus - ich muss die Kettenregel doch zweimal anwenden?
- für den Teil (.....)^2
- und für den darin befindlichen Teil (...) ^0.5
damit hebt sich bei mir das Minus auf. Ist ja aber auch egal - ich hab lange
nicht solche Formeln berechnetdie wurzel abgeleitet ist ^-0.5, aber eh egal, da mein ansatz nur näherungsweise zu lösen geht.
Was bedeutet aber: "bösartige Nullstelle" zu berechnen?
in diesem fall geht es auch nur numerisch.
Die Frage ist für mich: sind lambda*x und lambda*y gleichsetzbar oder nicht?
nein darfst du nicht. die lambdas sind natürlich gleich, aber sie sind eben mit *x und mit *y verbunden. das bringt dich leider auch wieder auf eine näherungsweise lösung.
Ich habe bisher einen Ansatz mit Parameterform der Ellipse - ist von ner Uni.
b/a*Yp + (a^2 - b^2)/a*sin(t)=Xp*tan(t)
das Teil bin ich aber zu dusselig aufzulösen nach t - oder es geht nicht?.
Der Prof hat auch ne Häherung als Übung von seinen Studenten angeraten.anders geht es auch nicht, da die variable t in der winkelfunktion steht.
wie es aussieht wirst du um einen näherungslösung nicht herum kommen.
mfg
EricC
-
DerAltenburger schrieb:
@Taurin:
auch Dir sei gedankt. Dein Ansatz sieht besser verwendbar aus. Aber:
- Ich kenne die Lagrange- Funktion nicht
- Du sagst, 3 Gleichungen und 3 Unbekannte
dann sollte das ja berechenbar seinaber es gibt doch 2 x Lambda (mit x bzw y) ???
Darf ich die gleichsetzen?Dann bekomme ich nämlich eine schöne quadratische Funktion.
Die sollte sich lösen lassen für ein (gemeinsames) Lambda.- Der Rest sollte dann kein Problem sein.
Die drei Gleichungen sind (wie gesagt):
(1)
(2)
(3)Unbekannte sind x, y und λ. Konstanten sind x_p, y_p, a und b
Umformen ergibt:
(1)
(2)Einsetzen in (3) ergibt (edit: Der Schritt ist Quatsch!)
Und das ist tatsächlich ein Polynom 4. Grades (bzgl. λ), aber man kann daraus durch Wurzel ziehen zwei quadratische Gleichungen machen (hab ich ganz übersehen). Zurückeinsetzen von λ in (1) und (2) ergibt dann x und y.
Allerdings musst du immer noch aufpassen, dass die Lösungen des Gleichungssystems nur notwendigerweise Lösungen deines Optimierungsproblems sind. Du muss also alle durchgehen, und schauen, welche Lösung die richtige ist.
Die Lagrangefunktion wird in der Wiki ganz gut erklärt, bloß ohne Beweis. Kannst ja mal ein bischen googeln, ob du was dazu findest. Wenn es dich sehr interessiert, kann ich auch mal schauen, ob ich hier irgendwo den Beweis rausgesucht bekomme.
Mit den Begriffen partielle Ableitung, Gradient etc. kommst du klar?
edit: Ich hab das ganze eben mal in Matlab eingehämmert, und es klappt noch nicht so richtig.... im Prinzip ist der Weg richtig, aber evtl. ist noch irgendwo ein kleiner Fehler drin.
-
Bin ich aber d***.
Klar, das mit dem Vorzeichen mach ich oft falsch - wenn die innere Ableitung von X bzw -X kommt, lass ich die manchmal weg - ist ja ohnehin eins. Und damit vergesse ich dann natürlich das Vorzeichen.Aber im zweiten Term kommt bei mir die hälfte raus - muss d nicht noch ein 1/2 von der inneren Ableitung der Wurzel hin? Nur mal so wegen der Vollständigleit, auch wenn das Teil am Ende nicht aufzulösen geht. Mit solchen Differenzierungen arbeite ich sonst recht selten.
************************
Der zweite Ansatz ist jetzt klarer.
Formeln müsste man lesen können. Ich hab das lambda immer mit Index gesehen - Dussel ich der ich bin.Hab das mal eingesetzt und aufgelöst.
da kommt aber ein Bandwurm raus, den keine Sau auflösen kann.
@Taurin:
Bei Dir sieht das Ergebnis ja fast schön aus. Wieso krieg ich immer so ne Bandwurmformel? Sieht ähnlich kompliziert aus wie der erste Ansatz?***********************
das Teil in Parameterform KANN also NICHT aufgelöst werden?
Dasnn muss ich wohl bei der Annäherungsfunktion bleiben.das mach ich momentan mit ner Näherung:
- von 45° ausgehend testen, ist linker oder rechter Teil grösser
- bei Bedarf Winkel zu X- Achse oder Y- Achse (je nach Auswertung)
halbieren.
- Abbruch, wenn Differenz klein genug geworden ist/ mximle Schrittanzahl.
Das klappt auch soweit, aber die Winkelfunktionen und die Suchzyklen bremsen mir doch irgendwie das Programm ein.ist so nicht ganz richtig gewesen:
So würde das ja nur grosse Sprünge machen und nie ankommen.ich habe eigentlich zwei Grenzwerte gespeichert - 0° und 90°,
Ich halbiere natürlich die Differenz zum jeweiligen Grenzwert und ziehe den anderen auf die aktuelle Grösse.
Dmit wird mein "Testintervall" ja immer kleiner- und so klappt das auch.
Aber eben viele Schritte, wenn hohe Genauigkeit gewünscht.Thx an alle
Frank
-
@Turin
danke für Dein Angebot.
Aber mit den Beweisen kann ich wahrscheinlich nicht so viel anfangen - so gut ist mein Mathe auch nicht.
Ich bin Praktiker/ Techniker (EAT und Programmierung), mir genügen lösbare Formeln, die berechenbar sind. Warum die berechenbar sind, ist meist weniger interessant.Mit den Begriffen partielle Ableitung, Gradient etc. kommst du klar?
So halbwegs geht das. Hatten wir beim Studium mal - war aber 1974 .. 1978, da geht schon einiges wieder verloren.
Deine letzte Formel kann man ja tatsächlich gut "Verwurzeln". Da kommen zwei saubere quadratische Teile heraus, die sich eigentlich gut berechnen lassen.
ABER:
Kann es sein, dass in den ersten beiden Termen was fehlt?Beim Einsetzen von (1) und (2) in (3) habe ich in den ersten beiden Termen noch ne Multiplikation mit:
(b^2 * Lambda)^2 bzw (a^2 * Lambda)^2Und dann kommt ein Bandwurm raus, den ich nicht auflösen kann.
Gruss
Frank
-
@Taurin
ich hab jetzt was ganz putziges:ich habe nach Umstellen und Einsetzen:
k1 * (b^2 + Lambda)^2 + k2 * (a^2 + Lambda)^2 - (a^2 + Lambda)^2 + (b^2 + Lambda)^2 = 0
Das geht doch auch als:
(Wurzel(k1 * (b^2 + Lambda)^2 + k2 * (a^2 + Lambda)^2) + (a^2 + Lambda) * (b^2 + Lambda)) * (Wurzel(k1 * (b^2 + Lambda)^2 + k2 * (a^2 + Lambda)^2) - (a^2 + Lambda) * (b^2 + Lambda))
oder ist das falsch??? Ich sehe da ein Binom
Wenn ich eine der Seiten getrennt = 0 setze und auflöse, komme ich wieder auf die Anfangsformel.
(Wurzel(k1 * (b^2 + Lambda)^2 + k2 * (a^2 + Lambda)^2) - (a^2 + Lambda) * (b^2 + Lambda)
oder
(Wurzel(k1 * (b^2 + Lambda)^2 + k2 * (a^2 + Lambda)^2) = (a^2 + Lambda) * (b^2 + Lambda)
Das quadriere ich und habe :
(k1 * (b^2 + Lambda)^2 + k2 * (a^2 + Lambda)2=(a2 + Lambda)^2 * (b^2 + Lambda)^2
oder
(k1 * (b^2 + Lambda)^2 + k2 * (a^2 + Lambda)2-(a2 + Lambda)^2 * (b^2 + Lambda)^2=0Mach ich da was falsch oder bedeutet das, das Teil ist nicht auflösbar?
Gruss
Frank
-
DerAltenburger schrieb:
@Turin
Beim Einsetzen von (1) und (2) in (3) habe ich in den ersten beiden Termen noch ne Multiplikation mit:
(b^2 * Lambda)^2 bzw (a^2 * Lambda)^2Autsch... da hast du natürlich recht. Hast du also doch ein Polyonom 4ten Grades. Mit Wurzelziehen kommt da nix feines raus. Ich würde mir an deiner Stelle einfach eine fertige Lösung für das Lösen von polynomialen Gleichungen suchen. Das gibt es bestimmt, anders kommst du der Gleichung bestimmt nicht bei.
Schlecht stehst du damit allerdings nicht da: Polynomiale Gleichung von niedrigem Grad sind ja nix schlimmes.Es gibt für Gleichung vom Grad 4 sogar noch geschlossene Lösungsdarstellungen, aber die sind nicht mehr so richtig einfach... vielleicht findest du da ja auch was.
-
Da kann mal wohl nix machen.
Wenn die Spezies das nicht auflösen können, scheint das also auch nicht so recht gehen zu wollen.Da bleib ich halt erstmal bei meiner Näherungs- Routine. Ist zwar nicht schnell, liefert aber erstml gute Ergebnisse.
Da werd ev. ich mal weitersuchen.
Trotzdem erstmal Dank an alle.
Frank