|
|
Optimierung einer Gleichung mit 2 Variablen |
|
slinshady |

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 07.02.2016, 13:59
Titel: Optimierung einer Gleichung mit 2 Variablen
|
 |
|
 |
|
Hallo,
Mein Problem ist, dass ich eine Gerade habe, die eine Kurve schneidet, die durch zwei Splines beschrieben wird. Ich habe folgende Gleichungen.
es gilt:
für mein lambda kann ich sagen, dass es ungefähr die länge von
mein erster Ansatz war, dass ich die eine Gleichung nach lambda aufgelöst habe, in die andere eingesetzt und damit die Nullstellen bestimmt habe. Dann habe ich mir die Nullstelle gesucht, die auf dem Intervall liegen muss und mit dieser wieder mein lambda bestimmt. Dabei kommen allerdings keine brauchbaren Ergebnisse heraus, da mein Lambda zwischen 2 und 12 liegen sollte allerdings zum einen teils negativ ist und zum anderen viel zu groß. Allerdings stimmen auch meine Nullstellen schon nicht.
Deshalb hatte ich nun die Überlegung es mit Hilfe eines Optimierers zu lösen und somit vielleicht bessere Ergebnisse zu erhalten als mit
roots
.
Da es sich jetzt eigentlich nur um die Umsetzung des Problems handelt habe ich nicht noch viel Code beigefügt.
Meine Unbekannten sind und . Die anderen Werte kenne ich alle.
Danke schonmal und schönes Wochenende an euch
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.02.2016, 15:34
Titel:
|
 |
Hallo,
fsolve
oder
lsqnonlin
könnten helfen.
Weißt du denn, in welchem Abschnitt der Spline der Schnittpunkt liegt?
Falls nicht, könnte man das so bestimmen: einen Schnittpunkt gibt es, wenn der Anfangspunkt eines Abschnittes über der Gerade liegt und der Endpunkt darunter, oder umgekehrt.
Grüße,
Harald
|
|
|
slinshady |
Themenstarter

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 07.02.2016, 15:50
Titel:
|
 |
|
 |
|
das Intervall des Splines kenne ich. Ich habe mir etwas geschrieben, um die entsprechenden Intervalle des Splines zu finden. Dadurch kenne ich auch die Breaks, also die s0.
um es mal zu zeigen. Ich habe diese 3 Linien und meine Schnittpunkte die ich berechnen möchte sind die Schnittpunkte des Normalenvektors der mittleren Linie mit den zwei äußeren. Ich kenne, dadurch, dass ich alle drei Splines kenne, also alle breaks, die Ableitungen in x und y des mittleren Splines um den Normalenvektor zu bilden.
Die schwarzen Linien sind einfach verbundene Punkte der einzelnen Normalenvektoren zu einzelnen Punkten auf der mittleren Linie
Mein Ziel ist es anhand der Schnittpunkte den Abstand der zwei Linien in jedem Punkt von der mittleren aus zu finden und den Punkt in der Mitte neu zu setzen, sodass er für sich orthogonal in beide Richtungen den gleichen Abstand hat. Die mittlere Linie wollte ich iterativ in dem ich die Punkte immer weiter korrigiere verbessern
Hier nochmal das Bild in größer, das andere ist ja nur eine Vorschau ^^
http://www.bilder-upload.eu/show.php?file=7620a7-1454854492.jpg
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.02.2016, 16:32
Titel:
|
 |
Hallo,
hast du's nun mit einer der genannten Funktionen versucht?
Grüße,
Harald
|
|
|
slinshady |
Themenstarter

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 07.02.2016, 17:35
Titel:
|
 |
Ich versuche sie erstmal über die Doku zu verstehen, wie ich sie verwenden muss.
War eben essen und muss gleich weg. Hoffe ich komme bis morgen dazu es zu implementieren.
Grüße Nils
|
|
|
slinshady |
Themenstarter

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 12:27
Titel:
|
 |
zur
lsgnonlin
habe ich die Frage:
macht sie nicht das Gleiche, was ich zuvor schon mit den Gleichungen gemacht hatte?
ich hatte die erste nach umgestellt in die zweite eingesetzt die nullstellen überprüft und die wahrscheinlichste in die Gleichung für lambda eingesetzt um die Breite zu erhalten.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 12:35
Titel:
|
 |
Hallo,
theoretisch ja. Praktisch sagst du aber ja, dass du fehlerhafte Resultate bekommst. Die Vermutung wäre also, dass beim händischen Umstellen etwas schiefgegangen ist.
Bei den Gleichungen bist du dir sicher?
Grüße,
Harald
|
|
|
slinshady |
Themenstarter

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 12:54
Titel:
|
 |
