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

For Loop - Mehrere Grafiken in einem Plot

 

Anonymous_Person
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2021, 11:55     Titel: For Loop - Mehrere Grafiken in einem Plot
  Antworten mit Zitat      
Hallo zusammen,

ich möchte gerade zum Einstieg in Matlab eine Differentialgleichung eines gedämpften Einmassenschwingers mithilfe von ODE45 lösen. Genauer gesagt möchte ich die Kraft FK=2*D*w0*m*Y(:,2)+(w0^2)*m*Y(:,1) unter der Verwendung von verschiedenen D bestimmen. Y(:,2) entspricht einer Geschwindigkeit, Y(:,1) entspricht einem Weg.

Bei dem Skript ohne Loop stimmen die Verläufe, die geplottet werden, wenn ich D ändere. Bei dem Skript mit dem For-Loop stimmen die Verläufe leider nicht. Habt ihr eine Idee, woran das liegen kann? Also, was habe ich falsch gemacht?

Vielen Dank schon mal im Voraus!

Liebe Grüße

Anonymous_Person

Das ist meine ODE45-Funktion:
Code:

function dydt = RS_EMS(t,y,D,w0,g)
dydt=[ y(2)    ;
       g-2*D*w0*y(2)-(w0^2)*y(1)];
end
 


Das ist mein Skript mit For-Loop:
Code:

clc
clear
close all

h=0.1
c=160000 % Steifigkeit in N/m
m=80 % Masse in kg
g=9.81 % Erdbeschleunigung in N/kg=m/s^2
w0=sqrt(c/m) %Eigenfrequenz in 1/s
D = 0 %Dämpfungsmaß


%Anfangsbedingungen
q0=0 % Anfangsauslenkung in m
v0=sqrt(2*g*h) % Anfangsgeschwindigkeit in m/s
y0=[q0;v0] % Anfangswerte der Zustandsmatrix

Ts=1 % Simulationsdauer in s

tol=1e-3 % Toleranzangabe. Je kleiner tol, desto genauer die numerische Lösung

tspan=[0,Ts] % Simulationsintervall (t)
options = odeset('RelTol',10*tol,'AbsTol',tol);
[T,Y]=ode45(@(t,y) RS_EMS(t,y,D,w0,g),tspan,y0,options); % Function Handle @


%Plot der Ergebnisse

for i = 0:0.2:2 %Es kommen keine gedämpften Verläufe raus. Warum??
    Ds = i
    FK = 2*Ds*w0*Y(:,2)*m + (w0^2)*Y(:,1)*m;
    hold on
    plot(T,FK)
    hold off
end

title('Änderung der Kontaktkraft bei verschiedenen Dämpfungsmaßen D')
xlabel('Zeit in s')
ylabel('FK in N')
legend('D0','D0.2','D0.4','D0.6','D0.8','D1','D1.2','D1.4','D1.6','D1.8','D2')
grid on
 


Das ist mein Skript ohne Loop:
Code:

clc
clear
close all

%d=2 % Dämpferkonstante in N/(m/s)=kg/s
h=0.1
c=160000 % Steifigkeit in N/m
m=80 % Masse in kg
g=9.81 % Erdbeschleunigung in N/kg=m/s^2
w0=sqrt(c/m) %Eigenfrequenz in 1/s
D = 0


%Anfangsbedingungen
q0=0 % Anfangsauslenkung in m
v0=sqrt(2*g*h) % Anfangsgeschwindigkeit in m/s
y0=[q0;v0] % Anfangswerte der Zustandsmatrix

Ts=1 % Simulationsdauer in s

tol=1e-3 % Toleranzangabe. Je kleiner tol, desto genauer die numerische Lösung

tspan=[0,Ts] % Simulationsintervall (t)
options = odeset('RelTol',10*tol,'AbsTol',tol);
[T,Y]=ode45(@(t,y) RS_EMS(t,y,D,w0,g),tspan,y0,options); % Function Handle @


%Plot der Ergebnisse
FK = 2*D*w0*Y(:,2)*m + (w0^2)*Y(:,1)*m;
plot(T,FK)
title('Änderung der Kontaktkraft bei verschiedenen Dämpfungsmaßen D')
xlabel('Zeit in s')
ylabel('FK in N')
grid on
 
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.05.2021, 13:18     Titel:
  Antworten mit Zitat      
Hallo,

wenn du wirklich den Verlauf für verschiedene D haben willst, dann musst du m.E. das Lösen der DGL in die for-Schleife mit hineinziehen, denn die Lösung der DGL ist ja von D abhängig.

Zitat:
Bei dem Skript mit dem For-Loop stimmen die Verläufe leider nicht.

Wie sollen die Verläufe denn aussehen?

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
 
Anonymous_Person
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2021, 13:45     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich habe hier mal drei Verläufe ohne Loop (D=0, D=0.4, D=2) und den Verlauf mit Loop eingefügt.

Wie genau kann ich das Lösen der DGL mit in den Loop einbeziehen? Ich habe gerade mal so probiert (Leider erfolglos):

Code:

%Plot der Ergebnisse

for i = 0:0.2:2 %Es kommen keine gedämpften Verläufe raus. Warum??
    Ds = i
    [T,Y]=ode45(@(t,y) RS_EMS(t,y,D,w0,g),tspan,y0,options);
    FK = 2*Ds*w0*Y(:,2)*m + (w0^2)*Y(:,1)*m;
    hold on
    plot(T,FK)
    hold off
end
 


Liebe Grüße

Anonymous_Person

Verlauf_mit_Loop.JPG
 Beschreibung:

Download
 Dateiname:  Verlauf_mit_Loop.JPG
 Dateigröße:  89.57 KB
 Heruntergeladen:  245 mal
Verlauf_mit_D0.JPG
 Beschreibung:

Download
 Dateiname:  Verlauf_mit_D0.JPG
 Dateigröße:  62.02 KB
 Heruntergeladen:  243 mal
Verlauf_mit_D0.4.JPG
 Beschreibung:

Download
 Dateiname:  Verlauf_mit_D0.4.JPG
 Dateigröße:  42.74 KB
 Heruntergeladen:  242 mal
Verlauf_mit_D2.JPG
 Beschreibung:

Download
 Dateiname:  Verlauf_mit_D2.JPG
 Dateigröße:  46.29 KB
 Heruntergeladen:  236 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.05.2021, 14:58     Titel:
  Antworten mit Zitat      
Hallo,

du musst Ds statt D übergeben, sonst wird ja immer dasselbe gerechnet:
[T,Y]=ode45(@(t,y) RS_EMS(t,y,Ds,w0,g),tspan,y0,options);

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
 
Anonymous_Person
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 21.05.21
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2021, 15:10     Titel:
  Antworten mit Zitat      
Hallo Harald,

es hat so geklappt. Vielen lieben Dank!!!

Liebe Grüße

Anonymous_Person
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.