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

ausgabe mehrer Simulationen mittels for-Schleife

 

HallyGally
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.04.2011, 22:55     Titel: ausgabe mehrer Simulationen mittels for-Schleife
  Antworten mit Zitat      
Liebe Spezialisten,
ich bitte um Eure Hilfe. Ich habe das folgende Problem:

gegeben sei Eine Simulation von Aktienkurs verläufen, nach dem folgendem Code:

Code:

SA= 100;       %Wert der Aktie
mu=0.15;       %Erwartete Rendite
sigma=0.1;     %Volatilität
dt=0.01;         %Zeiteinheit 3,65 Tage

T=100;           %Betrechtet Zeiträume einer simulation
ST=5;            %Anzahl verschiedener Simulation mit gleichen Werten

K=[1:T];        %Zeitraum in dem geplottet werden soll


neuSA=SA
for i=2:T
   
e(i)=norminv(rand,0,1);                 %Zufälliger Wert der Standartnormalverteilung
dS(i)=mu*dt*SA+sigma*SA*sqrt(dt)*e(i);  %Änderungsrate der Aktie
neuSA(i)=neuSA(i-1)+ dS(i);                      %neuer wert Aktie
end



Nun wird eine Simulation über T durchgeführt, es sollen aber über den Zeitraum T, ST simulationen durchgeführt werden. Es sollen beispielsweise ST=5 weitere Simulationen durchgeführt werden mit den Selben Parametern. Das Ergebnis wäre eine Matrix mit den Dimensionen [T,ST]

Anschließend sollen die einzelnen Simulationen geplottet werden...

Mir fehlt bislang leider das Programmierverständniss. Könntet ihr mir bitte bei meinem Problem helfen.
Private Nachricht senden Benutzer-Profile anzeigen


Simblio
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 17.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2011, 10:11     Titel:
  Antworten mit Zitat      
Hallo,

so richtig verstehe ich dein Problem nicht, aber die for schleife sieht irgenwie komisch aus.
Code:

for i=1:Schrittweite:ENDWERT
{
 hier kommt der Quelltext rein
}
end
 


Was genau ist denn dein Problem?

VLG
Simblio
Private Nachricht senden Benutzer-Profile anzeigen
 
HallyGally
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2011, 12:52     Titel:
  Antworten mit Zitat      
Hallo,

mit :
Code:

for j=1:ST
for i=2:T
   
e(i,j)=norminv(rand,0,1);                 %Zufälliger Wert der Standartnormalverteilung
dS(i,j)=mu*dt*SA+sigma*SA*sqrt(dt)*e(i);  %Änderungsrate der Aktie
neuSA(i,j)=neuSA(i-1)+ dS(i);                    %neue Aktie
end
end


erhalte ich ST-mal den gleichen Vektor. Es sollen aber ST-verschiedene vektoren herauskommen.Darüber hinaus ist ab den Zweiten Vektor die erste zeile 0.

Ich möchte ST-verschiedene Vektoren bekommen
Private Nachricht senden Benutzer-Profile anzeigen
 
Schäfchen
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 23.01.11
Wohnort: Karlsruhe
Version: 2008 a, 2010b
     Beitrag Verfasst am: 25.04.2011, 13:44     Titel:
  Antworten mit Zitat      
Ich denke mal, dass dein Problem darin liegt, dass du für jede Simulation jeweils die gleiche zufallszahl verwendest. logischerweise sind dann alle Simulationen gleich.
mit rand([St,1]) kannst du dir einen Vektor mit unterschiedlichen Zufallszahlen erzeugen.

Code:


mu=0.15;       %Erwartete Rendite
sigma=0.1;     %Volatilität
dt=0.01;         %Zeiteinheit 3,65 Tage

T=100;           %Betrechtet Zeiträume einer simulation
ST=5;            %Anzahl verschiedener Simulation mit gleichen Werten
SA= 100*ones(1,ST);       %Wert der Aktie
K=[1:T];        %Zeitraum in dem geplottet werden soll


dS=zeros(length(K),ST);   % Speicherplatz reservieren
neuSA=zeros(length(K),ST); % Speicherplatz reservieren
neuSA(1,:)=SA;

for i=2:T
   
e=norminv(rand([1,ST]),0,1);                 %Zufälliger Wert der Standartnormalverteilung
dS(i,:)=mu*dt*SA+sigma*SA*sqrt(dt).*e;  %Änderungsrate der Aktie
neuSA(i,:)=neuSA(i-1,:)+ dS(i,:);                    %neue Aktie
end

for i=1:ST
plot(K,neuSA(:,i),'k');
hold on
end;
 


hier wird eine Matrix mit den 5 unterschiedlichen Simulationen erzeugt , die folgendermaßen aussieht :

Simulation ____1_____2______3_____4_____5
Zeitschritt1 Wert11 Wert21 Wert31 Wert41 Wert51
Zeitschritt2 Wert12 Wert22 Wert32 Wert42 Wert52
Zeitschritt3 Wert13 Wert23 Wert33 Wert43 Wert53
usw.

Programmiertechnisch ist es wichtig die Größe der dabei entstehenden Matrizen schon vorzudefinieren. Sonst muss in jedem Schleifendurchlauf die Matrix vergrößert werden, was viel Zeit in Anspruch nimmt.

Gruß Schäfchen
Private Nachricht senden Benutzer-Profile anzeigen
 
HallyGally
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 13.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.04.2011, 17:16     Titel:
  Antworten mit Zitat      
Vielen Dank es Funktioniert ganz gut, allerdings finde ich es etwas komischen das matlab bei ST=10000 abbricht. Es erscheint die Fehlermeldung "Out of Memory".

Dennoch vielen Dank für die 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 - 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.