Jap die erste Stellt links alle x Werte der Geraden und rechts des Splines dar,
die zweite die y-werte.
Das umstellen habe ich schon mehrfach kontrolliert. Ich werde es allerdings mal testen.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 13:43
Titel:
|
 |
Hallo,
mich wundert in den Gleichungen ja das Minus vor lambda.
Du hast ja eingangs gesagt, dass du keine brauchbaren Ergebnisse bekommst.
Das kann eigentlich nur daran liegen, dass entweder die Gleichungen falsch sind oder der Weg der Auflösung.
Ich kann mir beispielsweise nicht vorstellen, dass es (korrekte Übergabe der Koeffizienten vorausgesetzt) an
roots
liegt. Das lässt sich aber ja leicht überprüfen, indem man die Wurzeln wieder in das Polynom einsetzt.
Grüße,
Harald
|
|
|
slinshady |
Themenstarter

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 13:48
Titel:
|
 |
Jap das habe ich Probiert. Deshalb weiß, ich dass die Wurzeln schon falsch sind.
Das Minus kommt von der Umformung des Richtungsvektors. Die Ableitung des Splines in einem Punkt ergibt mir den Tangentialvektor in diesem Punkt. Vertausche ich dabei den x und den y Wert und negiere einen der beiden erhalte ich den Normalenvektor.
diesen habe ich noch normiert und dann in die Gleichung eingesetzt. Somit sollte das Lambda, das ich erhalte der Abstand zum entsprechenden Rand sein
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 14:18
Titel:
|
 |
Hallo,
was genau hast du probiert?
Zitat: |
Vertausche ich dabei den x und den y Wert und negiere einen der beiden erhalte ich den Normalenvektor. |
Hier hast du aber beide Male Minus.
Grüße,
Harald
|
|
|
slinshady |
Themenstarter

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 14:30
Titel:
|
 |
Oh das ist nur ein Fehler beim übertragen hier. Habe die obere Formel kopiert und dann gedacht ich hätte alle Werte korrekt geänd4
|
|
|
slinshady |
Themenstarter

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 15:04
Titel:
|
 |
eine Frage. ich habe mir ja überlegt, wie ich die korrekten Intervalle also breaks erhalte. Diese habe ich mir auch plotten lassen und es sind die richtigen.
Wie kann ich nun allerdings den Spline zwischen z.b. der Aktuellen und nächsten Stützstelle plotten lassen? also nur ein Teilintervall
ich habe mir es überlegt es so plotten zu lassen.
iki ist der Index des aktuellen breaks px_innen der spline der x-werte für den inneren rand und py_innen für die y-Werte
ich dachte mir dann, dass xx und yy ein paar Punkte auf dem aktuellen Intervalls sind. Allerdings ist das so nicht Korrekt. Die berechneten Werte sind ähnlich meiner Schnittpunkte mit dem inneren Rand und liegen alle auf einer Geraden?
Ich habe in der Doku einige hilfreiche Funktionen gefunden
fnplt(pp,[a,b])
Plots on given interval
allerdings habe ich ja leider zwei Splines
oder wäre
Vielleicht eine Lösung?
habe es gelöst
also das Plotproblem
|
|
|
slinshady |
Themenstarter

Forum-Century
|
 |
Beiträge: 115
|
 |
|
 |
Anmeldedatum: 12.01.16
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: R2012b+
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 19:23
Titel:
|
 |
Also das Plotproblem ist doch noch nicht gelöst, da er mir 5 Abschnitte des Randes nicht plottet
eine andere Frage die Funktion fsolve mit root2d kann ich so nicht benutzen, da ich der funktion ja Parameter übergeben muss. Funktioniert das?
lsqnonlin funktioniert nicht für eine Funktion mit zwei variablen
Zuletzt bearbeitet von slinshady am 08.02.2016, 20:41, insgesamt einmal bearbeitet
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.02.2016, 20:12
Titel:
|
 |
Hallo,
Zitat: |
Also das Plotproblem ist doch noch nicht gelöst, da er mir 5 Abschnitte des Randes nicht plottet Rolling Eyes |
Es ist wenigstens mir nicht möglich, mit diesen Informationen das Problem zu erkennen oder eine Hilfestellung zu geben.
Zitat: |
eine andere Frage die Funktion fsolve mit root2d kann ich so nicht benutzen, da ich der funktion ja Parameter übergeben muss. |
Es ist schwierig zu erahnen, was du meinst. Falls es um das Übergeben fester Parameter an fsolve geht, siehe hier:
http://de.mathworks.com/help/optim/.....ing-extra-parameters.html
(mein bevorzugter Weg: anonymous functions)
Grüße,
Harald
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|