|
|
Matlab Fsolve Funktionsaufruf |
|
OlegZ |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 26.08.2013, 21:29
Titel: Matlab Fsolve Funktionsaufruf
|
 |
|
 |
|
Hallo,
ich möchte gerne ein nichtlineares Gleichungssystem mit dem Befehl fsolve numerisch lösen, leider stellen sich mir einige Probleme in den Weg. Zur Ausgangsfunktion. Ich möchte die Rückwärtstransformation einer Roboterstruktur berechnen und habe dafür 4 Funktionen aufgestellt.
- Die Initialisierungsfunktion, die die Parameter festlegt und die Rückwärtstrafo aufruft
-die Drehmatrix-Funktion zur Erstellung homogener Lagematrizen
- die Rückwärtstafo-Funktion, die die weiteren Parameter festlegt und den fsolve Befehl beinhaltet
- die gleichungssystem-Funktion, die für den fsolve-Befehl notwendig ist. In Ihr führe ich eine Differentiation jedes Eintrags meiner Homogenen Lagematrizen in Abhängigkeit der symbolischen Variable "b" durch.
Das aufgestellte Gleichungssystem soll dann mit den Anfangswerten x0 nach dem Verfahren Levenberg-Marquardt numerisch gelöst werden.
Leider erhalte ich den Error:
Im Anhang findet ihr die m-files.
Wo ist mein Fehler?
Besten Dank im Voraus.
OlegZ
Beschreibung: |
|
 Download |
Dateiname: |
rueckwaertstrafo.m |
Dateigröße: |
1.01 KB |
Heruntergeladen: |
257 mal |
Beschreibung: |
|
 Download |
Dateiname: |
gleichungssystem.m |
Dateigröße: |
120.19 KB |
Heruntergeladen: |
368 mal |
Beschreibung: |
|
 Download |
Dateiname: |
init_function.m |
Dateigröße: |
850 Bytes |
Heruntergeladen: |
290 mal |
Beschreibung: |
|
 Download |
Dateiname: |
drehmatrix.m |
Dateigröße: |
490 Bytes |
Heruntergeladen: |
253 mal |
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 26.08.2013, 22:29
Titel:
|
 |
Hallo,
die Fehlermeldung besagt es an sich schon. Ein Gleichungssystem numerisch lösen bedeutet, dass eben keine Variablen mehr in deinem erg auftreten dürfen.
Macht
hier das, was du möchtest?
Grüße,
Harald
(Warum eigentlich der Aufwand mit den symbolischen Matrizen, wenn du ohnehin numerisch rechnen willst??)
|
|
|
OlegZ |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 27.08.2013, 00:12
Titel:
|
 |
|
 |
|
Hallo Harald,
vielen Dank für deine Antwort. Um deine Frage in Bezug auf die symbolischen Matrizen zu beantworten. Ich ersetze die variablen Absolutdrehwinkel durch symbolische Variablen, da ich diese mithilfe der Rückwärtstransformation ermitteln möchte. Diese Ermittlung beinhaltet eine numerische Lösung nach dem Levenberg-Marquardt-Verfahren.
Mein Problem ist die Übergabe der 16 Einträge der Differenz der homogen Lagematrizen. Lasse ich sie mir zuerst im Command Window ausgeben und kopiere sie in die Funktion"gleichungssystem", funktioniert die numerische Lösung.
Ich möchte nun die 16 Einträge direkt in der Funktion "gleichungssytem" ermitteln und dann mithilfe von fsolve lösen. Mein Problem ist hier die Parameterübergabe der Einträge der Lagematrizen.
Die Ergänzung um den Code:
erg = eval(erg)
führt zu:
Wie stell ich den Levenberg-Marquardt-Algorithmus direkt im fsolve-Befehl ein? Ich gehe davon aus, dass er deshlab kein Ergebnis gefunden hat..
Gruß OlegZ
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 27.08.2013, 09:31
Titel:
|
 |
