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

Stabilitätsverhalten plotten

 

Slater777
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2016, 16:15     Titel: Stabilitätsverhalten plotten
  Antworten mit Zitat      
Hey Leute,

ich bin neu hier im Forum und etwas verzweifelt. Ich habe einen Beleg in Matlab zu lösen, in dem ich an einer bestimmten Stelle nicht weiter komme.

Gegeben ist mir ein Differentialgleichungssystem, dass ich mal als JPEG in den Anhang einfügen werde.

Nun soll ich zunächst die Gleichgewichtsszustände des Systems bestimmen. Dazu lasse ich Matlab x(1,2,3) [Punkt] gleich 0 setzten und nach x(1,2,3) auflösen.

Soweit, so gut. Anschließend soll ich das Systemverhalten plotten. Dies geht auch noch relativ einfach über den ode45 Befehl.

Nun soll ich aber in einer weiteren Aufgabe das Stabilitätsverhalten (Erreichen der Gleichgewichtsszustände) plotten.

Ich meine die Lösung bereits gesehen zu haben und es ist dort ein Diagramm mit vielen Graphen (die mir wie Feldlinien oder Trajektorienverläufe scheinen) zu sehen und die Gleichgewichtsstellen sind durch schwarze Punkte markiert.

Wie plotte ich aber diesen Graphen?

Vielen Dank für eure Hilfe..

Aufgabe.JPG
 Beschreibung:

Download
 Dateiname:  Aufgabe.JPG
 Dateigröße:  50.2 KB
 Heruntergeladen:  330 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.09.2016, 16:20     Titel:
  Antworten mit Zitat      
Hallo,

quiver dürfte da weiterhelfen.
Falls nicht, bitte mal ein Bild posten wie das am Ende aussehen soll.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Slater777
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2016, 16:25     Titel:
  Antworten mit Zitat      
Erstmal vielen vielen Dank für die schnelle Antwort!

Ich packe den erspähten Graphen mal in den Anhang.

Vielleicht könnten Sie mir ja sagen, wie sich dieser Graph plottet..

Würde es helfen, wenn ich mal den Code poste, den ich bisher habe?

Ergebnis.JPG
 Beschreibung:

Download
 Dateiname:  Ergebnis.JPG
 Dateigröße:  34.89 KB
 Heruntergeladen:  349 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Slater777
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2016, 16:41     Titel:
  Antworten mit Zitat      
Dies ist bisher meine Code:

Code:
clear all;
close all;
clc;

syms v x1 k i x2 g m q p

s = p*x1*x2;              % Symbolische Definition von s
b =(m*p*x1-q)/(m*p*k);    % Symbolische Definition von b

xp1 = v*x1*(1-x1/k)-s;    % Symbolische Definition von d/dx x1...3
xp2 = i*x2*(1-s/g)*b;
xp3 = m*s-q*x2;

f = [xp1;xp2;xp3];        % Alle drei Funktionen zu einem Vektor vereint
sol = solve(f==0,x1,x2);  % Ableitungen = 0 und umstellen nach x1, x2
a = [sol.x1,sol.x2];      % Lösungsteile für x1 und x2 zusammensetzen zu a

e = 0.05;     %Erosionslimit in Ressourceneinheiten [normiert]
g = 1;        %jährliches Produktionsziel [Ressourceneinheiten/Jahr]
k = 1.0;      %maximale Ressourcenkapazität [Ressourceneinheit]
m = 1.0;      %Preis für Ressource [Geldeinheit/Ressourceneinheit]
r = 0.1;      %Ressourcengenerationsrate [1/Jahr]

p = 1;        %Produktionsrate [1/(Kapital*Jahr)]
q = 0.1;      %Kapital-Arbeitskosten [Geldeinheiten/(Kapital*Jahr)]
i = 0.1;      %Kapitalinvestitionsrate [1/Jahr]


n=1;


while n<=size(a,1)          % Substitution der symbolischen Var. mit konkreten Werten
   
    a(n,1) = subs(a(n,1));  
   
   
    if a(n,1) < e,          
        v=0;                % Ist x1(t)<e wird v=0    
    else
        v=r;                % in allen anderen fällen (e>=0) wird v=r
    end
   
    a(n,2) = subs(a(n,2));  
   
    n=n+1;
   
end

a
 



Und anschließend noch meine Darstellung des Systemverhaltens:

Code:
figure (1)

set(gcf,'units','normalized','outerposition',[0 0 1 1]);

[t,x] = ode45(@ressourcen_fkt, [0 100], [1 0.01 0.01]); % Die Anfangszustände waren gegeben
plot (t,x);

set(gca,'FontSize',14);
title('Tragödie der Allmende');
xlabel('Zeit [Jahren]');
ylabel({'Erneuerbare Ressource: [Anzahl]', 'Kapitalbestand: ???[Anzahl/Jahr]', 'Jährlicher Profit: [Euro/Jahr]'});
 

Legende = legend({'Erneuerbare Ressource (Fische)','Kapitalbestand (Bestand Fische)','akkumulierter Gewinn (Ertrag durch verkaufte Fische)'},'Location','East');
set(Legende,'FontSize',16);

grid on;


[EDITED, Jan, Bitte Code-Umgebung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.09.2016, 16:43     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Würde es helfen, wenn ich mal den Code poste, den ich bisher habe?

Das ist hier im Forum immer eine gute Idee :)

Zitat:
Ich packe den erspähten Graphen mal in den Anhang.
Vielleicht könnten Sie mir ja sagen, wie sich dieser Graph plottet..

