ryhsym.mws
Esimerkit : Yhtälöryhmät

Usean yhtälön ryhmän ratkaiseminen yhteen yhtälöön palauttamalla

Olkoon tarkasteltavana kolmen differentiaaliyhtälön normaalimuotoinen ryhmä, jossa tuntemattomina funktioina ovat x( t ), y( t ) ja z( t ):

> dy1:= diff(x(t), t)=x(t)+y(t)-z(t)+1;
dy2:= diff(y(t), t)=-x(t)+5*y(t)+z(t)+t;
dy3:= diff(z(t), t)=-2*x(t)+2*y(t)+4*z(t)+t^2;

dy1 := diff(x(t),t) = x(t)+y(t)-z(t)+1

dy2 := diff(y(t),t) = -x(t)+5*y(t)+z(t)+t

dy3 := diff(z(t),t) = -2*x(t)+2*y(t)+4*z(t)+t^2

> funktiot:= [x(t), y(t), z(t)];

funktiot := [x(t), y(t), z(t)]

Ryhmä pyritään ratkaisemaan eliminoimalla ensin yhtälöistä funktiot x ja y , jolloin saadaan yksinomaan funktiota z koskeva differentiaaliyhtälö. Tätä varten kaksi ensimmäistä yhtälöä derivoidaan kerran ja viimeinen yhtälö kaksi kertaa, jolloin saadaan kaikkiaan seitsemän yhtälöä:

> dy4:= diff(dy1, t):
dy5:= diff(dy2, t):
dy6:= diff(dy3, t):
dy7:= diff(dy3, t$2):
dy1, dy2, dy3, dy4, dy5, dy6, dy7;

