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

Nichtlineares Gleichungssytem: 6 Gleichungen, 6 Unbekannte

 

salkiewi
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2015, 14:40     Titel: Nichtlineares Gleichungssytem: 6 Gleichungen, 6 Unbekannte
  Antworten mit Zitat      
Hi,

ich versuche gerade mit Hilfe Matlabs ein nichtlineares Gleichungssystem zu lösen.
Ich bin super unerfahren mit Matlab, habe es aber geschafft nach langem Suchen und Recherchieren einen Code aufzustellen, jedoch funktioniert das ganze nicht Confused

Code:

function SteadyState

b=0.991; % Parameter
v=0.357;
ceta=0.3;
delta=0.0196;

x0=[1 1 1 1 1 0]; % Startwerte

R = fsolve(@eqn,x0)

function F = eqn(x)
% V_ss=x(1)
% c_ss=x(2)
% l_ss=x(3)
% k_ss=x(4)
% R_ss=x(5)
% i_ss=x(6)

F=[ ((x(2)^(v))*((1 - x(3))^(1-v)))- x(1);
((1/b)) - (ceta * (x(4)^(ceta - 1)) * (x(3)^(1-ceta)) + 1 - delta);
((1-ceta) * (x(4)^(ceta)) * (x(3)^(-ceta))) - (((1-v)/v) * (x(2) / (1 - x(3))));
((1/b)) - (x(5));
((x(4)^(ceta)) * (x(3)^(1-ceta))) - (x(2)+ x(6));
(delta * x(4)) - (x(6));
];
end

end

 


Ich würde gerne eine numerische Lösung für die Variablen x(1)-x(6) haben.
Eig würde ich das Gleichungssystem auch lieber so aufstellen, dass ich nicht x(.) drin habe, sondern die 'richtigen' Variablenbezeichnungen, zB c_ss etc.

Wäre super, wenn mir hier jemand helfen könnte Smile

Das Gleichungssytems sowie die mod.file habe ich angehängt.

Danke schon einmal im Voraus!

SteadyState.m
 Beschreibung:

Download
 Dateiname:  SteadyState.m
 Dateigröße:  667 Bytes
 Heruntergeladen:  279 mal
Steady.png
 Beschreibung:

Download
 Dateiname:  Steady.png
 Dateigröße:  18.93 KB
 Heruntergeladen:  255 mal
Private Nachricht senden Benutzer-Profile anzeigen


Martin91

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2015, 18:15     Titel:
  Antworten mit Zitat      
Hallo,

hab gerade kein Matlab hier und es gibt hier sicherLeute, die sich besser mit Matlab auskennen, aber was mir vom Formalen her auffällt.

Erstmal schreibst du ja

Code:

function SteadyState
 


Ob das so sinnvoll ist weiß ich nicht. Wenn du eine Funktion schreiben möchtest dann sieht der Anfang so aus

Code:

function [Ausgabeparameter/Lösung]=Funktionsname(Eingabewerte)


Die Skript Datei mit der Funktion darin muss dann wie die Funktion heißen, also in deinem Fall SteadyState.m

Also pro function ein Skript.

Die 2. Funktion:

Code:
function F = eqn(x)
% V_ss=x(1)
% c_ss=x(2)
% l_ss=x(3)
% k_ss=x(4)
% R_ss=x(5)
% i_ss=x(6)

F=[ ((x(2)^(v))*((1 - x(3))^(1-v)))- x(1);
((1/b)) - (ceta * (x(4)^(ceta - 1)) * (x(3)^(1-ceta)) + 1 - delta);
((1-ceta) * (x(4)^(ceta)) * (x(3)^(-ceta))) - (((1-v)/v) * (x(2) / (1 - x(3))));
((1/b)) - (x(5));
((x(4)^(ceta)) * (x(3)^(1-ceta))) - (x(2)+ x(6));
(delta * x(4)) - (x(6));
end


würde ich dann in eine eigene Skriptdatei speichern, die "eqn.m" heißt. Dann kannst du mit dem
Code:

darauf zugreifen. Hier hat aber eqn keine Argumente x. Das geht so glaub ich auch nicht. und ob man
Code:
@(x)eqn("bestimmter XWert")
schreiben muss weiß ich auch nicht aus dem Kopf.
 
salkiewi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2015, 18:59     Titel:
  Antworten mit Zitat      
Danke schon mal für deine Antwort Smile

Ich habe mein m.file nach einem anderen nachgebaut. Der hat das genauso gemacht. Deswegen ist die Struktur, wie sie ist. Rolling Eyes
Sein File funktionierte auch bei mir; mein System jedoch nicht -.-
Private Nachricht senden Benutzer-Profile anzeigen
 
frankw
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 22.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2015, 19:40     Titel:
  Antworten mit Zitat      
... nur mal zur Info, wenn bei der Fehlermeldung steht "... Objective function is returning undefined values at initial point. FSOLVE cannot continue. ..." dann sollte man sich mal die Startwerte anschauen.

Bei nächsten mal am Besten die Fehlermeldung gleich mit Posten, dann kann man gezielter auf die Fragen antworten.
Private Nachricht senden Benutzer-Profile anzeigen
 
salkiewi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 13.02.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2015, 19:54     Titel:
  Antworten mit Zitat      
Ja, das steht da.

Ich habe die Startwerte so gewählt, weil die letztlichen Modellösungen bei 0.9128 (=y) oder 0.1873 (=Rf) und etc liegen. Dachte, dann wäre das der Beste guess bei den gewählten Anfangswerten.

Was genua besagt, die Fehlermeldung denn? Question

Und: Danke für die Antwort.


Ps.: Ja, werde ich tun...sorry. Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
frankw
Forum-Anfänger

Forum-Anfänger


Beiträge: 23
Anmeldedatum: 22.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.02.2015, 20:06     Titel:
  Antworten mit Zitat      
Da steht frei übersetzt : "...Die Zielfunktion gibt undefinierte Werte mit Startwerten zurück. Fsolve kann nicht fortgesetzt werden."

Wenn du jetzt mal deine Startwerte in die Gleichung einsetzt, wirst du sehen das bei der 3. Gleichung ein unendlich raus kommt (Division durch 0).
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.