Ich würde wie gesagt quiver versuchen. Die Gleichgewichtspunkte kann man dann ja noch zusätzlich einzeichnen.
Alternativ kann man mehrere Trajektorien mit ode45 erzeugen und diese dann zeichnen lassen - das wurde vermutlich im Bild gemacht, da die Abstände recht ungleichmäßig sind.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Slater777
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2016, 16:46     Titel:
  Antworten mit Zitat      
Könnten Sie mir - nachdem ich ja nun den Code geposted habe - erklären wie genau ich vorgehen muss, um ein solches Bild zu erhalten und wie ich die Gleichgewichtspunkte danach noch einzeichne?

Habe wirklich schon vieles probiert und bekomme es einfach nicht hin Shocked
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.09.2016, 16:57     Titel:
  Antworten mit Zitat      
Hallo,

die "Alternative" ist zunächst wohl der einfachere Weg.

Du (hier wird allgemein 'Du' verwendet - ich hoffe, das ist okay) hast ja mit ode45 schon eine Trajektorie erzeugt. Dies musst du jetzt noch wiederholen und für mehrere Startszenarien durchführen.

Die Gleichgewichtspunkte können z.B. geplottet werden mit
Code:
plot(x,y,'k.', 'MarkerSize', 15)


Für weitere Unterstützung poste bitte noch die ressourcen_fkt.m.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Slater777
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2016, 17:06     Titel:
  Antworten mit Zitat      
Wollte nicht unhöflich erscheinen, natürlich sage ich auch sehr gerne "du". :)

Harald hat Folgendes geschrieben:


Du hast ja mit ode45 schon eine Trajektorie erzeugt. Dies musst du jetzt noch wiederholen und für mehrere Startszenarien durchführen.



So ganz verstanden habe ich das leider noch nicht..

Denke ich mir die weiteren Startwerte einfach aus?

Vielleicht poste ich einfach mal die komplette Aufgabenstellung und meine bisher geschriebenen M-Files..

Da ich in Matlab wirklich nicht so fit bin, bräuchte ich glaube ich etwas konkretere Unterstützung :/

Angabe 2.jpg
 Beschreibung:

Download
 Dateiname:  Angabe 2.jpg
 Dateigröße:  278.08 KB
 Heruntergeladen:  334 mal
Angabe 1.jpg
 Beschreibung:

Download
 Dateiname:  Angabe 1.jpg
 Dateigröße:  686.7 KB
 Heruntergeladen:  299 mal
ressourcen_fkt.m
 Beschreibung:

Download
 Dateiname:  ressourcen_fkt.m
 Dateigröße:  632 Bytes
 Heruntergeladen:  288 mal
Matlab_Aufgabe_2.m
 Beschreibung:

Download
 Dateiname:  Matlab_Aufgabe_2.m
 Dateigröße:  908 Bytes
 Heruntergeladen:  286 mal
Matlab_Aufgabe_1_a_und_b.m
 Beschreibung:

Download
 Dateiname:  Matlab_Aufgabe_1_a_und_b.m
 Dateigröße:  1.86 KB
 Heruntergeladen:  293 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.09.2016, 19:20     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Denke ich mir die weiteren Startwerte einfach aus?

Ja. Üblicherweise nimmt man ein regelmäßiges Gitter.

Du siehst ja auch in dem Bild, dass die Anfangspunkte der Trajektorien regelmäßig angeordnet sind.


Ein entscheidendes Problem ist aber, dass du drei Größen hast. In Phasenportraits hat man aber üblicherweise nur zwei Größen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Slater777
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.09.2016, 21:07     Titel:
  Antworten mit Zitat      
Und wie löse ich das Problem nun? Question
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.09.2016, 21:51     Titel:
  Antworten mit Zitat      
Hallo,

das kann ich dir nicht sagen, da ich die Intention des Aufgabenstellers nicht kenne.
Ich vermute mal, dass in der Vorlesung besprochen wurde, wie das Stabilitätsverhalten analysiert werden soll.

Hier eine Möglichkeit:
Code:

p1 = 0.2:0.4:2;
p2 = 0.002:0.004:0.02;
p3 = 0.002:0.004:0.02;
hold on
for k1 = p1
    for k2 = p2
        for k3 = p3
            [t,x] = ode45(@ressourcen_fkt, [0 100], [k1 k2 k3]); % Die Anfangszustände waren gegeben
            plot3 (x(:,1), x(:,2), x(:,3));
        end
    end
end
view(3)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Slater777
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.09.2016, 16:38     Titel:
  Antworten mit Zitat      
Erstmal vielen Dank für den Tipp wie es funktionieren könnte!

Ich habe es jetzt mal versucht in meinen Code einzubauen und komme zu folgendem Ergebnis .. (Bild im Anhang)

Allerdings verstehe ich noch nicht ganz, was mir das Bild nun aussagen soll.. Die roten Punkte sind die Stabilitätszustände.. Diese habe ich einfach zusätzlich in das Bild eingezeichnet..

Welche Aussage kann ich aber nun über das Stabilitätsverhalten anhand der geplotteten Linien treffen?

Stabilitätsplot.jpg
 Beschreibung:

Download
 Dateiname:  Stabilitätsplot.jpg
 Dateigröße:  155.63 KB
 Heruntergeladen:  316 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 28.09.2016, 16:50     Titel:
  Antworten mit Zitat      
Hallo Slater777,

Es sieht nicht so aus, als wären die roten Punkte stabil. Bist Du sicher, dass sie an den richtigen Stellen liegen und dass das Modell stimmt?

Es ist immer eine gute Idee PNs zu öffnen, die von einem Forums-Moderator kommen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Slater777
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 26.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.09.2016, 02:42     Titel:
  Antworten mit Zitat      
Danke und danke für eure Hilfe.
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 - 2024 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.