2.5 Tavalliset differentiaaliyhtälöt
Analyyttinen ratkaiseminen
Yleinen ratkaisu
> restart:
Määritellään toisen kertaluvun tavallinen differentiaaliyhtälö, ja nimetään se dy1: si:
> dy1:=diff(y(x),x,x)-2*diff(y(x),x)+3*y(x)=2*x;
Differentiaaliyhtälölle saadaan yleinen analyyttinen ratkaisu komennolla dsolve. Differentiaaliyhtälön lisäksi syntaksissa on mainittava funktio, jota ratkaistaan:
> dsolve(dy1,y(x));
> restart:
Alkuarvotehtävä
> restart:
Määritellään toisen kertaluvun differentiaaliyhtälö ja nimetään se dy1: si:
> dy1:=diff(y(x),x,x)-2*diff(y(x),x)+3*y(x)=2*x;
Alkuarvotehtävä ratkaistaan komennolla dsolve. Syntaksissa on mainittava differentiaaliyhtälön lisäksi myös alkuarvot sekä funktio, jota ratkaistaan. Ratkaistaan differentiaaliyhtälö dy1 alkuarvoilla y ( 0 ) = -1 ja y '( 0 ) = 2:
> dsolve({dy1,y(0)=-1,D(y)(0)=2},y(x));
> restart:
Ratkaisun graafinen esittäminen
> restart:
Määritellään tavallinen toisen kertaluvun differentiaaliyhtälö dy1, ja ratkaistaan se:
> dy1:=diff(y(x),x,x)-2*diff(y(x),x)+3*y(x)=2*x;
> dsolve(dy1,y(x));
Maplen tulosteessa yleisen ratkaisun parametrien c1 ja c2 edessä on alaviivat tyyliin _c1 ja _c2.
Yleisen ratkaisun oikea puoli voidaan nimetä lausekkeeksi komennon subs avulla. Edelliseen tulosteeseen voidaan viitata suoraan % -merkillä:
> ratk1:=subs(%,y(x));
Tämän jälkeen yleisen ratkaisun kuvaajia voidaan piirtää komennolla plot . Komennossa on mainittava ne parametrien c1 ja c2 arvot joilla käyriä piirretään, sekä muuttujien x ja y arvot kuvattavassa tasoalueessa:
> plot([seq(seq(ratk1,_C1=-2..2),_C2=-1..1)],x=-2..2,y=-10..20);
Komennolla seq määritellään lista, ja sitä on kätevä käyttää piirtokomennossa. Edellä on käytetty sisäkkäisiä seq -komentoja, jolloin parametri c1 saa arvot -2..2 jokaista parametrin c2 arvoa kohti. Näin ollen kuvaajaan tulee näkyviin yhteensä 15 ratkaisukäyrää.
Vastaavalla tavalla voidaan jokin alkuarvotehtävän ratkaisu nimetä lausekkeeksi, ja piirtää kyseisen ratkaisun kuvaaja:
> dsolve({dy1,y(0)=-1,D(y)(0)=2},y(x));
> ratk2:=subs(%,y(x));
> plot(ratk2,x=-5..5,y=-10..10);
> restart:
Numeerinen ratkaiseminen
> restart:
Määritellään ensimmäisen kertaluvun tavallinen differentiaaliyhtälö dy2, ja ratkaistaan se aluksi tavalliseen tapaan alkuarvolla y ( 1 ) = 3;
> dy2:=2*y(t)*diff(y(t),t)-1=t^2;
> ratk3:=dsolve({dy2,y(1)=3},y(t));
Differentiaaliyhtälön ratkaisulle määrätyillä alkuarvoilla voidaan laskea numeerisia approksimaatioita lisäämällä komentoon dsolve optio type = numeric. Kun komento syötetään, Maple ilmoittaa määritelleensä proseduurin, jonka avulla approksimaatioita voidaan laskea halutuissa pisteissä. Maple ilmoittaa myös käyttämänsä approksimointimenetelmän , jota voi halutessaan muuttaa. Oletusmenetelmänä on Runge-Kutta-Fehlberg 4/5 . Tämän jälkeen voidaan syöttää haluttuja pisteitä, ja Maple laskee approksimaation ratkaisufunktion arvolle kyseisessä pisteessä:
> nratk3:=dsolve({dy2,y(1)=3},y(t),type=numeric);
> nratk3(1);
> nratk3(3);
> nratk3(6);
> nratk3(8);
Määritellään funktio, joka saa arvoikseen differentiaaliyhtälön ratkaisufunktion approksimoituja pisteitä:
> numr3:=i->subs(nratk3(i),y(t)):
Funktion avulla voidaan plot -komennolla piirtää differentiaaliyhtälön ratkaisuapproksimaation kuvaaja halutulla välillä. Plot -komennossa numr3(t) on kirjoitettava heittomerkkeihin, koska muuten Maple yrittäisi evaluoida sitä symbolisessa muodossa.
> plot('numr3(t)',t=0..8);
> restart:
Suuntakenttä
Suuntakentän piirtäminen
> restart:
Ladataan with-komennolla suuntakenttien piirtämistä varten käyttöön pakkauksen DEtools komento DEplot sekä pakkaus plots :
> with(DEtools,DEplot):
> with(plots):
Määritellään differentiaaliyhtälö dy2:
> dy2:=2*y(t)*diff(y(t),t)-1=t^2;
Differentiaaliyhtälön suuntakenttä piirretään komennolla DEplot . Komennossa on mainittava funktio y ( t ), jonka suhteen suuntakenttää piirretään, sekä kuvattavan tasoalueen ( t , y ) rajat:
> DEplot(dy2,y(t),t=-5..5,y=-5..5);
> restart:
Isokliinit
> restart:
Isokliinit ovat käyriä, joilla differentiaaliyhtälön ratkaisukäyrien derivaatoilla on sama arvo. Tällöin isokliinit yhdistävät samansuuntaisia viivaelementtejä.
Ladataan with -komennolla suuntakenttien piirtämistä varten käyttöön pakkauksen DEtools komento DEplot sekä pakkaus plots :
> with(DEtools,DEplot):
> with(plots):
Määritellään differentiaaliyhtälö dy3, ja piirretään sen suuntakenttä komennolla DEplot :
> dy3:=diff(y(t),t)=t^2-2*y(t)^2;
> DEplot(dy3,y(t),t=-5..5,y=-5..5);
Nimetään äsken määritelty suuntakenttä kuvioksi skentta jatkokäsittelyä varten:
> skentta:=DEplot(dy3,y(t),t=-5..5,y=-5..5):
Määritellään sitten komennolla implicitplot kuvio isokl, jossa on sellaisten differentiaaliyhtälön dy3 isokliinien kuvaajat, jotka vastaavat arvoja -1, 0 ja 1:
> isokl:=implicitplot({t^2-2*y^2=-1,t^2-2*y^2=0,t^2-y^2=1},t=-5..5,y=-5..5,grid=[25,25]):
Suuntakenttä ja määrätyt isokliinit voidaan nyt esittää samassa kuvaajassa asettamalla määritellyt kuviot päällekkäin komennolla display :
> display(skentta,isokl);
> restart:
Yksittäisratkaisujen kuvaajia suuntakentässä
> restart:
Ladataan with -komennolla suuntakenttien piirtämistä varten käyttöön pakkauksen DEtools komento DEplot sekä pakkaus plots :
> with(DEtools,DEplot):
> with(plots):
Määritellään differentiaaliyhtälöt dy2 ja dy3:
> dy2:=2*y(t)*diff(y(t),t)-1=t^2;
> dy3:=diff(y(t),t)=t^2-2*y(t)^2;
Differentiaaliyhtälön suuntakenttä, sekä määrättyjä alkuarvoja vastaavat ratkaisukäyrät voidaan piirtää suoraan komennolla DEplot . Tällöin komennossa on differentiaaliyhtälön, ratkaistavan funktion y ( t ) ja kuvattavan tasoalueen ( t , y) lisäksi mainittava myös piirrettäviä ratkaisukäyriä vastaavat alkuarvot muodossa [y(i) = j].
Piirretään differentiaaliyhtälön dy2 suuntakenttä, sekä siihen alkuarvoja y (1) = 1, y (1) = 2, y (1) = 3 ja y (-2) = -1 vastaavat ratkaisukäyrät:
> DEplot(dy2,y(t),t=-5..5,y=-5..5,[[y(1)=1],[y(1)=2],[y(1)=3],[y(-2)=-1]]);
Piirretään differentiaaliyhtälön dy3 suuntakenttä, sekä siihen alkuarvoja y(-1) = -0.5, y(1) = 2, y(-4) = 2.2 ja y(-2) = -1 vastaavat ratkaisukäyrät:
> DEplot(dy3,y(t),t=-5..5,y=-5..5,[[y(-1)=-0.5],[y(1)=2],[y(-4)=2.2],[y(-2)=-1]]);
> restart:
Differentiaaliyhtälösysteemit
> restart:
Jokainen korkeamman kertaluvun differentiaaliyhtälö voidaan palauttaa ensimmäisen kertaluvun systeemiksi asettamalla y ja sen derivaatat tuntemattomiksi funktioiksi.
Määritellään neljä differentiaaliyhtälöä:
> dyht1:=diff(y[1](t),t)+y[1](t)+3*y[2](t)=0:
> dyht2:=2*diff(y[2](t),t)+3*y[3](t)-t=0:
> dyht3:=-3*diff(y[3](t),t)+y[3](t)+t=0:
> dyht4:=7*diff(y[4](t),t)+2*y[1](t)-2*t=0:
Differentiaaliyhtälöt muodostavat ensimmäisen kertaluvun differentiaaliyhtälösysteemin:
'(
t
) +
= 0
2
'(
t
) +
-3
'(
t
) +
7
'(
t
) +
Differentiaaliyhtälösysteemi voidaan ratkaista suoraan komennolla dsolve . Tällöin komennossa on oltava kaksi joukkoa , joista toisessa luetellaan ryhmän differentiaaliyhtälöt ja toisessa ratkaistavat funktiot:
> dsolve({dyht1,dyht2,dyht3,dyht4},{y[1](t),y[2](t),y[3](t),y[4](t)});
Määritellään sitten differentiaaliyhtälöt dyht5 ja dyht6, ja ratkaistaan niiden muodostama kahden differentiaaliyhtälön systeemi:
> dyht5:=diff(f(t),t)+2*f(t)+g(t)=0:
> dyht6:=diff(g(t),t)+3*f(t)-g(t)=0:
> dsolve({dyht5,dyht6},{f(t),g(t)});
Systeemin ratkaisu määrätyillä alkuarvoilla saadaan myös komennolla dsolve . Tällöin alkuarvot on lueteltava samassa joukossa systeemin differentiaaliyhtälöiden kanssa. Ratkaistaan edellinen kahden differentiaaliyhtälön systeemi alkuarvoilla f ( 0 ) = 3, g ( 0 ) = 2;
> dsolve({dyht5,dyht6,f(0)=3,g(0)=2},{f(t),g(t)});
> restart: