Harmonisk oscillator

En kloss med massan m sitter via en fjäder med fjäderkonstant, k, fast i en vägg och kan glida på ett plant, friktionsfritt underlag.

Enligt Hooke's lag är kraften från en fjäder som töjts en sträcka x proportionell mot töjningen, F=-kx, där x är fjäderkonstanten. Newtons andra lag ger då rörelseekvationen

m d2x / d t2 = -kx

Vi kan skriva om ekvationen som två kopplade första ordningens differentialekvationer:

dx/dt = v
dv/dt= -kx/m

Denna ekvation kan naturligtvis lösas analytiskt! (Vilken svängningstid får man?)

Vi väljer starttid, t0=0s, sluttid tf=20s för att följa rörelsen under 20s. Vi antar att klossen startar i jämviktsläge vid t=0 med hastigheten v0=6m/s.

Vi kan skriva om ekvationen som två kopplade första ordningens differentialekvationer:

dx/dt = v
dv/dt= -kx/m

I matlab arbetar vi med en vektor y, där y1=x och y2=v, vi får alltså dy1/dt=y2 och dy2/dt=-k y1/m. Dessa relationer specificeras genom en liten rutin som lagras med filnamn harmosc.m .


function ydot=harmosc(t,y)
m=1; k=4;               % Massa, fjäderkonstant
ydot(1)=y(2);           % xdot=v
ydot(2)=-k*y(1)/m;  %vdot=-kx/m 
end
Vi kan sedan följa tidsutvecklingen genom att utnyttja ode23. (Se även help ode23 eller help ode45 eller kör demonstrationen även odedemo i matlab). Följande text kan "klistras" (Paste) rakt in i matlab-fönstret.


t0=0; tf=20;     %Begynnelsevillkor
x0=0; v0=6; 
y0=[x0,v0]';

[t,y]=ode23('harmosc',t0,tf,y0);
grid on
plot(t,y(:,1)),xlabel('t'), ylabel('x'),title('x=x(t)')
Försök nu att gå vidare och lös mer komplicerade rörelseekvationer! Som ett första steg kan du prova att införa en dämpning proportionell mot hastigheten, för att t.ex. ta hänsyn till luftmotstånd. Byt då uttrycket för ydot(2) i matlab mot

ydot(2)=-k*y(1)/m -b *ydot(1);
Du skulle också kunna prova den noggrannare metoden ode45

[t2,y2]=ode45('harmosc',t0,tf,y0);

Lycka till med dina egna rörelseekvationer! Ann-Marie


Detta är en mycket komprimerad HTML version av ett introduktionskompendium (.ps fil, M. Cederwall, m.fl.) om mekaniska rörelseekvationer i matlab.

http://fy.chalmers.se/~f3aamp/matlab/harmosc.html
1997-09-21