diff(x(t),t) = x(t)+y(t)-z(t)+1, diff(y(t),t) = -x(...
diff(x(t),t) = x(t)+y(t)-z(t)+1, diff(y(t),t) = -x(...
diff(x(t),t) = x(t)+y(t)-z(t)+1, diff(y(t),t) = -x(...
diff(x(t),t) = x(t)+y(t)-z(t)+1, diff(y(t),t) = -x(...
diff(x(t),t) = x(t)+y(t)-z(t)+1, diff(y(t),t) = -x(...

Kuudesta ensimmäisestä yhtälöstä voidaan ratkaista funktiot x ja y derivaattoineen ja tämän jälkeen sijoittaa lausekkeet perättäin viimeiseen yhtälöön.

Määritellään ensin tuntemattomat:

> tuntemattomat:=[diff(y(t), t, t), diff(x(t), t, t), diff(x(t), t), diff(y(t), t), y(t), x(t)];

tuntemattomat := [diff(y(t),`$`(t,2)), diff(x(t),`$...

Ratkaistaessa Maple n solve -komennolla ei ole mahdollista ratkaista derivaattojen suhteen, jos derivaatasta esiintyy useampia kertalukuja. Tämä voidaan ohittaa korvaamalla derivaatta- ja funktiomerkinnät väliaikaisilla muuttujilla.

> d2m:= zip((x, y)->x=y, tuntemattomat, [seq(d[k], k=1..6)]):
m2d:= zip((x, y)->x=y, [seq(d[k], k=1..6)], tuntemattomat):

> subs(d2m, [{dy1, dy2, dy3, dy4, dy5, dy6}, tuntemattomat]):
solve(%[1], {%[2][]}):
elimsij:= subs(m2d, %);

elimsij := {diff(x(t),`$`(t,2)) = 3/2*diff(z(t),`$`...
elimsij := {diff(x(t),`$`(t,2)) = 3/2*diff(z(t),`$`...
elimsij := {diff(x(t),`$`(t,2)) = 3/2*diff(z(t),`$`...
elimsij := {diff(x(t),`$`(t,2)) = 3/2*diff(z(t),`$`...
elimsij := {diff(x(t),`$`(t,2)) = 3/2*diff(z(t),`$`...
elimsij := {diff(x(t),`$`(t,2)) = 3/2*diff(z(t),`$`...

> dy:= subs(elimsij, dy7);

dy := diff(z(t),`$`(t,3)) = 10*diff(z(t),`$`(t,2))-...

Tuloksena on kolmannen kertaluvun yhtälö funktiolle z . Tämä voidaan löytää myös hieman suorempaan käyttämällä Maple n eliminate -komentoa. Myös eliminate -komennon käyttö vaatii edellä esitellyt korvaustoimenpiteet.

> subs(d2m, [{dy1, dy2, dy3, dy4, dy5, dy6, dy7}, tuntemattomat]):
eliminate(%[1], {%[2][]}):
op(subs(m2d, %)[-1])=0;

-10*diff(z(t),`$`(t,2))+diff(z(t),`$`(t,3))+16*t+26...

Yhtälön ratkaisuksi saadaan

> zratk:= dsolve(dy, z(t));

zratk := z(t) = -71/36-5/6*t-1/2*t^2+_C1*exp(6*t)+_...
zratk := z(t) = -71/36-5/6*t-1/2*t^2+_C1*exp(6*t)+_...

Yhtälöryhmän yleinen ratkaisu muodossa x( t ), y( t ), z( t ) saadaan tätä ja aiempia lausekkeita käyttäen:

> subs(elimsij, funktiot):
ylratk:= subs(zratk, %):
simplify(%);

[-4-_C2*exp((2+sqrt(2))*t)*sqrt(2)+1/2*_C2*exp((2+s...
[-4-_C2*exp((2+sqrt(2))*t)*sqrt(2)+1/2*_C2*exp((2+s...
[-4-_C2*exp((2+sqrt(2))*t)*sqrt(2)+1/2*_C2*exp((2+s...
[-4-_C2*exp((2+sqrt(2))*t)*sqrt(2)+1/2*_C2*exp((2+s...
[-4-_C2*exp((2+sqrt(2))*t)*sqrt(2)+1/2*_C2*exp((2+s...

Tiettyä alkuehtoa vastaavat vakioiden arvot saadaan tämän jälkeen tavalliseen tapaan ratkaisemalla algebrallinen yhtälöryhmä. Olkoon alkuehtona x(0) = 1, y(0) = -2, z(0) = 3. Tällöin

> subs(t=0, ylratk):
vakiot:= solve({%[1]=1, %[2]=-2, %[3]=3}, {_C1, _C2, _C3}):
simplify(%);

{_C2 = -17/28*sqrt(2)+18/7, _C3 = 18/7+17/28*sqrt(2...

Vastaava yksittäisratkaisu saadaan sijoittamalla vakioiden arvot yleiseen ratkaisuun:

> yksittratk:= subs(vakiot, ylratk):
simplify(%);

[-4-23/8*exp((2+sqrt(2))*t)*sqrt(2)+5/2*exp((2+sqrt...
[-4-23/8*exp((2+sqrt(2))*t)*sqrt(2)+5/2*exp((2+sqrt...
[-4-23/8*exp((2+sqrt(2))*t)*sqrt(2)+5/2*exp((2+sqrt...
[-4-23/8*exp((2+sqrt(2))*t)*sqrt(2)+5/2*exp((2+sqrt...
[-4-23/8*exp((2+sqrt(2))*t)*sqrt(2)+5/2*exp((2+sqrt...

Ratkaisujen kuvaajat:

> plot(yksittratk, t=0..1, view=[0..1, -20..20], color=red);

[Maple Plot]

Edellä oleva esitys kuvaa, miten eliminointiprosessi ja yhtälöryhmän ratkaiseminen tapahtuu. Jos tavoitteena on ainoastaan saada tietyn alkuarvoprobleeman ratkaisu, päästään paljon vähemmällä kohdistamalla Maple n dsolve -funktio suoraan alkuperäiseen yhtälöryhmään ja alkuehtoon:

> suoraratk:= dsolve({dy1, dy2, dy3, x(0)=1, y(0)=-2, z(0)=3},funktiot):
simplify(%);

{y(t) = -17/36-1/3*t-43/252*exp(6*t)-55/56*exp((2+s...
{y(t) = -17/36-1/3*t-43/252*exp(6*t)-55/56*exp((2+s...
{y(t) = -17/36-1/3*t-43/252*exp(6*t)-55/56*exp((2+s...
{y(t) = -17/36-1/3*t-43/252*exp(6*t)-55/56*exp((2+s...
{y(t) = -17/36-1/3*t-43/252*exp(6*t)-55/56*exp((2+s...
{y(t) = -17/36-1/3*t-43/252*exp(6*t)-55/56*exp((2+s...

Eri tavoilla saadut ratkaisut ovat todellakin samat:

> subs(suoraratk, [x(t), y(t), z(t)]):
zip((x, y)->simplify(x-y), %, yksittratk);

[0, 0, 0]


Teoria: differentiaaliyhtälöryhmä
Teoria: ryhmän palauttaminen yhteen yhtälöön
Ratkaiseminen: differentiaaliyhtälön ratkaiseminen symbolisella ohjelmalla

SKK & MS 31.05.2001