Newtons interpolasjon og dividerte differanser Gitt (x i, y i ), for i = 0, 1,..., n, Newtons basis funksjoner er definert som 1/16 j 1 π j (x) = (x x 0 )(x x 1 ) (x x j 1 ) = (x x k ) for j = 1,..., n og π 0 (x) = 1. Fakta om π j (x): π j (x) er et polynom av grad j. Ved interpolasjons nodene, π j (x k ) = 0 hvis k < j. k=0 Newtons interpolasjon polynomet er: p n (x) = og ved interpolasjons node x i har vi: n α j π j (x) j=0 α 0 φ 0 (x i ) + α 1 φ 1 (x i ) + + α i φ i (x i ) = y i
dermed er A = (π j (x i )) en nedre triangulær matrise 1 0 0. 1 (x A = 1 x 0 )........ 0 1 (x n x 0 ) (x n x 0 )(x n x 1 ) (x n x 0 ) (x n x n 1 ) Likningssystemet Aα = y kan løses i O(n 2 ) operasjoner. Det interpolasjon polynomet kan evalueres med Horners algoritme: 2/16 p n (x) = α 0 + (x x 0 )(α 1 + (x x 1 )(α 2 + (α n 1 + α n (x x n 1 )) )) Koeffisientene α i kalles også for dividerte differanser faktisk, det man gjør i praksis er at man regnet ut differansetabellen i stede for å løse den lineær likningssystemet
Dividerte differanser Prinsippet for dividete differanser er at vi bygger opp en tabell som følger (med n = 3 som eksempel): x 0 f[x 0 ] x 1 f[x 1 ] x 2 f[x 2 ] x 3 f[x 3 ] f[x 0, x 1 ] f[x 1, x 2 ] f[x 2, x 3 ] f[x 0, x 1, x 2 ] f[x 1, x 2, x 3 ] f[x 0, x 1, x 2, x 3 ] 3/16 Interpolasjonspunktene føres opp i de to første kolonnene, og de øvrige kolonnene regnes ut etter rekursjonsformelen: f[x i ] = y i = f[x i, x i+1 ] = f[x i+1] f[x i ] x i+1 x i.. (1) f[x i, x i+1,..., x i+k ] = f[x i+1, x i+2,..., x i+k ] f[x i, x i+1,..., x i+k 1 ] x i+k x i
Newtons interpolasjonsformel uttrykkes ved tallene i den øverste NV-SØ diagonalen i differansetabellen som x 0 f[x 0 ] f[x 0, x 1 ] x 1 f[x 1 ] x 2 f[x 2 ] x 3 f[x 3 ] f[x 1, x 2 ] f[x 2, x 3 ] f[x 0, x 1, x 2 ] f[x 1, x 2, x 3 ] f[x 0, x 1, x 2, x 3 ] 4/16 p(x) = f[x 0 ] + (x x 0 )f[x 0, x 1 ] + (x x 0 )(x x 1 )f[x 0, x 1, x 2 ] + +(x x 0 )(x x 1 ) (x x n 1 )f[x 0, x 1,..., x n ]. (2) Man kan bevise at denne formelen er korrekt.
Oppsummering on Newtons interpolasjon Fordeler: Dividerte differanser finnes i O(n 2 ) operasjoner Polynomet et lett å manipuleres (kan bruke Horners algoritme) Om vi vil ha flere interpolasjons noder, det er bare å regne ut noe få nye dividerte differanser. 5/16 p n+1 (x) = p n (x) + (x x 0 ) (x x n )f[x 0, x 1,..., x n, x n+1 ] Eksempel
Interpolasjonsfeilen La oss anta at dataene y i kommer fra en funksjon f(x) som kan deriveres n + 1 ganger. 6/16 Vi ønsker å studere feilen e n (x) = f(x) p n (x). y 0 = f(x 0 ) y 1 = f(x 1 ) y n = f(x n ) f(x) x 0 x 1 x n x Vi kaller for p n+1 det n + 1 grads Newtons polynomet som interpolerer dataene: p n+1 (z) = f[x 0 ] + (z x 0 )f[x 0, x 1 ] + + (z x 0 )(z x 1 ) (z x n )f[x 0, x 1,..., x n, x] = p n (z) + (z x 0 ) (z x n )f[x 0, x 1,..., x n, x] Da: e n (z) = f(z) p n (z) = f(z) p n+1 (z) + (z x 0 ) (z x n )f[x 0, x 1,..., x n, x] Husk at p n+1 (x) = f(x) fordi p n+1 interpolerer f også i x. Derfor i x: e n (x) = (x x 0 ) (x x n )f[x 0, x 1,..., x n, x]
Man kan vise at dersom f er n + 1 ganger deriverbar, finnes det ξ I(x 0, x 1,..., x n ) slik at f[x 0, x 1,..., x n, x] = f (n+1) (ξ) (n + 1)! Dermed: Vi kan si at feilen er avhenging av to termer: e n (x) = (x x 0 ) (x x n ) f (n+1) (ξ) (n + 1)! 7/16 En term er avhenging av funksjonen: f (n+1) (ξ) (n + 1)! og det sier at flere punkter gir mindre feil (om at derivertene til f kan skrankes) En term er avhenging av posisjonen av nodene x i : ω(x) = (x x 0 ) (x x n ) MATLAB eksempel
Dersom vi har mulighet å velge interpolasjonsnodene x i, kan vi klare å interpolere nøyaktig, ved å legge x i tettere mot kantene. De nodene som gir det minst feil for alle mulige funksjoner kalles for Chebychev punkter og er røtter av spesielle polynomer (Chebychev ortogonale polynomer). 1 8/16 1 Ortogonale polynomer er ikke pensum for I162A
Hermite interpolasjon Man snakker om Hermite interpolasjon dermed det iterpolerende polynom er regnet ut ved gitt 9/16 funksjons verdier i noen steder deriverte verdier i andre steder y1 y1 y 0 yn y 0 yn x 0 x x 1 n x 0 x x 1 n
Som utgangpunkt, vi bruker f[x 0, x 1,..., x k ] = f (k) (ξ), ξ I(x 0, x k ) k! Hvis alle punktene nærme seg til et gitt punkt x, da må også f[x 0, x 1,..., x k ] f (k) ( x) k!. Det man gjør er at man definerer: 10/16 i tilfellet samme tall x inngår k + 1 ganger. f[ x, x,..., x] def = f (k) ( x) k! Dersom vi i et punkt x kjenner den k te derverte av f, får vi dette i differansetabellen ved å gjenta samme punkt k + 1 ganger. EKS: f(0) = 0, f (0) = 1, f(1) = 2, f (1) = 3, f (1)/2! = 4
Baklengsregning i differansetabellen Vi har sett at: 11/16 høyere deriverte kan brukes i differansetabellen for å regne ut det interpolering polynom Det vi vil diskutere nå er det motsatte problem: gitt en differansetabell, kan det brukes for å regne ut (høyre ordens) deriverte til f? Startpunktet er at: Dersom f(x) = p n (x) er en n te grads polynom, så er f[x 0, x 1,..., x n ] = p (n) n (x)/n! en konstant, uavhenging av nodene x i.
Vi regne ut ved å: utvide tabellen oppover med kopier av punktet der man vil derivere kopiere høyre punkt i tabellen oppover (n te deriver, konstant) regne dividerte differanse baklengs EKS: p(x) = x + x 2 + 3x 2 (x 1) 2, regne ut p (0), p (0), p iv (0). 12/16 Denne teknikken er den billigste måten å omregne et polynom i potens form (monomer basis) fra Newton form.
Taylors formel med feilled La oss velge n + 1 noder, alle lik x 0 : 13/16 interpolasjonspolynomet med feilled blir: f(x) = f[x 0 ] + (x x 0 )f[x 0, x 0 ] + + (x x 0 ) n f[ x 0,..., x }{{} 0 ] + (x x 0 ) n+1 f[ x 0,..., x 0, x] }{{} n+1 ganger n+1 ganger = f(x 0 ) + (x x 0 )f (x 0 ) + + (x x 0 ) n f (n) (x 0 ) n! + (x x 0 ) n+1 f (n+1) (ξ) (n + 1)! Vi kan se at Taylos formel med feilled er en spesialtilfelle av polynomisk Hermite interpolasjon hvor interpolasjonspolynomet er i Newton form.
Ekvidistante intepolasjonsnoder Hvis avstanden mellom to nærmeste noder er konstant, x i+1 x i = h, i = 0, 1,..., n 1, x i = x 0 + ih, i = 0, 1, 2,..., n blir dividerte differanser og interpolasjonspolynomet spesielt enkle. 14/16 Vi introduserer den forover differanse operatoren, for en vilkålig sekvens..., z i 1, z i, z i+1,...: z i = z i+1 z i. Høyere differanser: 2 z i = ( z i ) = (z i+1 z i ) = (z i+2 z i+1 ) (z i+1 z i ) = z i+2 2z i+1 + z i 3 z i = ( 2 z i ) = z i+3 3z i+2 + 3z i+1 z i. Evaluerer vi potenser av over y i = f(x i ), har vi: f[x i, x i+1,..., x i+k ] = k y i h k k! BEVIS: induksjon over k: for k = 0 har vi f[x i ] = y i = 0 y i /h 0 0!; formelen er sant
la oss anta at formelen holder for opp til k 1: vi har f[x i, x i+1,..., x i+k ] f[x i, x i+1,..., x i+k 1 ] = }{{} z i og det betyr at formelen er riktig for alle k. Vi skriver x = x 0 + sh og dermed k 1 y i h k 1 (k 1)! def = f[x i+1,..., x i+k ] f[x i,..., x i+k 1 ] x i+k x i z i = x 0 + (i + k)h x 0 ih = ( k 1 y i ) 1 h k 1 (k 1)! hk = k y i h k k! x x i = x 0 + sh (x 0 + ih) = (s i)h Det er lett å se at Newtons kardinale funskjoner blir: og Newtons polynom blir π j (x) = (x x 0 )(x x 1 ) (x x j 1 ) = s(s 1) (s j + 1)h j p n (x) = y 0 + s y 0 + s(s 1) 2 y 0 + + 2! s(s 1) (s n + 1) n y 0. n! 15/16
Neste gang: Splines 16/16