Värähtelyliike

2.10.01 HA

Vapaa vaimentamaton , eli harmoninen värähtely

> restart: dyht:=m*diff(y(t),t,t)+k*y(t)=0;

Warning, the name changecoords has been redefined

dyht := m*diff(y(t),`$`(t,2))+k*y(t) = 0

> parametrit:={k=2,m=1}: assign(parametrit): k:='k': m:='m': # Mutta vapautetaan takaisin.

> w0yht:=w0=sqrt(k/m): T:=2*Pi/w0: f0:=1/T: # w0yhtälö sijoitukseksi: assign(w0yht):

Yrite:

> y:=A*cos(w0*t)+B*sin(w0*t); dy:=diff(y,t); d2x:=diff(dy,t);

y := A*cos(w0*t)+B*sin(w0*t)

dy := -A*sin(w0*t)*w0+B*cos(w0*t)*w0

d2x := -A*cos(w0*t)*w0^2-B*sin(w0*t)*w0^2

> vasenp:=m*d2x+k*y;

vasenp := m*(-A*cos(w0*t)*w0^2-B*sin(w0*t)*w0^2)+k*...

> assign(w0yht): w0;

sqrt(k/m)

> simplify(vasenp);

0

Yritteemme siis toimii.

Alkuehdot:: x(0)=1, x'(0)=0, vaikkapa:

> map(eval,{subs(t=0,y)=1,subs(t=0,dy)=0}): solve(%,{A,B});assign(%):y;

{A = 1, B = 0}

cos(sqrt(k/m)*t)

> assign(parametrit):plot(y,t=0..2*Pi);

[Maple Plot]

Tämän mallin pohjalta on helppo tehdä erilaisia tapauksia. Muutellaan vain parametrejä ja alkuehtoja.

Lisäksi amplitudi ja vaihekulma, eli x = cos(omega[0]*t-delta) . Jätetään oppilaille.

Vrt. Matlab: varahtely.m Oppilaat: Tee BdiP esim. vihko s. -28-

Vaimennettu, tapaus I, ylivaimennus (vapaa, HY)

> restart:

Warning, the name changecoords has been redefined

> karpol:=lambda^2+c/m*lambda+k/m;

karpol := lambda^2+c*lambda/m+k/m

> Lambda:=solve(karpol=0,lambda);

