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

Differentialgleichung zweiter Ordnung mit Faltung

 

wido
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 28.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2013, 15:38     Titel: Differentialgleichung zweiter Ordnung mit Faltung
  Antworten mit Zitat      
Hallo,
ich würde gerne mit Matlab eine Differentialgleichung (Dgl) zweiter Ordnung lösen, in der ein Parameter mit der Ableitung einer Variablen gefaltet wird.
Hintergrund ist eine Dgl für eine erzwungene Schwingung:
m*x''(t)+\int_0^t \! B(t-\tau)*x'(\tau) \, d\tau + c*x(t) = F(t)
Wobei F(t) die erregende Kraft ist und B(\tau) ein zeitabhängiger Dämpfungskoeffizient. Dieser wird aus dem Frequenzbereich mittels inverser Fouriertransformation in den Zeitbereich übertragen.
B(\tau)=\frac{2}{\pi} \int_0^\Omega \!B(\omega)*cos(\omega*t) \, d\omega
Integriert wird bis zu einem \Omega=5 \frac{1}{s}.
Bekannt sind F(t),m,c und B(\omega).

Meine Überlegung war die ODE-Funktion zu nutzen um die DGL zu lösen.
Jedoch weiß ich nicht wie man die ODE Funktion anwendet wenn innerhalb noch eine Faltung stattfindet.

Das Grundgerüst zur Lösung der DGL ist:

Funktion:
Code:
function acc=DGL(t,x)
%acc is the acceleration
%DGL is the equation of motion
m=1; %mass
c=2; %restoring factor
b=3; %damping factor!!! Need to be exchanged by convolution
w=1; %angular frequency
Fa=1; %amplitude of exciting force
F=Fa*sin(w*t); %time dependend force
acc=[x(2);1/m*(c*x(1)+F+b*x(2))]; %x(2) is the velocity and x(1) the displacement


Skript:
Code:
tspan=[0 20]; %time span
x0=[0;0]; %initial value
[t,x_value]=ode45('DGL',tspan,x0);
plot(t,x_value(:,1),'r:'),axis([0 20 -1 1])
 


Wäre super wenn mir jemand einen Hinweis geben könnte wie man die Faltung, bspw. mit der conv-Funktion in die DGL implementieren könnte. Stehe einfach voll auf dem Schlauch und weiß nicht mal ob es überhaupt möglich ist so ohne weiteres zeitabhängige Parameter in der ODE zu falten.

Vielen Dank.
Beste Grüße
Wido
Private Nachricht senden Benutzer-Profile anzeigen


wido
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 28.11.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.11.2013, 14:21     Titel:
  Antworten mit Zitat      
Das Problem ist ja, dass ich
Code:
eigentlich mitteinander falten muss. Ist es vlt möglich irgendwie an den
Code:
Wert des vorangegangenen Zeitschritts heranzukommen während die Ode45 Funktion rechnet?

Beispielsweise indem ich den wert x(2) abspeichere und dann im nächsten Zeitschritt wieder aufrufe.

Dann könnte ich die Faltung numerisch für jeden Zeitschritt der Ode45-Berechnung durchführen.
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.