Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Rapid Control Prototyping: Methoden und Anwendungen

Fachkräfte:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Differenzengleichungen plotten

 

Riemann
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.12.2020, 23:08     Titel: Differenzengleichungen plotten
  Antworten mit Zitat      
Hallo zusammen,

ich möchte von Mathematica auf Matlab umsteigen, bin aber noch ein totaler Anfänger was Matlab angeht. Ich hoffe, ihr könnt mir weiterhelfen. In Mathematica habe ich folgendes "System" aus Differentialgleichungen 1. Ordnung, die ich so in Mathematica eingebe:

Code:

P[t_] := P[t] = P[t-1] +a*ED[t-1];
ED[t_] := ED[t] = DF[t] + DC[t];
DF[t_] := DF[t] = b*(F - P[t]);
DC[t_] := DC[t] = c*(P[t] - F);

a=1;
c=0.2;
b = 0.75;
F=100;

P[0] = F + 1;
 


In Mathematica kann ich nun mit folgendem Befehl die Function P[t_] plotten:

Code:

ListLinePlot[{Table[P[t], {t, 0, 25}], Table[F, {t, 0, 25}]}, PlotStyle → {Black, Red},
Frame → True, FrameLabel → {"time", "price"}, AspectRatio → 0.4, PlotRange → All]
 


Leider bekomme ich das in Matlab überhaupt nicht hin. Könnte mir bitte jemand dabei helfen? Vielen Dank!

Zuletzt bearbeitet von Riemann am 29.12.2020, 00:18, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 23.156
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.12.2020, 23:22     Titel:
  Antworten mit Zitat      
Hallo,

was genau hast du in MATLAB versucht und welche Probleme sind dabei aufgetreten?
Ich habe das letzte Mal vor ca. 15 Jahren mit Mathematica gearbeitet. Insofern wären für mich die eigentlichen Differentialgleichungen hilfreicher als der Mathematica-Code.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Riemann
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.12.2020, 23:31     Titel:
  Antworten mit Zitat      
Hallo,

die Differentialgleichungen 1. Ordnung stehen oben.

Diese sollen anhand der Parameter geplottet werden. (siehe Datei)

_Plot.png
 Beschreibung:

Download
 Dateiname:  _Plot.png
 Dateigröße:  22.84 KB
 Heruntergeladen:  42 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.156
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.12.2020, 23:45     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
die Differentialgleichungen 1. Ordnung stehen oben

Da steht der Mathematica-Code dafür. Ich kann mit der Schreibweise aber nichts anfangen. Insofern wäre es nett, wenn du sie als Formeln hinschreiben würdest.

Und nochmal:
Zitat:
was genau hast du in MATLAB versucht und welche Probleme sind dabei aufgetreten?


Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Riemann
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.12.2020, 23:59     Titel:
  Antworten mit Zitat      
Also in Mathematica gibt man die Differentialgleichungen mit [] an und bereits hier scheitere ich in Matlab.

Code:
P[t_] := P[t] = P[t-1] +a*ED[t-1]

P_{t_} := P_{t} = P_{t-1} + a \cdot ED_{t-1}

Das hier ist einfach eine Funktion, die besagt, dass sich der heutige Preis (P[t]) folgendermaßen zusammensetzt, und zwar aus den vergangenen Preisen (P[t_1]) plus einer Variable a mal vergangene Erwartungen der Anleger (ED[t-1])


Code:
ED[t_] := ED[t] = DF[t] + DC[t];

ED_{t_} := ED_{t} = DF_{t} + DC_{t}


Die heutigen Erwartungen der Anleger ergeben sich aus: den heutigen Erwartungen der "Fundamentalisten" (DF[t]) plus den Erwartungen der "Chartisten" (DC[t])


Code:
DF[t_] := DF[t] = b*(F - P[t]);

DF_{t_} := DF_{t} = b * (F-P_{t})

Die heutigen Erwartungen der "Fundamentalisten" (DF[t]) ergeben sich aus einem Parameter b mal den sog. "Fundamentalpreis" minus den heutigen Preis (P[t]).

Code:
DC[t_] := DC[t] = c*(P[t] - F);

DC_{t_} := DC_{t} = c*(P_{t} - F)

Das gleiche gilt hier analog.


Nun wurden die Parameter festgelegt:

Code:
a=1;
c=0.2;
b = 0.75;
F=100;


Der Ausgangswert in t=0 ist

Code:
P[0] = F + 1

P_{0} = F + 1

Ich will, so wie in Mathematica, die Funktion P[t] plotten. Wie man sieht, handelt es sich hier um eine verschachtelte Funktion. Die Variable t soll die Werte von 0 bis 25 annehmen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.156
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.12.2020, 00:17     Titel:
  Antworten mit Zitat      
Hallo,

es ging mir nicht um Erklärungen der Befehle, sondern um die Formeln an sich. Eine Differentialgleichung hat mathematisch die Form
y' = f(t,y)
Wenn du das so hinschreibst, versteht man das unabhängig von Kenntnissen in einer bestimmten Sprache.
Die erste Gleichung sieht mir im übrigen nicht nach einer Differenzialgleichung, sondern nach einer Differenzengleichung aus?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Riemann
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.12.2020, 00:19     Titel:
  Antworten mit Zitat      
Du hast recht, es sind Differenzengleichungen! Gibt es einen Weg die Funktionen so, wie in Mathematica, sie in Matlab einzugeben?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.156
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.12.2020, 00:40     Titel:
  Antworten mit Zitat      
Hallo,

aaaah. Dann würde ich eine Rekursion verwenden:

Code:
a=1;
c=0.2;
b = 0.75;
F=100;

P = NaN(1, 26);
P(1) = 101;
DF = NaN(1,26);
DC = NaN(1,26);
ED = NaN(1,26);

for t1 = 1:26 % Indizierung in MATLAB beginnt bei 1
     if t1 > 1
         P(t1) = P(t1-1) + a*ED(t1-1);
     end
     DF(t1) = b*(F - P(t1));
     DC(t1) = c*(P(t1) - F);
     ED(t1) = DF(t1) + DC(t1);
end
plot(P)
 

Zum Start in MATLAB würde ich das MATLAB Onramp empfehlen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Riemann
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 28.12.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.12.2020, 00:43     Titel:
  Antworten mit Zitat      
Danke! Das werde ich mir genauer anschauen. Wie kann ich die gerade bei 100 in rot plotten?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 23.156
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 29.12.2020, 00:46     Titel:
  Antworten mit Zitat      
Hallo,

schau dir mal den Befehl yline an.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.