Differentiaaliyhtälöitä Laplace-muunnoksin, osa 2

4.10.2005 HA

Alustukset

>    restart:

>    with(inttrans): alias(L=laplace,IL=invlaplace,u=Heaviside):

>   

Esim. 1

>    restart:

>    with(inttrans): alias(L=laplace,IL=invlaplace,u=Heaviside):

>    diffyht:=diff(y(t),t,t)+4*y(t)=t*u(t-3);

diffyht := diff(y(t),`$`(t,2))+4*y(t) = t*u(t-3)

>    Ldy:=L(diffyht,t,s); # L-muunnetaan.

Ldy := s*(s*L(y(t),t,s)-y(0))-D(y)(0)+4*L(y(t),t,s) = 3*exp(-3*s)/s+exp(-3*s)/s^2

>    Ldy:=subs(y(0)=0,D(y)(0)=0,Ldy);  # Sijoitetaan alkuehdot.

Ldy := s^2*L(y(t),t,s)+4*L(y(t),t,s) = 3*exp(-3*s)/s+exp(-3*s)/s^2

>    Y:=solve(Ldy,L(y(t),t,s));    # Ratkaistaan algebr. yhtälö.

Y := exp(-3*s)*(3*s+1)/s^2/(s^2+4)

>    Yrat:=Y/exp(-3*s);          # Otetaan rationaalitekijä käsittelyyn.

Yrat := (3*s+1)/s^2/(s^2+4)

>    Yrat:=convert(Yrat,parfrac,s);  # Maple muuntaa helposti osamurroksi.

Yrat := 3/4/s+1/(4*s^2)+1/4*(-3*s-1)/(s^2+4)

>    y:=IL(Yrat*exp(-3*s),s,t); latex(%,a);   # Käänteismuunnetaan.

y := (1/4*t-3/4*cos(2*t-6)-1/8*sin(2*t-6))*u(t-3)

>    plot([t*u(t-3),y],t=0..10,color=[red,blue],title="Punainen heräte, sininen vaste",axes=frame);

[Maple Plot]

>    plot([t*u(t-3),y],t=10..20,color=[red,blue],title="Punainen heräte, sininen vaste",axes=frame);

[Maple Plot]

>    plot(y,t=0..5,title="Vaste",axes=frame,color=blue);

[Maple Plot]

>    y;

(1/4*t-3/4*cos(2*t-6)-1/8*sin(2*t-6))*u(t-3)

Tutkitaan derivaattojen jatkuvuutta:

>    yplus:=(-3/4*cos(2*t-6)-1/8*sin(2*t-6)+1/4*t);

>    dyplus:=diff(yplus,t);subs(t=3,dyplus): eval(%);

yplus := 1/4*t-3/4*cos(2*t-6)-1/8*sin(2*t-6)

dyplus := 1/4+3/2*sin(2*t-6)-1/4*cos(2*t-6)

0

>    plot(dyplus*u(t-3),t=0..5,axes=frame);

[Maple Plot]

Lasku ja kuva osoittavat, että derivaatta y' on jatkuva, mutta y'' on epäjatkuva 3:ssa. Lasketaan vielä:

>    d2yplus:=diff(dyplus,t);subs(t=3,d2yplus): eval(%);

d2yplus := 3*cos(2*t-6)+1/2*sin(2*t-6)

3

Oikeanpuoleinen y'' on 3 ja vasemmanpuoleinen on 0. Siispä todellakin y'' epäjatkuva (ja sitä ei ole olemassa) pisteessä t=3.

Tämä on tyypillistä: Herätteen epäjatkuvuus ilmenee toisen derivaatan epäjatkuvuutena, alemmat ovat jatkuvia.

>   

Vaimennetun värähtelijän impulssivaste ja delta-approksimointi

>    restart:with(inttrans):alias(u=Heaviside,L=laplace,IL=invlaplace):with(plots):#interface(showassumed=2):

Warning, the name changecoords has been redefined

>   

>    dy:=diff(y(t),t,t)+2*diff(y(t),t)+2*y(t)=Dirac(t);

dy := diff(y(t),`$`(t,2))+2*diff(y(t),t)+2*y(t) = Dirac(t)

>    Ldy:=L(dy,t,s);

