|
|
lsqnonlin Ausgleichsproblem |
|
savr1484 |

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 06.05.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.05.2014, 12:35
Titel: lsqnonlin Ausgleichsproblem
|
 |
Hallo Leute, ich habe da mal eine Frage.
Ich habe vier nicht lineare Gleichungen mit 4 Unbekannten und möchte diese mit einem möglichst geringem Fehler lösen.
Hierfür wurde mir die "lsqnonlin"- Funktion geraten.
Diese habe ich dann mit Hilfe des Youtube-tutuorials http://www.youtube.com/watch?v=9GH1ndXMhJU
benutzt. Jedoch spuckt er mir immer irgend welche Fehler aus. Weiß jemand vielleicht was ich falsch gemacht habe??
Vielen Dank für eure Hilfe im vor raus.
Beschreibung: |
|
 Download |
Dateiname: |
Kugeilgleichung_2014_27_5.m |
Dateigröße: |
1.32 KB |
Heruntergeladen: |
328 mal |
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 27.05.2014, 13:23
Titel:
|
 |
Hallo,
ich würde dringend empfehlen, sich zunächst an der MATLAB-Hilfe statt an irgendwelchen Tutorials zu orientieren. Um es freundlich zu sagen: ich würde den Code nie im Leben so schreiben!
Wenn ich das ausführe, kommt die Fehlermeldung aus der Zeile
"o_store(i,j)=x_s(1)"
Wenn du o_store mit x_s(1) belegen willst, schreibe einfach
Grüße,
Harald
|
|
|
savr1484 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 06.05.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.05.2014, 14:26
Titel:
|
 |
Hallo Harald,
ich hatte es mit der Matlab-Hilfe probiert, kam damit leider aber nicht weiter.
Wenn ich nun die letzten Zeilen ersetzte durch
o_store=x_s(1)
y_store=x_s(2)
z_store=x_s(3)
w_store=x_s(4)
bibt er mir Zwar Ergebnisse aus diese weichen jedoch sehr stark von der eigentlichen Lösung ab.
Hast du vielleicht eine Idee woran das liegen könnte?
Vielen Dank im vor raus.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 27.05.2014, 14:29
Titel:
|
 |
Hallo,
eine Möglichkeit sind schlechte Startwerte. lsqnonlin sucht nämlich nach einem lokalen Minimum.
Du kannst ja als Test mal die tatsächliche Lösung als Startwert angeben.
Grüße,
Harald
|
|
|
savr1484 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 06.05.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.05.2014, 14:58
Titel:
|
 |
Das ändert zwar die Ergebnisse macht diese jedoch nicht unbedingt Besser.
Er sollte ausgeben o=50 y=60 z=2 und w=40.
Gibt jedoch mit X0 =[0,0,0,0] :48.0522 36.9274 0.8925 64.9393 aus
und mit x0=[50,60,2,40]: 81.8097 87.7156 2.0000 78.6555 aus
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 27.05.2014, 16:01
Titel:
|
 |
Hallo,
wenn du deinen Wunschpunkt mit dem x_s bei [0,0,0,0] als Startwert vergleichst, dann kommt bei x_s etwas besseres raus:
Vielleicht hast du dich bei den Gleichungen vertan?
Wenn die auskommentierten Gleichungen stimmen, dann müsste doch bei den tatsächlichen bei Termen wie (time(2)-time(1))*c_w ein - vorne dran stehen?
Unabhängig davon wirklich die Empfehlung, das so wie in der Doku umzusetzen statt mit dem merkwürdigen Umweg über syms und inline.
Grüße,
Harald
|
|
|
savr1484 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 06.05.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.06.2014, 16:08
Titel:
|
 |
Hallo Harald
Ich habe den Code jetzt so geschrieben, wie er im Handbuch steht, jedoch verändert er die Ergebnisse nicht, wenn ich den Startwert verändere hast du vllt eine Idee woran das liegen könnte?
Vielen Dank für deine Hilfe
Beschreibung: |
|
 Download |
Dateiname: |
Ort_2014_06_05.m |
Dateigröße: |
144 Bytes |
Heruntergeladen: |
350 mal |
Beschreibung: |
|
 Download |
Dateiname: |
myfun.m |
Dateigröße: |
879 Bytes |
Heruntergeladen: |
372 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.06.2014, 16:14
Titel:
|
 |
Hallo,
ich habe es mit deinem Startwert und [0 0 0 0] probiert, und ich bekomme leicht unterschiedliche Werte. Das heißt einfach, dass das Problem von beiden Startwerten zum selben Minimum konvergiert.
Ich habe auch mal [100 100 100 100] als Startwert probiert, und ich bekomme komplett andere Ergebnisse.
Ich kann das Problem also nicht so recht nachvollziehen.
Welches Release nutzt du?
Grüße,
Harald
|
|
|
savr1484 |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 9
|
 |
|
 |
Anmeldedatum: 06.05.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.06.2014, 16:34
Titel:
|
 |
Achso, vielen Dank ich hatte nur (0 0 0 0) und den echten Punkt ausprobiert und da den Unterschied in der letzten Nachkommastelle nicht gesehen.
Ist es eigentlich möglich aus den harten Grenzen weiche zu machen? Soll heißen, der Algorithmus guckt sich die Grenzen an um ein besseres Ergebnis zu erhalten kann diese jedoch trotzdem unter bzw überschreiten?
Und kann ich die Genauigkeit von lsqnonlin noch irgend wie verbessern?
Vielen vielen Dank für deine Hilfe
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.06.2014, 16:42
Titel:
|
 |
Hallo,
Zitat: |
Ist es eigentlich möglich aus den harten Grenzen weiche zu machen? Soll heißen, der Algorithmus guckt sich die Grenzen an um ein besseres Ergebnis zu erhalten kann diese jedoch trotzdem unter bzw überschreiten? |
Meinst du Nebenbedingungen? Der Solver wird zunächst darauf achten, dass die Nebenbedingungen erfüllt sind und dann die Zielfunktion verbessern.
Wenn du die Nebenbedingungen aufweichen willst, dann am besten über Strafterme in der Zielfunktion:
zielneu = ziel + faktor*(Verletzung NB)
Grüße,
Harald
|
|
|
|
|
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.
|
|