Numeeriset Menetelmät Kurssilla käydään läpi laskennallisen matematiikan perusteet. Opitaan kuinka matematiikkaa oikeasti käytetään sekä millaisia perustehtäviä ratkaistaan numeerisesti. (Monimutkaisemmat laskentatehtävät edellyttävät, että perustehtävät osataan ratkaista.) Nykyisin kaikki matematiikkaan liittyvä tehdään tietokoneilla kahdesta syystä. 1. Tietokoneita on kaikkialla ja ne ovat nopeita suorittamaan laskentaoperaatioita. 2. Laskennallisia ohjelmistoja on saatavilla sekä kaupallisina että ilmaisina. Kurssilla opitaan minkä typpisillä algoritmeilla tietokone ratkaisee perustehtävät, eli muun muassa -lineaarisen yhtälöryhmän ratkaiseminen -pienimmän neliösumman ongelman ratkaiseminen -epälineaarisen yhtälöryhmän ratkaiseminen -optimointi ongelma ilman rajoitusehtoja -funktioiden approksimointi -numeerinen integrointi -differentiaaliyhtälöiden numeerinen ratkaiseminen Tällaisia perustehtäviä pitää osata tunnistaa ja ratkaista mm. fysiikan ja kemian sovellutuksissa, insinööritieteissä, biotieteissä sekä taloustieteissä. Tarkoitus on myös oppia ymmärtämään algoritmien laskennallista kompleksisuutta, toisin sanoen sitä kuinka paljon työtä perustehtävien luotettava ratkaiseminen vaatii. Aikataulun tiukkuuden takia kurssille on valitettavasti hankala löytää oppikirjaa. Jos kirjaa pitäisi suositella, niin Numerical Methods: Design, Analysis, and Computer Implementation of Algorithms, Anne Greenbaum and Timothy P. Chartier, 2012 on sellainen. Siinä on materiaalia runsaammin kuin mitä tässä kurssissa ehditään käymään läpi. Huom. Tällä kurssilla emme käsittele diskreettiä matematiikkaa ja graafeja sekä niihin liittyviä algoritmeja. Jos matematiikan opintoja pitäisi täydentää, tällaisen kurssin valitseminen on suositeltavaa. 1
1 Luento 1: Taylorin lause, IEEE liukulukustandardi 1.1 Kertaus: Taylorin lause Palautetaan mieleen hiukan peruskäsitteittä differentiaali- ja interaalilaskennasta. Funktion f : [a, b] R jatkuvuus pitää ymmärtää. Lisäksi seuraavat kaksi lausetta ovat osa differentiaali- ja interaalilaskennan perusteita. (Niistä on helppo vakuuttua esim. piirtämällä kokeeksi funktioiden kuvaajia.) Lause 1 (Väliarvolause.) Olkoon funktio f välillä [a, b] jatkuva ja välillä (a, b) derivoituva. Tällöin löytyy ξ (a, b) siten että f(b) f(a) = f (ξ)(b a). Lause 2 (Integraali-väliarvolause.) Olkoon ei-negatiivinen funktio w välillä [a, b] integroituva ja olkoon funktio f välillä [a, b] jatkuva. Tällöin löytyy ξ [a, b] siten että b b w(x)f(x)dx = f(ξ) w(x)dx. a a Taylorin polynomi p n astetta n on (luultavasti tärkein) tapa approksimoida annettua funktiota f : [a,b] R. Se ei oikeastaan ole pelkästään numeerinen menetelmä vaan pikemminkin työkalu, jonka avulla varsinaisia numeerisia menetelmiä voidaan johtaa. (Muun muassa numeerinen integrointi ja differentiaaliyhtälöiden numeerinen ratkaiseminen pohjautuvat Taylorin polynomiin.) Taylorin polynomi edellyttää, että funktio f on saatavilla. Tällöin f:n approksimaatio muodostetaan yhdessä pisteessä x 0 [a,b] siten, että asetetaan p n (x) = f(x 0 )+ (x x 0) f (x 0 )+ (x x 0) 2 f (x 0 )+ + (x x 0) n f (n) (x 0 ) 1! 2! n! (1) Tämä siis edyllyttää, että f:ää voidaan derivoida vähintään n kertaa k.o. pisteessä. Pistettä x 0 kutsutaan Taylorin polynomin kehityskeskukseksi. Taylorin polynomi p n antaa tietenkin f:lle erinomaisen approximaation pisteessä x 0. Mutta todellisuudessa haluamme käyttää tätä approximaatiota myös x 0 :n ympäristössä. Tällöin pitää tietää kuinka suuren virheen tuolloin teemme. (Muistutus: f : [a, b] R on jatkuvasti derivoituva jos sen derivaattafunktio f on olemassa ja se on jatkuva funktio.) 2
Lause 3 (Taylorin lause.) Olkoon funktio f välillä [a, b] vähintään n + 1 kertaa jatkuvasti derivoituva jollain n N. Olkoon x,x 0 [a,b]. Tällöin f(x) = p n (x)+r n+1 (x), (2) missä R n+1 (x) = 1 x n! x 0 (x t) n f (n+1) (t)dt. Lisäksi pätee jollain ξ [x 0,x]. R n+1 (x) = (x x 0) n+1 f (n+1) (ξ) (3) (n+1)! Taylorin lause osoitetaan esimerkiksi osittaisintegroimalla n kertaa. Ensinnäkin integraalilaskun peruslauseen perusteella päteef(x) = f(x 0 )+ x x 0 f (t)dt. Tämä osittaisintegroidaan, jolloin termejä uudelleen järjestelemällä saadaan f(x) = f(x 0 )+(x x 0 )f (x 0 )+ x (x t)f (t)dt. x 0 Jatketaan osittaisintegrointia ja termien uudelleenjärjestelyä vielä (n 1) kertaa, jolloin saadaan identiteetti (2). Virhekaava (3) seuraa Integraaliväliarvolauseesta 2. Esimerkki 1 Exponenttifunktiolle pätee (e x ) = e x. Siten jos kehityskeskus on x 0 = 0, saamme e x = 1+x+ x2 2 + + xn n! + xn+1 (n+1)! eξx. Taylorin polynomi yleistyy suoraviivaisesti usemman muuttujan tapaukseen. Käsitellään lyhyesti kahden muuttujan tapaus. Olkoon f(x, y) kahden muuttujan x ja y funktio ja tarkoituksena on muodostaa f:n Taylorin polynomi pisteessä (x 0,y 0 ) R 2. Merkitään L(x 0,y 0 ;x 1,y 1 ):llä sitä tason suoraa joka kulkee pisteiden (x 0,y 0 ) ja (x 1,y 1 ) kautta. Lause 4 Olkoot pisteet (x 0,y 0 ) ja (x 0 +ξ,y 0 +η) annettu ja f olkoon n+1 kertaa jatkuvasti differentioituva jossain janan L(x 0,y 0 ;x 0 +ξ,y 0 +η) ympäristössä. Tällöin n ( 1 f(x 0 +ξ,y 0 +η) = f(x 0,y 0 )+ (ξ j! x +η ) y )j f(x,y) x=x 0,y=y 0 jollain 0 t 1. j=1 + 1 ( (ξ (n+1)! x +η ) y )n+1 f(x,y) 3 x=x 0 +tξ,y=y 0 +tη
Tämä osoitetaan käyttämällä yhden muuttujan Taylorin lausetta rajoitumalla suoralle L(x 0,y 0 ;x 0 +ξ,y 0 +η). (Siis f:ää tarkastellaan vain tällä suoralla muodossa f(x 0 +tξ,y 0 +tη) missä t R on muuttuja. Kyseessä on tällöin yhden muuttujan funktio.) Huomaa, että tässä tarvitaan paljon osittaisderivaattoja. Esimerkiksi = ξ 2 2 f(x,y) x 2 (ξ x +η y )2 f(x,y) +2ξη 2 f(x,y) x y +η 2 2 f(x,y) y 2. Edellinen useamman muuttujan Taylorin lause sisältää siis virhetermin. Varsinaisessa Taylorin polynomissa muuttujina käytetään x = x 0 + ξ:ää ja y = y 0 +η:tä. Esimerkki 2 Olkoon f(x,y) = x/y ja kehityskeskus (x 0,y 0 ) = (6,2). Tällöin 1. asteen Taylorin polynomi on p 1 (x,y) = f(6,2)+(x 6) f(6,2) +(y 2) f(6,2) = 3+ 1 x y 2 (x 6) 3 2 (y 2). Tämän voi mieltää f:n kuvaajan pisteeseen (6, 2, 3) asetetuksi tangenttitasoksi. 1.2 IEEE liukulukustandardi Ennen kuin siirrymme varsinaisesti käsittelemään algoritmeja, on välttämätöntä lyhyesti käydä läpi kuinka tietokone käsittelee numeroita. Nykyinen on ns. IEEE liukulukustandardi ja lähes kaikki tietokonevalmistajat käyttävät kyseistä standardia. Käytetty tarkkuus on ns. kaksoistarkkuus. Tällöin siis R "diskretoidaan"siten, että se korvataan äärellisellä joukolla rationaalilukuja F Q. Luvut voivat olla itseisarvoltaan sellaisia, että jos x F, niin 2.23 10 308 x 1.79 10 308. Muutoin tapahtuu joko yli- tai alivuoto. (Se yleensä ei ole ongelma.) Koska siis käytetään vain äärellistä joukkoa F, jää R:ään paljon aukkoja seuraavasti. Väli [1,2] R esitetään F:ssä siten että F muodostuu luvuista 1, 1+2 52, 1+2 2 52, 1+3 2 52,...,2. (4) Muut välit saadaan skaalaamalla siten, että väli [2 j,2 j+1 ] esitetään kertomalla rationaaliluvut (4) luvulla 2 j. Näin tehdään kunnes yli-tai alivuotoraja saavutetaan. Esimerkiksi väli [2, 4] R korvataan F:n luvuilla 2, 2+2 51, 2+2 2 51, 2+3 2 51,...,4. 4
Tämä tarkoittaa, että R:ään jää suhteellisesti yhtä suuria aukkoja. Kun IEEE liukulukustandardia mallinnetaan, oletetaan että yli-tai alivuotoa ei tapahdu. Lisäksi käytössä on luku 0. Tällöin tietokone ottaa vastaan realilukuja siten, että tapahtumaa kuvaa funktio f l : R F joka toteuttaa fl(x) = x(1+ǫ), missä ǫ ǫ kone. Tämä on IEEE liukulukustandardin kaksoistarkkuudessa ǫ kone = 2 53 1.11 10 16. Näin tietokone mielletään pyöristävän reaalilukuja siten että noin 16 ensimmäistä merkitsevää numeroa säästetään. Kun luvut on pyöristetty ja laitettu tietokoneeseen, niillä voidaan laskea peruslaskutoimituksia eli yhteen-, vähennys- kerto- ja jakolaskuja. Olkoon jokin näistä. Tällöin jos x,y F, niin x y R liukulukuaritmetiikassa laskettuna on (x y)(1+ǫ) F, missä ǫ ǫ kone. Eli tietokone tekee (mahdollisesti) laskuissaan pyöristysvirheitä. Vaikka ne ovatkin pikkiriikkisiä, niillä on merkitystä kun algoritmeja kehitetään. Kaksi saman tehtävän ratkaisevaa algoritmia voivat olla sellaisia, että toinen on pyöristysvirheiden suhteen stabiili kun taas toinen ei ole, jolloin virheet saattavat kertyä ja aiheuttaa sen, että numeerinen ratkaisu on luokaton. 5