Ldy := s*(s*L(y(t),t,s)-y(0))-D(y)(0)+2*s*L(y(t),t,s)-2*y(0)+2*L(y(t),t,s) = 1

>    Ldy:=subs(y(0)=0,D(y)(0)=0,Ldy);

Ldy := s^2*L(y(t),t,s)+2*s*L(y(t),t,s)+2*L(y(t),t,s) = 1

>    Y:=solve(Ldy,L(y(t),t,s));

Y := 1/(s^2+2*s+2)

>    yd:=IL(Y,s,t);

yd := exp(-t)*sin(t)

>    ydkuva:=plot(yd,t=0..5,color=black,thickness=2):

>    ydkuva;

[Maple Plot]

Approksimoidaan Diracin deltaa yksikköimpulssifunktioilla delta[epsilon]  .

>    delta:=(t,eps)->(u(t)-u(t-eps))/eps;

delta := proc (t, eps) options operator, arrow; (u(t)-u(t-eps))/eps end proc

>    plot([seq(delta(t,eps),eps=[0.5,0.25,0.1])],t=0..2,color=[blue,green,red]);

[Maple Plot]

>    dyeps:=diff(y(t),t,t)+2*diff(y(t),t)+2*y(t)=delta(t,epsilon);

dyeps := diff(y(t),`$`(t,2))+2*diff(y(t),t)+2*y(t) = (u(t)-u(t-epsilon))/epsilon

>    #assume(epsilon>0):

>    #Ldyeps:=L(dyeps,t,s);

>    #Ldyeps:=subs(y(0)=0,D(y)(0)=0,Ldyeps);

>    #Ye:=solve(Ldyeps,L(y(t),t,s));

Yllä olevien automaattisten sijaan suoritetaan enemmän käsinlaskutyylillä.

>    1/s*1/((s+1)^2+1);

1/(s*((s+1)^2+1))

>    convert(%,parfrac,s);

1/(2*s)+1/2*(-2-s)/(s^2+2*s+2)

>    g:=unapply(IL(%,s,t),t);

g := proc (t) options operator, arrow; 1/2-1/2*exp(-t)*cos(t)-1/2*exp(-t)*sin(t) end proc

Vaihtoehtoisesti voitaisiin käyttää integraalin muunnosta:

>    int(exp(-tau)*sin(tau),tau=0..t);

1/2-1/2*exp(-t)*cos(t)-1/2*exp(-t)*sin(t)

>    y:=(t,epsilon)->(g(t)-g(t-epsilon)*u(t-epsilon))/epsilon;

y := proc (t, epsilon) options operator, arrow; (g(t)-g(t-epsilon)*u(t-epsilon))/epsilon end proc

>    y(t,epsilon);

(1/2-1/2*exp(-t)*cos(t)-1/2*exp(-t)*sin(t)-(1/2-1/2*exp(-t+epsilon)*cos(t-epsilon)-1/2*exp(-t+epsilon)*sin(t-epsilon))*u(t-epsilon))/epsilon

>    kuva:=epsilon->plot([delta(t,epsilon),y(t,epsilon)],t=0..5,color=[blue,red],axes=box,title="Sininen herate, punainen vaste");

kuva := proc (epsilon) options operator, arrow; plot([delta(t,epsilon), y(t,epsilon)],t = 0 .. 5,color = [blue, red],axes = box,title =

>    #kuva(1);

>    #display(seq(kuva(1/k),k=1..10),insequence=true,view=[0..5,0..1]);

>   

>    ydkuva:=plot(yd(t),t=0..5,color=black,thickness=2):

>    display(seq(kuva(1/(2^k)),k=1..7),insequence=true,view=[0..5,-0.1..1]);

[Maple Plot]

>    display(seq(kuva(1/(2^k)),k=1..7),ydkuva,insequence=false,view=[0..5,-0.1..1]);

[Maple Plot]

>    ydkuva;

>   

[Maple Plot]

>   

Konvoluutioratkaisu

>    restart:with(inttrans):alias(u=Heaviside,L=laplace,IL=invlaplace):with(plots):

>   

Warning, the name changecoords has been redefined

>    dy:=diff(y(t),t,t)+3*diff(y(t),t)=r(t);

dy := diff(y(t),`$`(t,2))+3*diff(y(t),t) = r(t)

>    r:=t->u(t-1)-u(t-2);

r := proc (t) options operator, arrow; u(t-1)-u(t-2) end proc

>    plot(r,0..3);

[Maple Plot]

>    Q:=convert(1/s/(s+3),parfrac,s);

Q := 1/(3*s)-1/(3*(s+3))

>    q:=unapply(IL(Q,s,t),t);

q := proc (t) options operator, arrow; 1/3-1/3*exp(-3*t) end proc

Ratkaisu 1:  Lasketaan "käsin", annetaan Maplen vain tehdä rutiini-integroinnit:

>    y=Int('r(tau)'*'q(t-tau)',tau=0..t);

y = Int(r(tau)*q(t-tau),tau = 0 .. t)

1)   0 < t < 1. Tällöin r(tau) = 0  ja siis y(t)=0.

