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 endVi kan sedan följa tidsutvecklingen genom att utnyttja ode23. (Se även
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