[4A] DIFFERENTIAALIYHTÄLÖT 1. Alkuarvotehtävät Numeerisen integroinnin yhteydessä ratkoimme jo tavallisia ensimmäisen kertaluvun alkuarvotehtäviä integroimalla eli t y (t) =f(t, y(t)) y(t) =y(t a )+ f(t, y(t))dt, t a josta yksinkertaisimmalla algoritmilla (vrt. sivun 30 ylempi esim) y(t n )=y(t a )+ n k=1 f(t k 1,y(t k 1 ))Δt, t k = t a + kδt, mikä matlabissa saa esimerkiksi muodon (kokeile esim700.m) tall=linspace(ta,tb,n+1); dt=(tb-ta)/n; y=ya; yall=[ya]; for k=1:n, t=tall(k); y=y+dt*f(t,y); yall=[yall,y]; end; plot(tall,yall); missä oletettiin määritellyksi funktio f(t,y) ja alkuarvo ya. 41 Kokeillaanpa kytkettyjä differentiaaliyhtälöitä: Peto-saalis-mallissa y 1 (t) =(S 1 K 1 )y 1 (t)+v 1 y 1 (t)y 2 (t) y 2 (t) =(S 2 K 2 )y 2 (t) V 2 y 1 (t)y 2 (t) parametrit S i, K i ja V i kuvaavat kahden eri eliölajin (i=1,2) syntyvyyttä, kuolleisuutta ja keskinäistä vuorovaikutusta ja muuttujat y i (t) niiden populaatiotiheyttä. Fysiikassa vastaava malli voisi kuvata hiukkaslajeja jossain reaktiossa. Muuttuja y on nyt kaksikomponenttinen, mutta numeerinen ratkaisu voidaan tehdä samaan tapaan kuin yllä eli eksplisiittisellä Eulerin menetelmällä y (t) =f(t, y(t)) diskretoituna: y(t k+1 )=y(t k )+Δt f(t k, y(t k )) Skriptissä esim701.m käytetään matlabin valmisohjelmaa ode23, joka suorittaa integroinnin hieman kehittyneemmällä algoritmilla. 42
Yllä tarkastellun tyyppisellä alkuarvotehtävällä on yksikäsitteinen jatkuvasti derivoituva ratkaisu, kun funktio f(t, y) on riittävän siisti (katso FNM 209 ja matematiikan kurssit). Numeerinen ratkaisu riippuu alkuperäisen matemaattisen ongelman parametrien lisäksi myös numeriikkaa kuvaavista parametreista kuten Δt. Korkeamman kertaluvun tehtävät voidaan tietyin edellytyksin palauttaa useamman muuttujan alemman kertaluvun tehtäviksi. Sivun 30 heiluriesimerkki saa muodon (y 1,y 2 )T =(y 2, sin y 1 ) T alkuarvoin (y 1 (0),y 2 (0)) T =(0, 1) T ja sen ratkaisu matlabissa f=inline( [y(2);-sin(y(1))], t, y ); y0=[0;1]; times=linspace(0,50,5000); [t1,y1]= ode23(f,times,y0); Ylimääräisten parametrien välitys ode23 yms ohjelmiin ei kaikissa matlabin versioissa suju inline-funktiota käytettäessä samoin kuin jos funktio on määritelty erillisessä tiedostossa. Pulman voi kiertää tuomalla parametrit inline-funktioon lisämuuttujina, joiden arvoa ei laskussa muuteta, tosin tehtävän dimensio matlabissa kasvaa. 43 2. Reuna-arvotehtävät Nyt ratkaisun y pitää toteuttaa ehtoja kahdessa eri pisteessä. Esim: Vain toisesta päästään (x=0) kiinnitetyn vaakasuoran L:n pituisen palkin muoto y(x) (NMK 211), kun f(x) on kuormitus: y (x) =f(x) reunaehdoilla y(0) = y (0) = y (L) =y (L) =0. Yleisellä reuna-arvotehtävällä vektorisuureelle y y = f(t, y) g(y(a), y(b))=0 ei välttämättä ole yksikäsitteistä ratkaisua. Fyysikolle tärkeä tähän palautuva ongelmaluokka: y =f(t, y), y(a)=y a, y(b)=y b, jolle on olemassa yleensä yksikäsitteinen ratkaisu, kun f/ y > 0, ja ei-yksikäsitteisiä ratkaisuja muulloinkin. Esimerkkiskriptissä esim751.m kokeilemme reuna-arvotehtävän y +e y =0,y(0)=0,y(1)=0 ratkaisemista tähtäysmenetelmällä, jossa ratkaistaan samaa yhtälöä alkuarvotehtävänä alkuarvoilla y(0)=0, y (0) = α koettaen löytää α, jolla y(1) = 0 toteutuu. 44
3. Yhtälöiden ja menetelmien stabiilius Alkuarvotehtävän ratkaisu on stabiili, jos pieni muutos alkuarvossa aiheuttaa vain pienen muutoksen ratkaisuun. Esimerkiksi lineaarisen differentiaaliyhtälöryhmän y = Ay + f(t) ratkaisu on stabiili, jos matriisin A kaikkien ominaisarvojen λ reaaliosat ovat negatiiviset. Tämä on helppo ymmärtää: Jos jokin ominaisarvo on positiivinen, on (ominaisvektoreiden kannassa) sitä vastaava yhtälö tyyppiä ỹ = λỹ +... jonka ratkaisu ỹ e λt ja kahta alkuarvoa vastaavien ratkaisujen erotus kasvaa rajatta. Numeerisen ratkaisumenetelmän stabiilius riippuu yhtälön lisäksi diskretointia kuvaavista parametreista. Esim. tehtävän y = Ay ratkaisu Eulerin menetelmällä askelpituudella Δt on stabiili, jos λδt {z C : 1 1+z 1} kaikille A:n ominaisarvoille λ. 45 Erityisen hankalia ovat kankeat tehtävät, jotka vaativat paljon lyhyemmän askelpituuden kuin mitä tarkan ratkaisun siisteys edellyttäisi. Tyypillinen kankea tehtävä on yhtälöryhmä, jonka ratkaisun komponenttien vaimenemisnopeudet (vrt. e λt yllä) poikkeavat paljon toisistaan. NMK-sivuilla 219-220 on esimerkki kahdesta tehtävästä, joilla on sama tarkka ratkaisu, mutta hyvin erilainen numeerinen vaativuus stabiilisuuden osalta. Edellisen sivun lineaariselle vakiokertoimiselle systeemille kriteerin mahdolliselle kankeudelle antaa luku max Re(λ) / min Re(λ) ja epälineaarisen tehtävän kankeudesta saattavat varoittaa Jacobin matriisin ominaisarvot. Huom: Niin stabiiliuden kuin kankeudenkin osalta epälineaaristen systeemien ratkaiseminen osoittautuu usein numeerisesti paljon haastavammaksi kuin lineaarisen approksimaation perusteella voi päätellä. Usein onkin aihetta tehdä muuttujanvaihtoja yms ennen yhtälöiden numeerista ratkaisemista. 46
4. Kehittyneempiä menetelmiä Toinen perusidea (vrt. s. 42) on implisiittinen Eulerin menetelmä y(t k+1 )=y(t k )+Δtf(t k+1, y(t k+1 )), missä oikeallakin puolella esiintyy ratkaistava vektori y(t k+1 ), joten jokaisella askeleella tulee ratkaistavaksi yhtälöryhmä, joka kenties on epälineaarinen mutta senhän osaamme jo [2A,3B]. Yhdistämällä eksplisiittinen ja implisiittinen Eulerin menetelmä saamme trapetsimenetelmän (selvästi impisiittinen sekin) y(t k+1 )=y(t k )+Δt[f(t k, y(t k ))+f(t k+1, y(t k+1 ))]/2. Hyvin suosittuja ovat Runge-Kutta-menetelmät, joiden ideaa havainnollistavaksi esimerkiksi sopii kaksivaiheinen versio: y(t k+1 )=y(t k )+Δt [f(t k, y(t k ))+f(t k+1, y(t k )+Δt f(t k, y(t k )))]/2. Eksplisiittistä Eulerin menetelmää siis tarkennetaan arvioimalla muutosta myös muissa pisteissä ja ottamalla arvioista sopivalla tavalla painotettu keskiarvo (yllä vain yksi lisäpiste). 47 Aiempien askelten tuloksia hyödyntäviä menetelmiä kutsutaan moniaskelmenetelmiksi, kuten AB-menetelmä (NMK 230) y(t k+1 )=y(t k )+ΔtΣ 0 j=1 r β jf(t k+j, y(t k+j )) ja implisiittinen AM-menetelmä (NMK 231) y(t k+1 )=y(t k )+ΔtΣ 1 j=2 r β jf(t k+j, y(t k+j )). Menetelmiä yhdistämällä saadaan ennusta-korjaa-menetelmiä, joissa kullakin askeleella esimerkiksi AB-menetelmän ennustetta (ekspl) tarkennetaan (impl) AM-menetelmällä. Tämäntapaiset predictor-corrector-algoritmit ovat hyvin suosittuja mm. fysiikan simulaatioissa, joissa ratkaistaan suuren atomijoukon kytkettyjä liikeyhtälöitä. Niillä voidaan pidentää askelpituutta (vähentää derivointien lukumäärää) tarkuuden kärsimättä. Reuna-arvotehtäviin käytetään usein aliavaruusmenetelmiä, katso sivun 30 esim ja esim512.m (aiemmin integrointiharjoituksena). 48
4. Osittaisdifferentiaaliyhtälöistä Siirryttäessä tavallisista differentiaaliyhtälöistä osittaisdifferentiaaliyhtälöihin menetelmien kirjo kasvaa kuten vaikeudetkin. Esim: Malliskriptissä esim800.m ratkaisemme lämpöyhtälöä tai yleisemmin diffuusioyhtälöä (joka kuvaa lämmön, molekyylien, bakteerien, todennäköisyystiheyden,... diffuusiota): t y(x,t)=d 2 y(x,t)+f(x,t,y(x,t)), johon on yleisyyden vuoksi laitettu mukaan lähde/nielutermi f. Yhtälö on lineaarinen ja kokeilemme sen diskretointiin Eulerin menetelmää (alla f =0jad = 1, yleistys d = 3:een ilmeinen) y(x, t k+1 )=y(x, t k )+ΔtD y(x+δx, t k) 2y(x, t k )+y(x Δx, t k ) (Δx) 2 missä toinen paikkaderivaatta diskretoitiin sivun 28 reseptillä. 49 Edelliseen esimerkkiin voit funktion f kautta lisätä haluamiisi kohtiin lämmönlähteitä (niiden kohdalla f>0) ja nieluja (f <0). Joissakin sovelluksissa (esim. Lentävän lähdön paperinpolttokoe) malli ja siis funktio f voi sisältää kohinaa, jolloin kyseessä on stokastinen osittaisdifferentiaaliyhtälö. Malliskriptissä testattiin lisäksi yksinkertaista stabiilisuuskriteeriä muotoa ΔtD/Δx 2 < 1. Luennolla katseltiin joitakin muitakin fysikaalisia esimerkkejä osittaisdifferentiaaliyhtälöistä NMK:n sivulta 242 alkaen ja mietittiin niiden ratkaisemista sekä tutustuttiin laajaan yleiskäyttöiseen (erityisesti insinööritieteissä) menetelmäperheeseen nimeltä FEM = finite element method Sen toiminta ja käyttö olisi kuitenkin erillisen kurssin aihe sinänsä (tietotekniikan puolella), perusideat aukeavat aiemman pohjalta. 50