|
|
| Schaumstoff |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 08.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.09.2011, 09:50
Titel: Jacobian und fsolve
|
 |
Hallo,
ich habe eine Funktion f von R^22 nach R.
Mein Problem ist, dass ich diese Gleichung nach allen 22 Variablen ableiten muss und den dadurch entstandenen Gradienten gleich Null setzen muss und dieses so enstandenes Gleichungssystem (nicht-linear) lösen muss.
Ich habe versucht dies mit jacobian(f,var1 bis var22) den Gradienten zu berechnen. Jedoch weiß ich nicht, wie ich im Anschluss das Gleichungssystem (nicht-linear) lösen kann.
Mit der Routine solve(jacobian(f)) komme ich zu keinem Ergebniss, da Matlab immer anzeigt "busy".
Kann mir jemand einen Tipp gehen, wie ich dieses Problem lösen kann, bzw. einen alternativen Weg vorschlagen.
Gruß
Schaumstoff
|
|
|
|
|
|
| Schaumstoff |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 08.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.09.2011, 09:54
Titel:
|
 |
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.09.2011, 10:04
Titel:
|
 |
Hallo,
wie komplex ist die Funktion?
Wenn MATLAB "busy" anzeigt, heißt das, dass es an der Lösung eines Problems arbeitet. Wenn du ein Gleichungssystem mit 22 Gleichungen und 22 Unbekannten symbolisch gelöst haben willst, kann das sehr lange dauern.
Berechne doch erst mal die Jacobian und schau dir das an. Wenn das System mit SOLVE aufgrund des zu hohen Rechenaufwands nicht lösbar ist, kannst du es mit FSOLVE numerisch versuchen.
Im übrigen sieht es für mich danach aus, als ob du ein Minimum der Funktion suchst. Das kannst du mit diversen Funktionen aus der Optimization Toolbox auch direkt angehen.
Grüße,
Harald
|
|
|
|
| Schaumstoff |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 08.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.09.2011, 11:57
Titel:
|
 |
ich weiß leider nicht, wie ich es mit fsolve machen kann
da im tutorial angegeben ist, dass alle variablen mit x(1) bis x(22) in der formel angegeben werden müssen.
um jacobian zu verwenden, muss ich doch die ganzen variablen syms'en.
z.b. syms a1 b1 c1 etc.
wie bekomm ich das dan hin, dass fsolve diese variablen benutzen kann oder dass ich die variablen umbennen kann in komponenten eines vektors x?
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.09.2011, 17:50
Titel:
|
 |
Hallo,
du kannst einen symbolischen Ausdruck mit CHAR als String umwandeln, mit STRREP die Ersetzung vornehmen, und mit STR2FUNC daraus wieder ein Function Handle erstellen.
Du bist allerdings nicht auf den zweiten Teil meines Kommentars eingegangen, der das ganze deutlich erleichtern könnte.
Erleichtern könnte es das ganze auch, wenn du den Aufgabensteller mal fragst, wie das ganze gedacht ist.
Grüße,
Harald
|
|
|
|
| Schaumstoff |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 08.09.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 20.09.2011, 15:57
Titel:
|
 |
hi,
ich hab es mit FMINSEARCH versucht, und komme auf Ergebnisse, die von denen sehr sehr stark abweichen, welche ich suche. wenn meine Funktion mit Daten füttere wo ich das Ergebniss kenne, dann kommen diese nicht heraus. ob es an den mit teils unbekannten Startpunkten für die iteration liegt, oder einfach die Methode falsch ist kann ich nicht sagen.
ich werde es jez auf die Methode versuchen mit dem Gleichungssystem
gruß
Schaumstoff
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.09.2011, 17:26
Titel:
|
 |
Hallo,
fminsearch findet ebenso wie die meisten Optimierungsroutinen ein lokales Minimum. Du brauchst also Startwerte, die in der Nähe des gesuchten Minimums liegen, um dieses Minimum zu finden.
Mit fsolve wird die Problematik wahrscheinlich die gleiche sein.
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.
|
|