Lambda := 1/2*(-c+sqrt(c^2-4*m*k))/m, 1/2*(-c-sqrt(...

> diskr:=c^2-4*m*k:

> y:=C1*exp(Lambda[1]*t)+C2*exp(Lambda[2]*t);

y := C1*exp(1/2*(-c+sqrt(c^2-4*m*k))*t/m)+C2*exp(1/...

>

Kriittinen vaimennus, LRT ratkaisun etsintä

Alkeellinen perustapa:

> restart:y:=t*exp(lambda*t);dy:=diff(y,t);d2y:=diff(dy,t);

Warning, the name changecoords has been redefined

y := t*exp(lambda*t)

dy := exp(lambda*t)+t*lambda*exp(lambda*t)

d2y := 2*lambda*exp(lambda*t)+t*lambda^2*exp(lambda...

> m*d2y+c*dy+k*y;coeff(%,exp(lambda*t));collect(%,t);kert:=coeffs(%,t);

m*(2*lambda*exp(lambda*t)+t*lambda^2*exp(lambda*t))...

m*(2*lambda+t*lambda^2)+c*(1+lambda*t)+k*t

(m*lambda^2+c*lambda+k)*t+2*m*lambda+c

kert := 2*m*lambda+c, m*lambda^2+c*lambda+k

> yhtsys:={kert[1]=0,kert[2]=0};solve({kert[1]=0},{lambda});subs(%,kert[2]=0);map(expand,4*m*%);

yhtsys := {2*m*lambda+c = 0, m*lambda^2+c*lambda+k ...

{lambda = -1/2*c/m}

-1/4*c^2/m+k = 0

-c^2+4*m*k = 0

Sama ns. "elegantisti". Määritellään diffyhtälö niinkuin se yleensäkin Maplessa tehdään:

> restart:dyht:=m*diff(y(t),t,t)+c*diff(y(t),t)+k*y(t)=0;

Warning, the name changecoords has been redefined

dyht := m*diff(y(t),`$`(t,2))+c*diff(y(t),t)+k*y(t)...

> yf:=t->t*exp(lambda*t);

yf := proc (t) options operator, arrow; t*exp(lambd...

> vp:=lhs(dyht);

vp := m*diff(y(t),`$`(t,2))+c*diff(y(t),t)+k*y(t)

> eval(subs(y(t)=yf(t),vp)):collect(%,exp(lambda*t));

(m*(2*lambda+t*lambda^2)+c*(1+lambda*t)+k*t)*exp(la...

> coeff(%,exp(lambda*t));

m*(2*lambda+t*lambda^2)+c*(1+lambda*t)+k*t

> expand(%);

2*m*lambda+m*t*lambda^2+c+c*lambda*t+k*t

> p1:=collect(%,t);

p1 := (m*lambda^2+c*lambda+k)*t+2*m*lambda+c

> yht:={coeff(p1,t)=0,coeff(p1,t,0)=0};

yht := {m*lambda^2+c*lambda+k = 0, 2*m*lambda+c = 0...

Ratkaisemme lambda :n jälkimmäisestä.

> Lambda:=solve(yht[2],lambda);

Lambda := -1/2*c/m

Sijoitamme edelliseen, saamme kriittisen vaimennuksen ehdon, joka oletuksemme mukaan on voimassa.

> subs(lambda=Lambda,yht[1]);

-1/4*c^2/m+k = 0

> map(expand,4*m*%);

-c^2+4*m*k = 0

Katsotaan vielä kerrotussa muodossa. Yritteemme toteuttaa siis diffyhtälön ja meillä on käsissämme 2 LRT ratkaisua.

Exa 2, KRE s. 90

> restart:

Warning, the name changecoords has been redefined

> dyht:=m*diff(y(t),t,t)+c*diff(y(t),t)+k*y(t)=0;
karyht:=m*lambda^2+c*lambda+k=0;diskr:=c^2-4*m*k;

dyht := m*diff(y(t),`$`(t,2))+c*diff(y(t),t)+k*y(t)...

karyht := m*lambda^2+c*lambda+k = 0

diskr := c^2-4*m*k

> m:=9.082:k:=890:

> karyht;

9.082*lambda^2+c*lambda+890 = 0

>

Tapaus I, ylivaimennus

> c:=200:

> karyht;

9.082*lambda^2+200*lambda+890 = 0

> Lambda:=solve(karyht,lambda);

Lambda := -6.189849488, -15.83173166

> y:=C1*exp(Lambda[1]*t)+C2*exp(Lambda[2]*t);

y := C1*exp(-6.189849488*t)+C2*exp(-15.83173166*t)

> AE:=map(eval,{subs(t=0,y)=0.15,subs(t=0,diff(y,t))=0});

AE := {-6.189849488*C1-15.83173166*C2 = 0, 1.*C1+1....

> solve(AE,{C1,C2});

{C2 = -.9629628392e-1, C1 = .2462962839}

> Y:=subs(%,y);

Y := .2462962839*exp(-6.189849488*t)-.9629628392e-1...

> plot(Y,t=0..1);

[Maple Plot]

>

Tapaus II, kriittinen vaimennus

> c:=179.81078: diskr;

-.340e-2

> karyht;

9.082*lambda^2+179.81078*lambda+890 = 0

> Lambda:=solve(karyht,lambda);

Lambda := -9.899294208+.3208182176e-2*I, -9.8992942...

> digits:=50;Lambda:=solve(karyht,lambda);

digits := 50

Lambda := -9.899294208+.3208182176e-2*I, -9.8992942...

Kriittinen vaimennus on tietysti ideaalitapaus, käytännön laskuissa tulee pieni imag. termi tai sitten pieni ero reaalisten lambdojen välillä.

Tässä saadaan hyvä approksimaatio jättämällä pienet imaginaariosat pois.

> lambda:=Re(Lambda[1]);

lambda := -9.899294208

> y:=(C1+C2*t)*exp(lambda*t);

y := (C1+C2*t)*exp(-9.899294208*t)

> AE:=subs(t=0,y)=0.15,subs(t=0,diff(y,t))=0;solve({AE},{C1,C2});Y:=subs(%,y);plot(Y,t=0..1);

AE := C1*exp(0.) = .15, C2*exp(0.)-9.899294208*C1*e...

{C1 = .1500000000, C2 = 1.484894131}

Y := (.1500000000+1.484894131*t)*exp(-9.899294208*t...

[Maple Plot]

Kuva näyttää jokseenkin samanlaiselta kuin ylivaimennetussa tap.

Tapaus III, alivaimennus

> lambda:='lambda':

> c:=100:

> karyht;Lambda:=solve(karyht,lambda);

9.082*lambda^2+100*lambda+890 = 0

Lambda := -5.505395287+8.227190216*I, -5.505395287-...

> lambda:=Lambda[1]:alpha:=-Re(lambda);w1:=abs(Im(lambda));

alpha := 5.505395287

w1 := 8.227190216

w1 on KRE:n omega*

> y:=exp(-alpha*t)*(C1*cos(w1*t)+C2*sin(w1*t));

y := exp(-5.505395287*t)*(C1*cos(8.227190216*t)+C2*...

> AE:=subs(t=0,y)=0.15,subs(t=0,diff(y,t))=0;solve({AE},{C1,C2});Y:=subs(%,y);

AE := exp(0.)*(C1*cos(0.)+C2*sin(0.)) = .15, -5.505...

{C1 = .1500000000, C2 = .1003756169}

Y := exp(-5.505395287*t)*(.1500000000*cos(8.2271902...

> plots[display](array([[plot(Y,t=0..4),plot(Y,t=0.5..3),plot(Y,t=1..3)]]));

[Maple Plot]

> plot(Y,t=0..4,axes=boxed);

[Maple Plot]

Tehtävän Matlab-käsittelyä varten tarvittava Maple-osuus:

> restart:y:=exp(alpha*t)*(C1*cos(w1*t)+C2*sin(w1*t));

Warning, the name changecoords has been redefined

y := exp(alpha*t)*(C1*cos(w1*t)+C2*sin(w1*t))

> dy:=diff(y,t);

dy := alpha*exp(alpha*t)*(C1*cos(w1*t)+C2*sin(w1*t)...

> dy:=collect(dy,{cos(w1*t),sin(w1*t),exp(-alpha*t)}):lprint(%);

(alpha*exp(alpha*t)*C1+exp(alpha*t)*C2*w1)*cos(w1*t)+(alpha*exp(alpha*t)*C2-exp(alpha*t)*C1*w1)*sin(w1*t)

> eval(subs(t=0,y))=y0,eval(subs(t=0,dy))=v0;

C1 = y0, alpha*C1+C2*w1 = v0

> solve({%},{C1,C2}):lprint(%);

{C2 = (-alpha*y0+v0)/w1, C1 = y0}

>

Pakotettu värähtely, EHY

> restart:dyht:=m*diff(x(t),t,t)+c*diff(x(t),t)+k*x(t)=F0*cos(w*t);

Warning, the name changecoords has been redefined

dyht := m*diff(x(t),`$`(t,2))+c*diff(x(t),t)+k*x(t)...

Käytetään omega :n sijasta w :tä, koska omega0 ei ole hauska. Voisimme johtaa kaavat Maple-avusteisesti, mutta yhtä hyvin voimme johtaa ne kynä/paperi/oppikirja-tekniikalla siltä osin, kuin se ei ole liian työlästä.

Tapaus 1. Vaimentamaton pakkovärähtely

>

Ei resonanssi , eli omega <> omega[0]

> yh:=t->C*cos(w0*t-delta); # Operoimme funktioilla (eikä lausekkeilla).

yh := proc (t) options operator, arrow; C*cos(w0*t-...

> w0=sqrt(k/m); # Emme tee sijoitusta, muistutamme vain

w0 = sqrt(k/m)

> yp:=F0/(m*(w0^2-w^2))*cos(w*t);

yp := F0*cos(w*t)/(m*(w0^2-w^2))

> yp:=t->kerroin*F0*cos(w*t);

yp := proc (t) options operator, arrow; kerroin*F0*...

> kerroin:=1/(m*(w0^2-w^2));

kerroin := 1/(m*(w0^2-w^2))

> #kerroin:=1/(k*(1-(w/w0)^2)); # Kumpi vain, molemmathan ovat samoja.

> yp(t);

F0*cos(w*t)/(m*(w0^2-w^2))

> y:=yh+yp; # Funkiot lasketaan yhteen.

y := yh+yp

> y(t);

C*cos(-w0*t+delta)+F0*cos(w*t)/(m*(w0^2-w^2))

> a0:=F0/k*rho;

a0 := F0*rho/k

> rho:=1/(1-(w/w0)^2);

rho := 1/(1-w^2/(w0^2))

>

>

Resonanssi, omega = omega[0]

> restart:

Warning, the name changecoords has been redefined

> yp:=t*(a*cos(w0*t)+b*sin(w0*t));

yp := t*(a*cos(w0*t)+b*sin(w0*t))

> dyp:=diff(yp,t):d2xp:=diff(dxp,t):

> m*d2xp+k*xp=F0*cos(w0*t):collect(%,{t,sin(w0*t),cos(w0*t)});#kert:=coeffs(%,t);

k*xp = F0*cos(w0*t)

> -m*a*w0^2+k*a+2*m*b*w0=F0,-m*b*w0^2+k*b=0,2*m*a*w0=0;

-m*a*w0^2+k*a+2*m*b*w0 = F0, -m*b*w0^2+k*b = 0, 2*m...

> solve({-m*a*w0^2+k*a+2*m*b*w0=F0,2*m*a*w0=0},{a,b});

{b = 1/2*F0/(m*w0), a = 0}

> assign(%);

> yp;

1/2*t*F0*sin(w0*t)/(m*w0)

> m:=1:F0:=1:w0:=10:

> plot(yp,t=0..30);

[Maple Plot]

>

Huojunta, beats

>

Tapaus 2. Vaimennettu pakkovärähtely

> restart:W0:=w0=sqrt(k/m):assign(W0): w0:='w0':

Warning, the name changecoords has been redefined

> Aab:={a=F0*m*(w0^2-w^2)/detA,b=F0*w*c/detA,detA=m^2*(w0^2-w^2)^2+w^2*c^2};

Aab := {b = F0*w*c/detA, detA = m^2*(w0^2-w^2)^2+w^...

> assign(Aab);

> detA:='detA':a:='a':b:='b':

> yht2:={alpha=c/(2*m),diskr=c^2-4*m*k,w1=sqrt(-diskr)/(2*m),beta=I*w1};

yht2 := {alpha = 1/2*c/m, diskr = c^2-4*m*k, beta =...

> assign(yht2):

> alpha:='alpha':w1:='w1': beta:='beta':

> a:='a': b:='b':#beta;

> yh:=exp(-alpha*t)*(A*cos(w1*t)+B*sin(w1*t));

yh := exp(-alpha*t)*(A*cos(w1*t)+B*sin(w1*t))

> yp:=a*cos(w*t)+b*sin(w*t);

yp := a*cos(w*t)+b*sin(w*t)

> ypp:=C1*cos(w*t-delta);

ypp := C1*cos(w*t-delta)

> ypp:=expand(ypp);

ypp := C1*cos(w*t)*cos(delta)+C1*sin(w*t)*sin(delta...

> coeff(yp,cos(w*t))=coeff(ypp,cos(w*t)),coeff(yp,sin(w*t))=coeff(ypp,sin(w*t));

a = C1*cos(delta), b = C1*sin(delta)

> %solve({%},{C1,delta}):

> %map(allvalues,%):

> C1:=sqrt(a^2+b^2);#delta:=arctan(b,a);

C1 := sqrt(a^2+b^2)

> assign(Aab);

> C1;

sqrt(F0^2*m^2*(w0^2-w^2)^2/((m^2*(w0^2-w^2)^2+w^2*c...

>

> C1:=simplify(%,symbolic);

C1 := F0/(sqrt(m^2*w0^4-2*m^2*w0^2*w^2+m^2*w^4+w^2*...

> #C1:=F0/(sqrt(factor(m^2*w0^4-2*m^2*w0^2*w^2+m^2*w^4+w^2*c^2)));

> m^2*(w0^2-w^2)^2+w^2*c^2;

m^2*(w0^2-w^2)^2+w^2*c^2

> expand(%);

m^2*w0^4-2*m^2*w0^2*w^2+m^2*w^4+w^2*c^2

> C1:=F0/sqrt(m^2*(w0^2-w^2)^2+w^2*c^2);

C1 := F0/(sqrt(m^2*w0^4-2*m^2*w0^2*w^2+m^2*w^4+w^2*...

> b;

F0*w*c/(m^2*(w0^2-w^2)^2+w^2*c^2)

> a;

F0*m*(w0^2-w^2)/(m^2*(w0^2-w^2)^2+w^2*c^2)

> b/a;

w*c/(m*(w0^2-w^2))

> eta:=arctan(w*c,(m*(w0^2-w^2)));

eta := arctan(w*c,m*(w0^2-w^2))

>

Ratkaistaan konkreettinen esim. enemmän Maple-avusteisesti

> restart:

Warning, the name changecoords has been redefined

> EHY:=m*diff(y(t),t,t)+c*diff(y(t),t)+k*y(t)=r(t):

m=massa, c=vaimennuskerroin, k=jousivakio, r(t)=ulkoinen voima.

> HY:=lhs(EHY)=0:HY:=subs(m=1,c=4,k=24,r(t)=10*cos(omega*t),HY);

HY := diff(y(t),`$`(t,2))+4*diff(y(t),t)+24*y(t) = ...

> diskr:=c^2-4*m*k: subs(m=1,c=4,k=24,diskr);

-80

Siis alivaimennus, joten värähtelyä on luvassa.

Ajatellaan, että HY on jo selkäytimessä, annetaan siten rutiinitehtävä Maplen dsolve :lle .

> dsolve(HY,y(t));

y(t) = _C1*exp(-2*t)*sin(2*sqrt(5)*t)+_C2*exp(-2*t)...

> yh:=rhs(%);

yh := _C1*exp(-2*t)*sin(2*sqrt(5)*t)+_C2*exp(-2*t)*...

> parametrit:={m=1,c=4,k=24}:assign(parametrit):

> omega[1]=sqrt(-'diskr')/(2*'m'),omega[1]=sqrt(-diskr)/(2*m);
alpha='c'/(2*'m'),alpha=c/(2*m);

>

omega[1] = 1/2*sqrt(-diskr)/m, omega[1] = 2*sqrt(5)...

alpha = 1/2*c/m, alpha = 2

Pitipä tarkistaa, että Maple laski oikein, kyllä vaan!

Suoritetaan EHY-yritelasku peruskäyttötavalla vetoamatta Maplen diffyhtälörakenteeseen.

Yrite:

> xp:=a*cos(omega*t)+b*sin(omega*t): dxp:=diff(xp,t):d2xp:=diff(dx,t):vp:=m*d2xp+c*dxp+k*xp;
oip:=10*cos(omega*t);abyht:={coeff(vp,cos(omega*t))=coeff(oip,cos(omega*t)),coeff(vp,sin(omega*t))=0};

>

vp := -4*a*sin(omega*t)*omega+4*b*cos(omega*t)*omeg...

oip := 10*cos(omega*t)

abyht := {4*b*omega+24*a = 10, -4*a*omega+24*b = 0}...

> ab:=solve(abyht,{a,b});

ab := {a = 15*1/(36+omega^2), b = 5/2*omega/(36+ome...

> assign(ab):

> C12:=a^2+b^2;

C12 := 225*1/((36+omega^2)^2)+25/4*omega^2/((36+ome...

> C12:=normal(C12);

C12 := 25/4*1/(36+omega^2)

Max-amplitudi saadaan, kun omega =0, joten tässä ei resonanssityylistä maksimia synny (vaimennus on suuri).

Seuraava lasku on siten tarpeeton, mutta laitetaan se mukaan, tässähän on helppo vaihdella parametrejä.

> nim:=denom(%);

nim := 144+4*omega^2

> solve(diff(nim,omega)=0,omega);

0

> C1:=sqrt(C12);

C1 := 5/2*sqrt(1/(36+omega^2))

> plot(C1,omega=0..6);

[Maple Plot]

> kuva6:=plot(subs(omega=6,xp),t=0..5,color=red):kuva4:=plot(subs(omega=4,xp),t=0..5,color=blue):kuva1:=plot(subs(omega=1,xp),t=0..5,color=gold):

> plots[display]([kuva1,kuva4,kuva6]);

[Maple Plot]

> w1;

w1

> C1;

5/2*sqrt(1/(36+omega^2))

> evalf(subs(omega=4,C1));evalf(subs(omega=6,C1));evalf(subs(omega=1,C1));

.3466876227

.2946278255

.4109974683

>

Yleiset lineaariset yhtälöt