Hallo,
Zitat: |
Wie stell ich den Levenberg-Marquardt-Algorithmus direkt im fsolve-Befehl ein? |
Über die optimset und die 'Algorithm'-Option.
Zitat: |
Ich gehe davon aus, dass er deshlab kein Ergebnis gefunden hat.. |
Ob du den Algorithmus auswählst oder MATLAB sich selbst dazu entscheidet, ist letztlich egal. Es wird eher in die Richtung gehen:
- gibt es überhaupt eine Lösung?
- ist der Startwert gut genug?
Grüße,
Harald
|
|
|
OlegZ |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.08.2013, 21:53
Titel:
|
 |
Hallo Harald,
erstmal vielen Dank für deine Denkanstöße. Ich vermute mein Problem liegt in der Übergabe des Gleichungssystems an die Funktion"gleichungssystem". Lasse ich mir den Vektor des Gleichungssystems in Abhängigkeit der Variable b im Command Window ausgeben und kopiere sie dann in die Funktion "gleichungssystem", funktioniert die numerische Lösung super.
Übergebe ich der Funktion aber nur das unaufgestellte Gleichungssystem der Differenzen der einzelen Einträge der homogenen Lagematrizen, bekomme ich die falschen Gelenkkoordinaten.
Hast du eine Idee, wie ich die Ausgabe im Command Window umgehe?
Schöne Grüße
OlegZ
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.08.2013, 22:02
Titel:
|
 |
Hallo,
liefert das denn etwas anderes als eval?
Das wäre meines Erachtens ja genau der Sinn von eval.
Und: bitte Code statt länglicher Beschreibungen ;)
Grüße,
Harald
|
|
|
OlegZ |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 30.08.2013, 15:06
Titel:
|
 |
Hallo Harald,
ja,übergebe ich das gleichungssystem, welches ich mir vorher im command window ausgegeben habe, liefert mir die Funktion die gewünschten Variablen. Mit eval bekomme ich nun nur den Fehler:
Im Anhang findest du nochmal die notwendigen Quellcodes. In der Funktion
"gleichungssystem" ist das funktionierende Gleichungssystem ausgeklammert.
Ich weiß, dass fsolve nicht damit klar kommt, dass ich ihm das gleichungssystem unausgegeben übergebe. Ich kenne nur keinen Kniff, wie ich dieses Problem umgehen kann. Wie sage ich ihm, dass mein Gleichungssystem von b abhängig ist?
Schöne Grüße
OlegZ
Beschreibung: |
|
 Download |
Dateiname: |
paket.rar |
Dateigröße: |
3.5 KB |
Heruntergeladen: |
234 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.09.2013, 21:45
Titel:
|
 |
|
 |
|
Hallo,
EVAL ist für Function Handles nicht definiert, aber das sagte ja schon die Fehlermeldung.
Die Funktion, die du bei FSOLVE angibst, muss einen double-Vektor zurückgeben. Die Definition eines Function Handles macht nur Sinn, wenn du es auch an einer Stelle auswertest. An welcher Stelle ist mir nicht klar.
Zitat: |
welches ich mir vorher im command window ausgegeben habe, |
Und wie?
Zitat: |
dass ich ihm das gleichungssystem unausgegeben übergebe. |
Was soll "unausgegeben" heißen?
Zitat: |
Wie sage ich ihm, dass mein Gleichungssystem von b abhängig ist? |
Vielleicht hilft dir das:
http://www.mathworks.com/help/optim.....ing-extra-parameters.html
Ich blicke bei diesem komplexen Beispiel und deinen Beschreibungen nicht durch, was du nun wie machen willst.
Vielleicht hilft es, an einem einfachen Beispiel erstmal die Arbeitsweise von FSOLVE kennenzulernen?
Die Verwendung globaler Variablen erschwert das Verständnis deiner Anwendung übrigens sehr - siehe auch die entsprechenden Code-Analyzer-Warnungen.
Grüße,
Harald
|
|
|
OlegZ |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 03.09.2013, 19:04
Titel:
|
 |
Hallo Harald,
vielen Dank für deine Antwort. Ich werde weiter versuchen, mein Problem zu lösen und mit einem einfachen Beispiel beginnen.
OlegZ
|
|
|
|
|
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.
|
|