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

ode45 ergebnisabhängigen Parametern

 

loena0
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 24.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2017, 10:37     Titel: ode45 ergebnisabhängigen Parametern
  Antworten mit Zitat      
Hallo,

ich habe ein Feder-Dämpfer-System bei Be-und Entlastung gegeben.
Hier verhält sich die Federsteifigkeit "k" verschieden bei Be- und Entlastung (k1 bei Belastung und k2 bei Entlastung).
Um zu entscheiden, welchen Fall ich habe, soll für jeden Zeitpunkt die Relativverschiebung kontrolliert werden.
Um das zu machen habe ich eine myode-Funktion erstellt:
Code:
function dxdt = myode_dgl(t,x,k)
k1 = 7 ; %[kN/m] Belastungssteifigkeit
psi = 5 ; %Verhältnis k2/k1
k2 = k1*psi; %[kN/m] Entlastungssteifigkeit
kzz = 4 ; %[kN/m] Halbraumsteifigkeit (Feder)
czz = 5 ; %[kN/m^2] Halbraumsteifigkeit (Dämpfer)
F0b = 500 ; %[kN] Kontaktkraft zu Beginn der Belastung
Fg = 1000 ; %[kN] Gewchtskraft der Fallmasse
F = Fg-F0b;
mB = 1;
if x(1)-x(3) > 0
    k=k1;
else k=k2;
end
dzdt = [x(2) ; F/mB-k*(x(1)-x(3))/mB ; k*(x(1)-x(3))/czz+F0b/czz-kzz*x(3)/czz];


meine ode45-Funktion sieht so aus:
Code:
%Parameter
k1 = 7 ; %[kN/m] Belastungssteifigkeit
psi = 5 ; %Verhältnis k2/k1
k2 = k1*psi; %[kN/m] Entlastungssteifigkeit
kzz = 4 ; %[kN/m] Halbraumsteifigkeit (Feder)
czz = 5 ; %[kN/m^2] Halbraumsteifigkeit (Dämpfer)
F0b = 500 ; %[kN] Kontaktkraft zu Beginn der Belastung
Fg = 1000 ; %[kN] Gewchtskraft der Fallmasse
F = Fg-F0b;
mB = 1 ; %[kg] Gewicht der Fallmasse

y0   = [0 ; 0 ; 0]; %Anfangswerte [z1 ; z1* ; z2]
tspan = [0 10];     %Zeitintervall

% Integration des Anfangswertproblems (definiert im function file
% myode_dgl.m)
[t,x] = ode45 (@myode_dgl, tspan , y0);

z1  = [1 0 0] * x' ; %Verschiebung Fallmasse
z1punkt = [0 1 0] * x' ; %Geschwindigkeit Masse
z2  = [0 0 1 ] * x' ; %Verschiebung Boden
z2punkt = gradient(z2,t); %Geschwindigkeit Boden

Fk=(F/mB-k1*(z1-z2))/mB; %Kontaktkraft als Vektor

relativversch = z1-z2;
relativgeschw = z1punkt - z2punkt;
 


Die Fehlermeldung, die ich bekomme ist: "Output argument "dxdt" (and maybe others) not assigned during call to "myode_dgl"".
ich weiß nur nicht, wie ich das beheben kann, bzw kann ich überhaupt zu jedem Zeitpunkt mit ode45 meine Ergebnisse auswerten lassen?

Vielen Dank für eure Hilfe im Voraus,

Viele Grüße,

Lena
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.02.2017, 10:44     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Die Fehlermeldung, die ich bekomme ist: "Output argument "dxdt" (and maybe others) not assigned during call to "myode_dgl"".

Deine Funktion hat als Rückgabeargument dxdt. In der Funktion an sich nennst du das aber dzdt.

Zitat:
ich weiß nur nicht, wie ich das beheben kann

Dich für einen der beiden Namen entscheiden? ;)

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 24.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.02.2017, 11:57     Titel:
  Antworten mit Zitat      
Hallo,

das hat schon mal die Fehlermeldung behoben, danke (hätte ich auch selber drauf kommen können, peinlich:D).

Ich hab mir die Schleife aus der myode ausgeben lassen und es wird nur k1 für k genutzt. Habe ich einen Fehler hier in der Schleife?
Oder wie kann ich das schreiben, dass auch k2 genutzt wird und ich bei dem Plot von Fk über die Relativverschiebung ein Plot, wie im anghängten Bild rauskommt?

Fk über relativverschiebung.jpg
 Beschreibung:

Download
 Dateiname:  Fk über relativverschiebung.jpg
 Dateigröße:  681.34 KB
 Heruntergeladen:  369 mal
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.