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

Auf zweite Ableitung einer DGL-Lösung zugreifen

 

Johannes95
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 31.05.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.05.2019, 16:22     Titel: Auf zweite Ableitung einer DGL-Lösung zugreifen
  Antworten mit Zitat      
Guten Tag,
Ich hoffe mir kann hier jemand helfen. Meine Aufgabe ist es, ein Viertelfahrzeugmodell (Rad --> Aufbau --> Sitz) mit gegebenen Werten in Matlab zu implementieren, mit einem Sinus-Sweep anregen zu lassen und einmal die Bewegung (z) des Aufbaus über der Zeit plotten, anschließend die Beschleunigung (z'') des Aufbaus über der Zeit. Ich habe das Implementieren und auch das Plotten der Bewegung hingekriegt, aber bei der Beschleunigung hänge ich nun seit Tagen fest. Ich füge mal eben meinen Hauptcode und anschließend meine Ode-Funktion ein.

Hauptcode:

Code:
[code]%% Parameter deklarieren

global m1 c1 A a;

m1 = 25;
m2 = 350;
m3 = 75;
c1 = 220000;
c2 = 18000;
c3 = 80000;
d2 = 1200;
d3 = 500;
a = 0.005;              % Amplitude der Straßenunebenheit

%% Matrizen erzeugen

M = [m1 0 0;            % Massenmatrix
    0 m2 0;
    0 0 m3];

D = [d2 -d2 0;          % Dämpfermatrix
    -d2 d2+d3 -d3;
    0 -d3 d3];

C = [c2+c1 -c2 0;       % Federmatrix
    -c2 c2+c3 -c3;
    0 -c3 c3];

% Funktionsmatrix A

A = [zeros(3) eye(3);
    -C/M -D/M];

%% Eigenfrequenzenberechnung

[V,D] = eig(A);     % D = Eigenwerte, V = Eigenvektoren

w_eig = imag(D);        % Eigenkreisfrequenzen
f_eig = w_eig/(2*pi);   % Eigenfrequenzen (Rad --> Aufbau --> Sitz


%% Numerische Lösung

tspan = 0:0.001:3;    % Zeitraum: 0 - 3 Sekunden in 0.001s-Schritten


x0 = zeros(6,1);        % Startwerte für z1, z2, z3, z1_p, z2_p, z3_p


[t,x] = ode45(@ODE_Viertelfahrzeug_Labor, tspan, x0);       % Solveraufruf



%% Plotten

figure(1);

subplot(2,1,1);
plot(t,x(:,2));
title('Weg-Diagramm Aufbau');
xlabel('Zeit t in s');
ylabel('Auslenkung z2 in m');

subplot(2,2,2);
plot(t,??);
title('Beschleunigungsdiagramm Aufbau');
xlabel('Zeit t in s');
ylabel('Beschleunigung z2_p in m/s²');[/code]


und hier nochmal die ODE-Funktion:

Code:
[code]function [xi_p] = ODE_Viertelfahrzeug_Labor(t,xi)
%
global m1 c1 A a;
%  

%% Sinus-Sweep erstellen

f = t*10;               % Frequenz f
h = a*sin(2*pi*f*t);    % Amplitudenverlauf h

% Rechte Seite:
F = [zeros(3,1); c1*h/m1; zeros(2,1)];

% Differentialgleichung:
xi_p = A*xi+F;
end
[/code]



Zur Info, meinen xi-Vektor in der ODE-Funktion habe ich erstellt, um das DGL-System zweiter Ordnung in ein System erster Ordnung zu überführen. In xi stehen untereinander die Einträge xi=[z1, z2, z3, z1', z2', z3']. Das wurde mir so in meinem Studium beigebracht, ich hoffe es verwirrt niemanden.

Mein Hauptproblem liegt im Folgenden: Meine ODE-Funktion erhält ja Startwerte tspan und x0 aus dem Hauptprogramm und gibt mir jeweils die Zeitwerte t und die berechnete Matrix x zurück. In der 6-spaltigen Matrix x stehen in der ersten Spalte alle Werte von z1, in der zweiten Spalte alle Werte von z2, in der dritten Spalte alle Werte von z3, und anschließend noch alle Ableitungen (z1', z2' und z3'). Diese kann ich dementsprechend auch plotten. Aber wie greife ich denn auf die zweiten Ableitungen (z1'', z2'' und z3'') zu, um diese zu plotten?

Ich würde mich über eine Antwort sehr freuen und bedanke mich schonmal bei jedem, der sich für mich die 5 Minuten Zeit nimmt.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.06.2019, 16:39     Titel:
  Antworten mit Zitat      
Hallo,

eine Möglichkeit: mit der Lösung nochmal die rechte Seite aufzurufen und aus den Rückgaben die zweiten Ableitungen extrahieren.

Globale Variablen können hier übrigens leicht vermieden werden, siehe das Beispiel "Pass Extra Parameters to ODE Function" aus der Doku von ode45.

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
.





 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.