Numeeriset menetelmät Luento 14 To 20.10.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 1/39 p. 1/39
Nopeat Fourier-muunnokset Diskreetti Fourier-muunnos ˆf k = 1 N 1 N j=0 f j w kj N, w N = e i2π/n Yleinen algoritmi tapaukselle N = N 1 N 2 Määritellään j ja k uudelleen j = N 1 j 2 + j 1, k = N 2 k 1 + k 2 missä j 1, k 1 = 0, 1,..., N 1 1 ja j 2, k 2 = 0, 1,..., N 2 1 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 2/39 p. 2/39
Yleinen algoritmi ˆf N2 k 1 +k 2 = 1 N 1 1 N1 ( j 1 =0 kiertokerroin N 1 2 1 N2 {}}{ w k 2j 1 N j 2 =0 ) f N1 j 2 +j 1 w k 2j 2 N 2 }{{} N 2 :n pisteen diskr. Fourier-muunnos w k 1j 1 N 1 } {{ } N 1 :n pisteen diskr. Fourier-muunnos Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 3/39 p. 3/39
Kaksikantainen algoritmi ˆf N2 k 1 +k 2 = 1 N 1 1 N1 ( j 1 =0 w k 2j 1 N N 1 2 1 N2 Olkoon N = 2 n jollain n j 2 =0 ) f N1 j 2 +j 1 w k 2j 2 N 2 Asetetaan N 1 = 2 ja N 2 = N/2 = 2 n 1 = M w k 1j 1 N 1 Siis pisteistö f j jaetaan kahteen osaan: Parilliset f 2j ja parittomat f 2j+1 omiin ryhmiinsä Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 4/39 p. 4/39
Kaksikantainen algoritmi ˆf Mk1 +k 2 = 1 2 1 j 1 =0 ( w k 2j 1 N M 1 1 M j 2 =0 f 2j2 +j 1 w k 2j 2 M ) w k 1j 1 2 missä k 1 = 0, 1 ja k 2 = 0, 1,..., M 1 { w k e 0 = 1, k 1 1 = 0 2 = e iπ = 1, k 1 = 1 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 5/39 p. 5/39
Kaksikantainen algoritmi Tapaus k 1 = 0: [( ˆf k = 1 M 1 1 2 M + w k N j=0 ( missä k = 0, 1,..., M 1 (Merkitty k = k 2 ja j = j 2 ) f 2j w kj M M 1 1 M j=0 ) f 2j+1 w kj M )] Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 6/39 p. 6/39
Kaksikantainen algoritmi Tapaus k 1 = 1: [( ˆf M+k = 1 M 1 1 2 M w k N j=0 ( missä k = 0, 1,..., M 1 (Merkitty k = k 2 ja j = j 2 ) f 2j w kj M M 1 1 M j=0 ) f 2j+1 w kj M )] Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 7/39 p. 7/39
Kaksikantainen algoritmi Aikaharvennus (decimation on time): Kaksi N/2:n pisteen muunnosta Kerrotaan N/2 kertaa kiertokertoimilla Suoritetaan N yhteenlaskua Kerrotaan N kertaa vakiolla 1/ 2 Pisteiden f j skaalaus Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 8/39 p. 8/39
Kaksikantainen algoritmi Sama molemmille N/2:n pisteen muunnoksille: Neljä N/4:n pisteen muunnosta Kerrotaan 2 N/4 = N/2 kertaa kiertokert. Suoritetaan 2 N/2 = N yhteenlaskua Yleisesti rekursiotasolla m: 2 m kpl 2 n m :n pisteen muunnosta N/2 kertolaskua N yhteenlaskua Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 9/39 p. 9/39
Kaksikantainen algoritmi Viimeisellä tasolla m = n = log 2 N: N kpl yhden pisteen muunnosta (triviaaleja) N/2 kertolaskua N yhteenlaskua Yhteensä: (N/2) log 2 N kertolaskua N log 2 N yhteenlaskua (Lisäksi skaalaukset: N kertolaskua) O(N log N) Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 10/39 p. 10/39
Kaksikantainen algoritmi Toinen muoto: Asetetaan N 1 = N/2 = 2 n 1 = M ja N 2 = 2 Siis pisteistö f j jaetaan kahteen osaan: Alkuosa f j ja loppuosa f M+j omiin ryhmiinsä... Taajuusharvennus (decimation on frequency): Suoritetaan N yhteenlaskua Kerrotaan N/2 kertaa kiertokertoimilla Kaksi N/2:n pisteen muunnosta Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 11/39 p. 11/39
Kaksikantainen algoritmi Triviaalit kertolaskut: Kerrotaan vakiolla +1, 1, +i tai i Ensimmäisellä tasolla kiertokertoimet ovat w2 k = e kiπ = ( 1) k Toisella tasolla kiertokertoimet ovat w4 k = e kiπ/2 = ( i) k Jne. Yhteensä triviaaleja kertolaskuja 3N/2 2 kpl Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 12/39 p. 12/39
Korkeampikantaiset algoritmit Nelikantainen algoritmi: Oletetaan, että N = 4 n/2 parillisella n Asetetaan N 1 = 4 ja N 2 = N/4 = 4 n/2 1 Vastaavasti 8- ja 16-kantaiset algoritmit Vaihtuvakantaiset algoritmit: Esimerkiksi, jos N = 32 = 4 2 2 Kaksi askelta nelikantaisella, yksi askel kaksikantaisella Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 13/39 p. 13/39
Tietokonetoteutus Rekursiotaso m = 0, 1,..., n (n = log 2 N) Taso m = 0: Alustusaskel, jolla suoritetaan triviaalit yhden pisteen muunnokset ˆf 0 = f 0 Taso m = n: Lopetustaso, jolla muodostetaan lopullinen muunnos ˆf k, k = 0, 1,..., N 1 Kullakin tasolla: N 2 m ja M 2 m 1 wn k w k 2 = e m ki2π/2m = w kn/2m (missä w on alkuperäinen w = w N ) Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 14/39 p. 14/39
Tietokonetoteutus Tasolla m laskettavat osamuunnokset missä j = 0, 1,..., 2 n m 1 osamuunnoksen järjestysnumero ˆf [m] j,k, k = 0, 1,..., 2 m 1 pisteen järjestysnumero muunnoksessa Skaalaus Joko: Aluksi f j skaalataan vakiolla 1/ N Tai: Lopuksi ˆfk skaalataan vakiolla 1/ N Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 15/39 p. 15/39
Tietokonetoteutus (algoritmi) 1. (Alustus) Asetetaan j = 0, 1,..., N 1 ˆf [0] j,0 = f j, missä 2. Arvoilla m = 1, 2,..., n lasketaan ˆf [m] j,k ˆf [m] j,2 m 1 +k = ˆf [m 1] j,k = ˆf [m 1] j,k kn/2m + w ˆf[m 1] 2 n m +j,k kn/2m w ˆf[m 1] 2 n m +j,k missä j = 0, 1,..., 2 n m 1 ja k = 0, 1,..., 2 m 1 1 3. (Lopetus) Asetetaan ˆf k = k = 0, 1,..., N 1 ˆf [n] 0,k, missä Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 16/39 p. 16/39
Tietokonetoteutus Tasolla m: Lasketaan N kpl pisteitä ˆf [m] j,k Käytetään vain tason m 1 pisteitä Riittää yksi työtilavektori: Lasketaan työtilavektoriin ˆf [m] j,k Siirretään ne varsinaiseen tallennusvektoriin vanhojen tilalle ˆf [m 1] j,k Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 17/39 p. 17/39
Tietokonetoteutus Tallennus vektoriin kuvauksen l avulla: [m] ˆf j,k tallennetaan indeksillä l(m, j, k) Kuvaukselta l vaaditaan: l(m, j, k) käy läpi {0, 1,..., N 1}, kun j = 0, 1,..., 2 n m 1 ja k = 0, 1,..., 2 m 1 Lisäksi olisi hyvä jos: Alkupisteistö f j oikeassa järjestyksessä l(0, j, 0) = j kaikilla j = 0, 1,..., N 1 Loppupisteistö ˆf k oikeassa järjestyksessä l(n, 0, k) = k kaikilla k = 0, 1,..., N 1 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 18/39 p. 18/39
Tietokonetoteutus Yksinkertaisin kuvaus, joka toteuttaa edellä mainitut ehdot: l(m, j, k) = j2 m + k Mutta: Tällöin tasolla m tarvitaan välttämättä N:n pituinen työtilavektori Kuvaus l voidaan määritellä siten, että tasolla m tarvitaan työtilaa vain kahdelle pisteelle: Lasketaan pisteet ˆf [m 1] 2 n m +j,k ˆf [m] j,k ja ˆf [m] j,2 m 1 +k Sijoitetaan arvot heti vanhojen pisteiden [m 1] ja ˆf 2 n m +j,k tilalle Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 19/39 p. 19/39
Tietokonetoteutus l(m, j, k) = l(m 1, j, k) l(m, j, 2 m 1 + k) = l(m 1, 2 n m + j, k) kun j = 0, 1,..., 2 n m 1 ja k = 0, 1,..., 2 m 1 1 Mutta: Tällöin molemmat ehdot l(0, j, 0) = j kaikilla j = 0, 1,..., N 1 l(n, 0, k) = k kaikilla k = 0, 1,..., N 1 eivät voi olla voimassa samanaikaisesti Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 20/39 p. 20/39
Tietokonetoteutus Valitaan: Alkupisteistö f j oikeassa järjestyksessä l(0, j, 0) = j kaikilla j = 0, 1,..., N 1 Merkitään: k = m 1 i=0 k i2 i, missä k i {0, 1} (k i :t ovat indeksin k bitit binääriesityksessä) Määritellään: b m (k) = m 1 i=0 k m i 12 i (b m kääntää bitit päinvastaiseen järjestykseen) Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 21/39 p. 21/39
Tietokonetoteutus l(m, j, k) = l(m 1, j, k) l(m, j, 2 m 1 + k) = l(m 1, 2 n m + j, k) kun j = 0, 1,..., 2 n m 1 ja k = 0, 1,..., 2 m 1 1 l(m, j, k) = l(m 1, j + k m 1 2 n m, m 2 i=0 k i2 i ) kun j = 0, 1,..., 2 n m 1 ja k = 0, 1,..., 2 m 1 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 22/39 p. 22/39
Tietokonetoteutus l(m,j, k) = l(m 1, j + k m 1 2 n m, m 2 i=0 k i2 i ) = l(m 2, j + k m 1 2 n m + k m 2 2 n m+1, m 3 i=0 k i2 i ) = = l(0, j + k m 1 2 n m + + k 0 2 n 1, 0) = l(0, j + 2 n m m 1 i=0 k m i 12 i, 0) = l(0, j + 2 n m b m (k), 0) = j + 2 n m b m (k) [koska l(0, j, 0) = j j] Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 23/39 p. 23/39
Tietokonetoteutus l(m, j, k) = j + 2 n m b m (k) l(n, 0, k) = b n (k) kaikilla k = 0, 1,..., N 1 Jos alkupisteistö f j on oikeassa järjestyksessä, loppupisteistö ˆf k saadaan bittikäänteisessä järjestyksessä (bit-reversed order) Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 24/39 p. 24/39
Tietokonetoteutus l(m, j, k) = j + 2 n m b m (k) l(m 1, j, k) = j + 2 n m+1 b m 1 (k) l(m 1, 2 n m + j, k) = 2 n m + j + 2 n m+1 b m 1 (k) Lisäksi: k voidaan korvata b m 1 (k):lla (samantekevää, missä järjestyksessä indeksit käydään läpi) Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 25/39 p. 25/39
p. 26/39 Algoritmi (versio 1) do j = 0,N 1 A(j) := f j / N end do do m = 1,n do k = 0, 2 m 1 1 α := w b m 1(k)N/2 m do j = 0, 2 n m 1 u := A(j + 2 n m+1 k) v := αa(2 n m + j + 2 n m+1 k) A(j + 2 n m+1 k) := u + v A(2 n m + j + 2 n m+1 k) := u v end do end do end do do k = 0,N 1 ˆf k := A ( b n (k) ) end do Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 26/39
Tietokonetoteutus (toinen muoto) Valitaan: Loppupisteistö ˆf k järjestyksessä l(n, 0, k) = k kaikilla k = 0, 1,..., N 1... l(m 1, j, k) = k + 2 m 1 b n m+1 (j) l(0, j, 0) = b n (j) kaikilla j = 0, 1,..., N 1 Jos alkupisteistö f j on bittikäänteisessä järjestyksessä, loppupisteistö ˆf k saadaan oikeassa järjestyksessä Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 27/39 p. 27/39
p. 28/39 Algoritmi (versio 2) do j = 0,N 1 A ( b n (j) ) := f j end do do m = 1,n do k = 0, 2 m 1 1 α := w kn/2m do j = 0, 2 n m 1 u := A(k + 2 m j) v := αa(2 m 1 + k + 2 m j) A(k + 2 m j) := u + v A(2 m 1 + k + 2 m j) := u v end do end do end do do k = 0,N 1 ˆf k := A(k)/ N end do Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 28/39
Algoritmit Versio 1: Kiertokerrointa laskettaessa tehdään bitinkääntö Versio 2: Rekursiosilmukassa ei bitinkääntöä Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 29/39 p. 29/39
Algoritmien toiminta Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 30/39 p. 30/39
Tenttivinkit Luku 1 Absoluuttinen ja suhteellinen virhe Oikeat desimaalit ja merkitsevät numerot Hyvin/huonosti asetetut tehtävät Numeerinen stabiilisuus Häiriöalttius, määritelmä ja soveltaminen Demot 1.2, 1.3 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 31/39 p. 31/39
Tenttivinkit Luku 2 Iteratiivisten menetelmien konvergenssi Puolitushaku, kiintopistemenetelmä, Newtonin menetelmä Polynomit ja Hornerin menetelmä Newtonin menetelmä polynomeille (kaikkien juurien löytäminen) Demot 1.4, 1.5 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 32/39 p. 32/39
Tenttivinkit Luku 3 Suorat ja iteratiiviset menetelmät Positiivisesti definiitit matriisit LU-hajotelma: johtaminen yhtälöstä A = LU Choleskyn hajotelma: johtaminen yhtälöstä A = LL T Yhtälöryhmän ratkaiseminen hajotelman avulla Matriisin häiriöalttius Demot 2.2, 2.3 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 33/39 p. 33/39
Tenttivinkit Luku 4 Ominaisarvot ja ominaisvektorit Potenssiinkorotusmenetelmät (perusideat) Similaariset matriisit QR-menetelmä (perusidea) Demo 3.4 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 34/39 p. 34/39
Tenttivinkit Luku 5 Interpolaatiopolynomin Lagrangen muoto Interpolaatiopolynomin Newtonin muoto Splinit, luonnollinen kuutiosplini Interpolointi kuutiosplinillä (pääkohdat) Pienimmän neliön/neliösumman approksimointi (perusideat) Demot 4.1, 4.2, 4.4, 4.5 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 35/39 p. 35/39
Tenttivinkit Luku 6 Puolisuunnikassääntö, Simpsonin kaava, keskipistesääntö Integrointi osaväleittäin Adaptiiviset integrointialgoritmit (perusidea) Differenssiapproksimaatiot: etenevä, takeneva, keskeisdifferenssi Demot 5.3, 6.2 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 36/39 p. 36/39
Tenttivinkit Luku 7 Alkuarvotehtävät Yksiaskel- ja moniaskelmenetelmät Eulerin menetelmä, implisiittinen Eulerin menetelmä Ennustus-korjaus-menetelmät Demot 6.4, 6.5 Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 37/39 p. 37/39
Tenttivinkit FFT Diskreetti Fourier-muunnos Lineaarisuus ja normin säilyminen (lauseet 2.2 ja 2.3) Nopeat Fourier-muunnokset, yleinen algoritmi (perusidea) Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 38/39 p. 38/39
Onnea tenttiin! Numeeriset menetelmät Syksy 2011 Luento 14 To 20.10.2011 p. 39/39 p. 39/39