WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Jacobian und fsolve

 

Schaumstoff
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 08.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.09.2011, 09:50     Titel: Jacobian und fsolve
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Schaumstoff
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 08.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2011, 09:54     Titel:
  Antworten mit Zitat      
kann mir keiner helfen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.09.2011, 10:04     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Schaumstoff
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 08.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2011, 11:57     Titel:
  Antworten mit Zitat      
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?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.09.2011, 17:50     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Schaumstoff
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 08.09.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.09.2011, 15:57     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.09.2011, 17:26     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.