2)   1 < t < 2 Nyt r(tau) = 1 , joten

>    y=Int('q(t-tau)',tau=1..t);

y = Int(q(t-tau),tau = 1 .. t)

>    y=int(q(t-tau),tau=1..t);

y = -4/9+1/3*t+1/9*exp(-3*t+3)

3)    t  > 2.  Nyt integroidaan väli 1..2 kokonaan:

>    y=Int('q(t-tau)',tau=1..2);

y = Int(q(t-tau),tau = 1 .. 2)

>    y=int(q(t-tau),tau=1..2);

y = 1/3-1/9*exp(-3*t+6)+1/9*exp(-3*t+3)

Tässä siis tulos. Kerätään vielä yhteen antamalla Maplen ensin integroida suoraan ja ...

>    yy:=int(r(tau)*q(t-tau),tau=0..t);

yy := 1/3*u(t-1)*t-1/9*u(t-2)*exp(-3*t+6)-4/9*u(t-1)+1/9*u(t-1)*exp(-3*t+3)-1/3*u(t-2)*t+7/9*u(t-2)

... sitten antamalla sen muuntaa Heaviside-esitys paloittain määritellyksi "piecewise"- esitykseksi:

Kutsutaan täsä ratkaisuksi 2 :

>    convert(yy,piecewise);

PIECEWISE([0, t < 1],[undefined, t = 1],[-4/9+1/3*t+1/9*exp(-3*t+3), t < 2],[undefined, t = 2],[1/3-1/9*exp(-3*t+6)+1/9*exp(-3*t+3), 2 < t])

Ratkaisu 3 : Ilman konvoluutiota (vanhoin keinoin)

>    dy;

diff(y(t),`$`(t,2))+3*diff(y(t),t) = u(t-1)-u(t-2)

>    Ldy:=subs(y(0)=0,D(y)(0)=0,L(dy,t,s));

Ldy := s^2*L(y(t),t,s)+3*s*L(y(t),t,s) = exp(-s)/s-exp(-2*s)/s

>    Y:=solve(Ldy,L(y(t),t,s));

Y := (exp(-s)-exp(-2*s))/s^2/(s+3)

>    yik:=IL(Y,s,t);  # "y-ilman-konvoluutiota"

yik := (-1/3*t+2/3+2/9*exp(-3/2*t+3)*sinh(3/2*t-3))*u(t-2)+u(t-1)*(1/3*t-1/3-2/9*exp(-3/2*t+3/2)*sinh(3/2*t-3/2))

>    plot([yy,yik+0.002],t=0..5); # Nostetaan toista hiukan (0.002), jotta erottuisivat.

[Maple Plot]

>    convert(yik,exp): simplify(%); convert(%,piecewise);

1/3*u(t-1)*t-1/9*u(t-2)*exp(-3*t+6)-4/9*u(t-1)+1/9*u(t-1)*exp(-3*t+3)-1/3*u(t-2)*t+7/9*u(t-2)

PIECEWISE([0, t < 1],[undefined, t = 1],[-4/9+1/3*t+1/9*exp(-3*t+3), t < 2],[undefined, t = 2],[1/3-1/9*exp(-3*t+6)+1/9*exp(-3*t+3), 2 < t])

>    plot([r(t),yy],t=0..5);

[Maple Plot]

>    #convert(sinh(x),exp);

>   

>   

>