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

Werte aus RungeKutta Berechnung speichern & plotten

 

maze
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 73
Anmeldedatum: 05.04.11
Wohnort: Hamburg
Version: 7.11.0 R2010b
     Beitrag Verfasst am: 30.10.2011, 19:26     Titel: Werte aus RungeKutta Berechnung speichern & plotten
  Antworten mit Zitat      
Ich habe schon lange rumprobiert und bekomme es nicht hin. Ich berechne in nstep Höhenschritten Rungekutta-Werte für 5 Differentialgleichungen. Diese möchte ich am Ende von z=0 bis z=nstep geplottet haben. Auf der x-Achse liegt z, auf der y-Achse die Integrationswerte. Dort bekomme ich leider nur den letzten Integrationsschritt gegen z geplottet. Die berechneten Werte müssen irgendwie alle gespeichert werden, damit ich sie am Ende gegen z plotten kann.
Ich habe hier den Code mit reingeschrieben, wo man glaube ich schon erkennen kann, wo die Knackpunkte sind. Ansonsten habe ich den Code mitangehangen. Vielen Dank schon im voraus!


Code:
 
 
hstep=50;
  z_end=4000;
  nstep=ceil(z_end-z0)/hstep
   
  for istep=1:nstep    

      y97(1) = m_d;
      y97(2) = m_v;
      y97(3) = m_l;
      y97(4) = v;
      y97(5) = t;
   
     
options = odeset('Refine', 1,'RelTol',1e-2,'AbsTol',1e-2); %'MaxStep',0.1);
[zh,y97n] = ode45(@glaze_97_nested,[z z+hstep],y97, options);
   
        m_d = y97n(end,1);
        m_v = y97n(end,2);
        m_l = y97n(end,3);
        v = y97n(end,4);
        t = y97n(end,5);

 


% calculate u, r, etc at new height
      m = m_d+ m_v + m_l + m_s;
      un = v/ m;
      c_b = ( m_d*c_d + m_v*c_v + m_l*c_l + m_s*c_s ) / m;
      rho_b = p .* m.^2 .* c_b ./( r_v .* t .* ( m_v + ep.*m_d ));
      rn = ( m.^2 ./ ( rho_b.*v) ).^0.5;

     
      z = z+hstep;
      z_plot=z0:hstep:z_end;  

  end


%  
  h(1)=subplot(5,1,1);
 plot(z_plot,m_d)%  plot(zh,y97n(:,1))
   ylabel('m_d')
 xlabel('z')
  h(2)=subplot(5,1,2);
plot(z_plot,m_v)%  plot(zh,y97n(:,2))
  ylabel('m_v')
  xlabel('z')
  h(3)=subplot(5,1,3);
plot(z_plot,m_l)%  plot(zh,y97n(:,3))
  ylabel('m_l')
  xlabel('z')
  h(4)=subplot(5,1,4);
plot(z_plot,v)%  plot(zh,y97n(:,4))
  ylabel('v')
  xlabel('z')
  h(5)=subplot(5,1,5);
plot(z_plot,t)%
  ylabel('T')
  xlabel('z')
 

 


glaze18102011_2.m
 Beschreibung:

Download
 Dateiname:  glaze18102011_2.m
 Dateigröße:  7.07 KB
 Heruntergeladen:  309 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

das ist nicht weiter erstaunlich, weil du ja aus deiner Lösung immer nur den letzten Wert extrahierst:
Code:
 m_d = y97n(end,1);


Warum extrahierst du nicht die komplette Spalte?
Code:
 m_d = y97n(:,1);


Genauso für die anderen Variablen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 73
Anmeldedatum: 05.04.11
Wohnort: Hamburg
Version: 7.11.0 R2010b
     Beitrag Verfasst am: 31.10.2011, 15:44     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank erstmal.

Aber ich muss die Endwerte extrahieren, da diese wieder für die nächste Schleife benutzt werden.
Zum plotten dachte ich, dass ich einen weiteren Vektor aufmache, um alle Werte dafür zu speichern:
Code:

m_d_plot=y97n(:,1);
m_v_plot=y97n(:,2);
m_l_plot=y97n(:,3);
v_plot=y97n(:,4);
t_plot=y97n(:,5);
zh_plot=z_plot(:,1);
 


Da bekomme ich jedoch nur die Werte aus dem letzen Integrationsschritt und nicht alle Werte?

Ich habe es jetzt so gemacht:
Code:

z_plot=(z0:hstep:z_end)';  
a=length(z_plot);
m_d_p=linspace(m_d0,m_d,a)';
m_v_p=linspace(m_v0,m_v,a)';
m_l_p=linspace(m_l0,m_l,a)';
v_p=linspace(v0,v,a)';
t_p=linspace(t0,t,a)';
 


damit funktionierts. Ich bin mir nur nicht sicher, ob die Werte von z_plot passend zu den Werten von m_d_p etc. sind. Falls Dir oder irgendwem was dagegen sprechen sollte, sagt mir bitte Bescheid.

Viele liebe Grüsse,
Claudia

glaze18102011_2.m
 Beschreibung:

Download
 Dateiname:  glaze18102011_2.m
 Dateigröße:  7.46 KB
 Heruntergeladen:  357 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 31.10.2011, 15:48     Titel:
  Antworten mit Zitat      
Hallo,

du bekommst doch verschiedene Stützpunkte aus deiner Lösung. Warum plottest du nicht einfach die, anstatt linear zu interpolieren?

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 73
Anmeldedatum: 05.04.11
Wohnort: Hamburg
Version: 7.11.0 R2010b
     Beitrag Verfasst am: 31.10.2011, 16:14     Titel:
  Antworten mit Zitat      
Das es nicht linear klappt, habe ich auch grade bemerkt. eher gesagt, habe ich bemerkt, dass das völliger Schwachsinn ist. Oh Mensch, ich hänge hier jetzt glaube ich schon zu lange vor und sehe den Wald vor lauter Bäumen nicht.
Ich bekomme einfach nicht alle Werte von Beginn bis zum Ende in einem Vektor gespeichert. Ich brauche alle Werte (Stützwerte) von m_d, m_v etc und dem Integrator z. Harald, tut mir echt leid, wenn das zu doofe Fragen sind. Aber ich sehe es echt nicht mehr... egal was ich tue, es werden immer nur die letzten schritte gespeichert oder geplottet...
Private Nachricht senden Benutzer-Profile anzeigen
 
maze
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 73
Anmeldedatum: 05.04.11
Wohnort: Hamburg
Version: 7.11.0 R2010b
     Beitrag Verfasst am: 31.10.2011, 16:32     Titel:
  Antworten mit Zitat      
harald, ein absolut dämlicher fehler... ich habe den plot nicht mit in die schleife genommen. heul! wie dämlich!
jetzt läufts...
danke nochmal
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.