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

Suche Lösung für Simulation einer Schwingungsgleichung

 

matnap

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2011, 11:10     Titel: Suche Lösung für Simulation einer Schwingungsgleichung
  Antworten mit Zitat      
Hallo zusammen,


ich hab eine Übungsaufgabe :


Ich soll folgende Schwingungsimulieren:

X''(t)+0,4x'(t)+9x(t)=exp(t)*sin(t)

Es soll mit ODE45 gelöst werden.

Leider habe ich keine Ahnung wie ich auf mathematischem Weg zu einer Lösung kommt.

Gelöst soll es in Matlab nicht in Simulink.

Vielen Dank


Harald
Forum-Meister

Forum-Meister


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

hast du dir die Hilfe zu ode45 schon angesehen?
Wo liegen die Probleme?

Für Anregungen siehe auch dieser Thread
http://www.gomatlab.de/visualisieru.....dgl-2-ordnung-t18799.html

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2011, 11:39     Titel:
  Antworten mit Zitat      
Mir fehlt der mathematische Hintergrund wie ich die Aufgabe für Matlab verständlich machen kann.

Das lösen mit ODE45 müsste ich hinbekommen.
 
Harald
Forum-Meister

Forum-Meister


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

hier wird erklärt, welche Umformungen du vornehmen musst.
http://www.mathworks.com/support/tech-notes/1500/1510.html#reduce#
Achte darauf, wie aus Gleichung (2) die Gleichungen (3) und (5) werden.

Zur tatsächlichen Lösung siehe u.a. Beispiel 2 aus der Doku zu ode45.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2011, 20:23     Titel:
  Antworten mit Zitat      
Ich hab es irgendwie nicht hinbekommen,

Ich brauche doch nur das DGL System:


z1=x
z2=z1'
z3=z2'

und dann muss dann irgendwie in ODE45

Die Anfangbedingung sind x(t)=0 und x'(t)=0

kann mir das einer lösen, ich kann das dann besser Rückwärts nachvollziehen.
 
Harald
Forum-Meister

Forum-Meister


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

nicht zu sehr um die Ecke denken.

z1 = x
z2 = x'

damit
z1' = z2 (weil z1' = x' = z2)
z2' = -0.4 z2 - 9 z1 + exp(t) sin(t) (weil z2' = x'' = [nach x'' aufgelöste DGL]

Der Rest ist in der Doku von ode45 beschrieben.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.07.2011, 13:17     Titel:
  Antworten mit Zitat      
Irgendwie bin ich unfähig.


dgl.m


Code:
t0 = 0;
t1 = 10;
x0=[0;0];
tspan=[t0 t1];
[t,x]=ode45('dgl2',tspan,x0);
clf;
hold on;
plot(t,x(:,1),'-b');
plot(t,x(:,2),'-g');


dgl2.m
Code:
function zp= dgl2(z,t)

zp = [ z(2);
   -0.4*z(2)+9*z(1) - exp(t)*sin(t)];

end  


Als Fehlermeldung kommt immer :

Zitat:
??? Attempted to access z(2); index out of bounds because numel(z)=1.

Error in ==> dgl2 at 3
zp = [ z(2);

Error in ==> odearguments at 98
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.

Error in ==> ode45 at 172
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn,
...

Error in ==> dgl at 5
[t,x]=ode45('dgl2',tspan,x0);
 
Harald
Forum-Meister

Forum-Meister


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

sieht doch schon gut aus.

Es sind nur t und z vertauscht. So sollte es gehen:
Code:


Üblicherweise nimmt man statt 'dgl2' ein Function Handle @dgl2

Grüße,
Harald
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.