You are on page 1of 20

lagrange.

nb

Interpolacija Lagrange-ovim polinomom


Openito o interpolaciji Interpolacija neke fukcije polinomom ima mnoge znaajne primjene. Primjerice, vrlo je esto potrebno - u zadanom intervalu - pronai vrijednost funkcije u nekoj toki - za poznatu funkciju koja je zadana tablino (uz ogranieni broj toaka). Jo je znaajnija primjena u analizi razliitih eksperimentalnih mjerenja kada su raspoloive vrijednosti nepoznate funkcije u veem broju toaka. Pored navedenog, interpolacija - kao numerika metoda - predstavlja osnovicu za jo sloenije postupke kao to je numerika integracija ili rjeavanje diferencijalnih jednadbi.

lagrange.nb

Lagrange-ov polinom Neka je dana funkcija f:[a,b] R i meusobno razliite toke x0 , x1 , x2 , x3 ... xn iz [a,b]. elimo aproksimirati funkciju f polinomom P(x) koji u izabranim tokama ima iste vrijednosti kao i funkcija f. Ovako postavljen problem ima mnogo rjeenja - ali ako je stupanj polinoma upravo n postoji samo jedno rjeenje. Takav polinom - sa svojstvom P(xk ) = yk - zove se Lagrange-ov polinom:

P(x) =
k=0

yk
(1)

n i=0 ik

Ukoliko se radi o ve poznatoj funkciji f moe se procijeniti maksimalna pogreka interpolacijskog polinoma (u zadanom intervalu [a,b]):

-xi L Hx
k i

Hx-x L

Mn f(x)-P(x)| b |x-x0 |x-x1 |x-x2 n+1 ! (2) |x-xn


... gdje je:

Bitno je uoiti kako poveanje broja toaka (n) znaajno smanjuje 1 pogreku - radi Hn+ 1L!

Mn = maxx @a,bD |f Hn+1L(x)|

(3)

lagrange.nb

Primjeri

Primjer 1 U praksi je est sluaj (naroito kao posljedica eksperimentalnih mjerenja) da su poznate vrijednosti funkcije u samo nekoliko toaka - primjerice: ClearAll; x = 81, 2.2, 3.7, 4.4, 6.6<; y = 84.2, 17.8, 22.5, 45.3, 71.9<;

Za interpolaciju se moe koristiti Lagrange-ov polinom etvrtog stupnja: lagrange@t_, x_, y_D := ModuleA8n, pol, q, i, j<, n = Dimensions@xDP1T; pol = 0; ForAi = 1, i n, i++, q = 1; q Ht - xPjTL ForAj = 1, j n, j++, IfAj i, q = EE; xPiT - xPjT

p1@t_D := lagrange@t, x, yD p1@tD


0.0680828 H6.6 + tL H4.4 + tL H3.7 + tL H2.2 + tL 1.02158 H6.6 + tL H4.4 + tL H3.7 + tL H1 + tL + 2.73673 H6.6 + tL H4.4 + tL H2.2 + tL H1 + tL 3.93256 H6.6 + tL H3.7 + tL H2.2 + tL H1 + tL + 0.45737 H4.4 + tL H3.7 + tL H2.2 + tL H1 + tL

E;

pol = pol + q yPiT;

polE;

lagrange.nb

... odnosno: Expand@p1@tDD


113.721 + 207.144 t 111.479 t2 + 23.948 t3 1.69196 t4

U programskom paketu Mathematica vec postoji ugraena funkcija InterpolatingPolynomial za izraunavanje interpolacijskog polinoma, ali se koristi tzv. Newton-ov oblik: p1math = InterpolatingPolynomial@ 881, 4.2<, 82.2, 17.8<, 83.7, 22.5<, 84.4, 45.3<, 86.6, 71.9<<, zD Expand@p1mathD

113.721 + 207.144 z 111.479 z2 + 23.948 z3 1.69196 z4

4.2 + H11.3333 + H3.03704 + H4.82882 1.69196 H4.4 + zLL H3.7 + zLL H2.2 + zLL H1 + zL

Moe se uoiti da je poetni oblik polinoma p1 i p1math razliit, ali se razvijanjem oba izraza dolazi do istih polinoma (jer postoji samo jedan polinom stupnja n koji prolazi kroz sve n+1 zadane toke). Da li stvarno ovako dobiveni polinom p1 prolazi zadanim tokama? To se moe provjeriti: test1 = p1@xD y
84.2, 17.8, 22.5, 45.3, 71.9< 84.2, 17.8, 22.5, 45.3, 71.9<

Ako se u funkciji lagrange kao argumenti predaju ope vrijednosti moe se dobiti razvijeni izraz (1):

lagrange.nb

x = 8x0, x1, x2, x3, x4<; y = 8y0, y1, y2, y3, y4<; p1@tD

p1@t_D := lagrange@t, x, yD

Ht x1L Ht x2L Ht x3L Ht x4L y0 + Hx0 x1L Hx0 x2L Hx0 x3L Hx0 x4L Ht x0L Ht x2L Ht x3L Ht x4L y1 Ht x0L Ht x1L Ht x3L Ht x4L y2 + + Hx0 + x1L Hx1 x2L Hx1 x3L Hx1 x4L Hx0 + x2L Hx1 + x2L Hx2 x3L Hx2 x4L Ht x0L Ht x1L Ht x2L Ht x4L y3 Ht x0L Ht x1L Ht x2L Ht x3L y4 + Hx0 + x3L Hx1 + x3L Hx2 + x3L Hx3 x4L Hx0 + x4L Hx1 + x4L Hx2 + x4L Hx3 + x4L

Primjer 2 Zadane su vrijednosti funkcije u samo 3 toke: x = 8-3.0, 2.7, 4.3<; y = 8-0.9, -3.5, 1.3<;

p2@t_D := lagrange@t, x, yD; p2@tD Expand@p2@tDD

0.0216294 H4.3 + tL H2.7 + tL + 0.383772 H4.3 + tL H3. + tL + 0.111301 H2.7 + tL H3. + tL 6.10332 0.314107 t + 0.473444 t2

plot21 = ListPlot@Table@8xPiT, yPiT<, 8i, 1, 3<D, PlotStyle 8RGBColor@0, 1, 0D, PointSize@.03D<D; plot22 = Plot@p2@tD, 8t, -3.5, 5<, PlotStyle 8RGBColor@1, 0, 0D<D; Show@plot21, plot22, Frame TrueD

lagrange.nb

-3

-2

-1 -1

-2

-3

4 2

-2 -2 -4 -6

4 2 0 -2 -4 -6 -2
Graphics

lagrange.nb

Primjer 3 Ponekad se moe raditi i interpolacija poznate funkcije koja je zadana tablino: p p 3p x = 90, , , p, , 2 p=; 3 2 2 y = Sin@xD
!!! 3 , 1, 0, 1, 0= 2

Za interpolaciju se koristi Lagrange-ov polinom 5. stupnja: p3@t_D := lagrange@t, x, yD p3@tD Expand@p3@tDD


243

90,

!!! !!! 320 t 729 3 t 544 t2 1215 3 t2 + + 21 70 7 2 28 2 !!! 3 !!! 4 !!! 352 t3 243 3 t 480 t4 243 3 t 96 t5 243 3 t5 + + 3 3 4 4 5 + 7 7 35 5 3 4 7

!!! 3 t H2 + tL H 32 + tL H + tL H + tL 2 35 5 16 t H2 + tL H + tL H 16 t H2 + tL H 32 + tL H + tL H + tL 3 + 5 7 5

+ tL H

+ tL

Provjera da li polinom prolazi zadanim tokama: test3 = p3@xD y


90,

90,

!!! 3 , 1, 0, 1, 0= 2

!!! 3 , 1, 0, 1, 0= 2

lagrange.nb

plot31 = ListPlot@Table@8xPiT, yPiT<, 8i, 1, 6<D, PlotStyle 8RGBColor@0, 1, 0D, PointSize@.03D<D; plot32 = Plot@p3@tD, 8t, 0, 7<, PlotStyle 8RGBColor@1, 0, 0D<D; Show@plot31, plot32, Frame TrueD
1

0.5

1 -0.5

-1

0.5

1 -0.5

-1

lagrange.nb

0.5

-0.5

-1 0
Graphics

Sada se polinom moe iskoristiti i za izraunavanje vrijednosti fukcije za bilo koju toku (preporuivo - unutar zadanog intervala!). Primjerice za x=2.5 : p3@2.5D Sin@2.5D greska3 = p3@2.5D - Sin@2.5D
0.590734 0.598472 0.00773856

Maksimalna pogreka se mogla procijeniti prema izrazu (2):


p Sin@ D p 2 maxgreska3 = Abs@2.5 - 0D AbsA2.5 - E 6! 3 p 3p AbsA2.5 - E Abs@2.5 - pD AbsA2.5 - E Abs@2.5 - 2 pD 2 2

0.0251712

lagrange.nb

10

Problemi i ogranienja

Primjer 4 Prethodni primjer (Primjer 3.) moe posluiti kako bi se ukazalo i na znaajne nedostatke interpolacije Lagrange-ovim polinomom. Dakle, za interpolaciju se koristio Lagrange-ov polinom 5. stupnja (crveno). Na grafiki prikaz je - radi usporedbe - dodana i polazna funkcija Sin(x) (plavo): plot41 = ListPlot@Table@8xPiT, yPiT<, 8i, 1, 6<D, PlotStyle 8RGBColor@0, 1, 0D, PointSize@.03D<D; plot42 = Plot@p3@tD, 8t, -3, 12<, PlotStyle 8RGBColor@1, 0, 0D<D; plot43 = Plot@Sin@tD, 8t, -3, 12<, PlotStyle 8RGBColor@0, 0, 1D<D; Show@plot41, plot42, plot43, Frame TrueD
1

0.5

1 -0.5

-1

lagrange.nb

11

-2 -2

10

12

-4

0.5

-2 -0.5

10

12

-1

-2

-4 -2
Graphics

10

12

Moe se uoiti vrlo dobro podudaranje zadane funkcije (plavo) i interpolacijskog polinoma (crveno) - u zadanom intervalu (od 0 do 2 p). Meutim, izvan tog intervala dolazi do velikog odstupanja i na tu injenicu

lagrange.nb

12

treba obratiti izuzetnu pozornost - naroito u sluajevima kada nije poznata polazna funkcija ve na osnovi eksperimentalnih podataka i interpolacijskog polinoma treba izvesti zakljuke - primjerice o nekoj prirodnoj pojavi.

Primjer 5 Kako se moe i pretpostaviti na tonost interpolacijskog polinoma znaajno e utjecati i broj poznatih toaka. Primjerice, moe se promatrati poznata funkcija Cos6 x u intervalu od -2 to 2. f@t_D := If@t -2 && t 2, Cos@tD6 , 0D plot51 = Plot@f@xD, 8x, -2, 2<, PlotRange 8-1, 1<, PlotStyle 8RGBColor@0, 0, 1D<D
1 0.75 0.5 0.25 -2 -1 -0.25 -0.5 -0.75 -1
Graphics

Interpolacija e se redom vriti na osnovi 3, 5 i 7 poznatih toaka: x = 8-2, 0, 2<; y = Cos@xD6 ;

lagrange.nb

13

p52@t_D := lagrange@t, x, yD; Expand@p52@tDD plot52 = Plot@p52@tD, 8t, -2, 2<, PlotStyle 8RGBColor@1, 0, 0D<D; Show@plot51, plot52, Frame TrueD
t2 1 2 + t Cos@2D6 4 4

1 0.8 0.6 0.4 0.2

-2

-1

1 0.75 0.5 0.25 0 -0.25 -0.5 -0.75 -2


Graphics

-1

x = 8-2, -1, 0, 1, 2<; y = Cos@xD6 ;

lagrange.nb

14

p53@t_D := lagrange@t, x, yD; Expand@p53@tDD plot53 = Plot@p53@tD, 8t, -2, 2<, PlotStyle 8RGBColor@1, 0, 0D<D; Show@plot51, plot53, Frame TrueD
5 t2 t4 4 2 1 4 1 2 1 4 + + t Cos@1D6 t Cos@1D6 t Cos@2D6 + t Cos@2D6 4 4 3 3 12 12

1 0.75 0.5 0.25

-2

-1 -0.25 -0.5

1 0.75 0.5 0.25 0 -0.25 -0.5 -0.75 -2


Graphics

-1

2 4 4 2 x = 9-2, -2 + , -2 + , 0, 2 - , 2 - , 2=; 3 3 3 3 6 y = Cos@xD ;

lagrange.nb

15

p54@t_D := lagrange@t, x, yD; Expand@p54@tDD plot54 = Plot@p54@tD, 8t, -2, 2<, PlotStyle 8RGBColor@1, 0, 0D<D; Show@plot51, plot54, Frame TrueD
49 t2 63 t4 81 t6 27 2 2 6 + + t CosA E 16 32 256 8 3 351 4 2 6 243 6 2 6 27 2 4 6 27 4 4 6 t CosA E + t CosA E t CosA E + t CosA E 128 3 512 3 80 3 32 3 243 t6 Cos@ 4 D 3 1280
6

1 2 9 81 t6 Cos@2D6 t Cos@2D6 t4 Cos@2D6 + 40 128 2560

1 0.8 0.6 0.4 0.2

-2

-1

1 0.75 0.5 0.25 0 -0.25 -0.5 -0.75 -2


Graphics

-1

Moe se uoiti da je podudaranje fukcija sve bolje s poveanjem broja toaka, ali i da rastu oscilacije na rubovima zadanog intervala.

lagrange.nb

16

Primjer 6 Problem oscilacija se moe ublaiti izborom toaka po ebievljev-u naputku - tako da budu gue rasporeene na rubovima intervala. To se moe pokazati na prethodnom primjeru: 2 4 4 2 x = 9-2, -2 + , -2 + , 0, 2 - , 2 - , 2=; 3 3 3 3 6 y = Cos@xD ; f@t_D := If@t -2 && t 2, Cos@tD6 , 0D plot61 = Plot@f@xD, 8x, -2, 2<, PlotRange 8-1, 1<, PlotStyle 8RGBColor@0, 0, 1D<D
1 0.75 0.5 0.25 -2 -1 -0.25 -0.5 -0.75 -1
Graphics

Polinom p62 predstavlja interpolaciju uz jednako razmaknute toke, dok fukcija cheb priprema toke prema ebievljevu. Te toke se koriste za polinom p63:

lagrange.nb

17

p62@t_D := lagrange@t, x, yD; Expand@p62@tDD plot62 = Plot@p62@tD, 8t, -2, 2<, PlotStyle 8RGBColor@1, 0, 0D<D;
49 t2 63 t4 81 t6 27 2 2 6 + + t CosA E 16 32 256 8 3 351 4 2 6 243 6 2 6 27 2 4 6 27 4 4 6 t CosA E + t CosA E t CosA E + t CosA E 128 3 512 3 80 3 32 3 243 t6 Cos@ 4 D 3 1280
6

1 2 9 81 t6 Cos@2D6 t Cos@2D6 t4 Cos@2D6 + 40 128 2560

1 0.8 0.6 0.4 0.2

-2

-1

92 CosA

k = 81, 2, 3, 4, 5, 6, 7<; cheb@n_, a_, b_D := HHa + bL 2 + Ha - bL 2 L * Cos@H2 * n - 1L * p H2 * Max@nDLD xx = cheb@k, -2, 2D p63@t_D := lagrange@t, xx, yD; p63@tD plot63t = ListPlot@Table@8xxPiT, 0<, 8i, 1, 7<D, PlotStyle 8RGBColor@0, 1, 1D, PointSize@.03D<D; plot63 = Plot@p63@tD, 8t, -2, 2<, PlotStyle 8RGBColor@1, 0, 1D<D; Show@plot61, plot62, plot63, plot63t, Frame TrueD

5 9 11 13 3 E, 2 CosA E, 2 CosA E, 2 CosA E, 0, 2 CosA E, 2 CosA E= 14 14 14 14 14 14

lagrange.nb

18

Jt Cos@2D6 Jt + 2 CosA

11 13 3 y EN Jt + 2 CosA EN SecA Ez z 14 14 14 { 9 3 3 5 3 J2 J2 CosA E 2 CosA EN J2 CosA E + 2 CosA EN J2 CosA E + 2 CosA EN 14 14 14 14 14 14 3 11 3 13 J2 CosA E + 2 CosA EN J2 CosA E + 2 CosA ENN 14 14 14 14 6 i jt CosA 2 E It + 2 CosA EM Jt + 2 CosA 3 EN Jt + 2 CosA 9 EN j 3 14 14 14 k 11 13 5 z y Jt + 2 CosA EN Jt + 2 CosA EN SecA Ez 14 14 14 { 9 5 3 5 5 EN J2 J2 CosA E 2 CosA EN J2 CosA E 2 CosA EN J2 CosA E + 2 CosA 14 14 14 14 14 14 5 11 5 13 J2 CosA E + 2 CosA EN J2 CosA E + 2 CosA ENN 14 14 14 14 6 i jt CosA 2 E It + 2 CosA EM Jt + 2 CosA 3 EN Jt + 2 CosA 5 EN j 3 14 14 14 k Jt + 2 CosA Jt + 2 CosA

5 3 EN EN Jt + 2 CosA 14 14 9 11 13 Jt + 2 CosA EN Jt + 2 CosA EN Jt + 2 CosA EN SecA EN 14 14 14 14 3 5 9 J2 J2 CosA E + 2 CosA EN J2 CosA E + 2 CosA EN J2 CosA E + 2 CosA EN 14 14 14 14 14 14 11 13 J2 CosA E + 2 CosA EN J2 CosA E + 2 CosA ENN 14 14 14 14 6 i j CosA 4 E It + 2 CosA EM Jt + 2 CosA 5 EN Jt + 2 CosA 9 EN jt 3 14 14 14 k

11 13 9 y EN Jt + 2 CosA EN SecA Ez z 14 14 14 { 9 9 3 9 5 EN J2 J2 CosA E 2 CosA EN J2 CosA E 2 CosA EN J2 CosA E 2 CosA 14 14 14 14 14 14 9 11 9 13 J2 CosA E + 2 CosA EN J2 CosA E + 2 CosA ENN 14 14 14 14 3 5 it CosA 4 E6 j It + 2 CosA EM Jt + 2 CosA EN Jt + 2 CosA EN j 3 14 14 14 k 9 13 11 y z Jt + 2 CosA EN Jt + 2 CosA EN SecA Ez 14 14 14 { 11 11 3 11 5 EN J2 J2 CosA E 2 CosA EN J2 CosA E 2 CosA EN J2 CosA E 2 CosA 14 14 14 14 14 14 9 11 11 13 J2 CosA E 2 CosA EN J2 CosA E + 2 CosA ENN 14 14 14 14 3 5 Jt Cos@2D6 It + 2 CosA EM Jt + 2 CosA EN Jt + 2 CosA EN 14 14 14 9 11 13 Jt + 2 CosA EN Jt + 2 CosA EN SecA EN 14 14 14 13 3 13 5 13 J2 J2 CosA E 2 CosA EN J2 CosA E 2 CosA EN J2 CosA E 2 CosA EN 14 14 14 14 14 14 9 13 11 13 J2 CosA E 2 CosA EN J2 CosA E 2 CosA ENN + 14 14 14 14 1 3 5 9 It + 2 CosA EM Jt + 2 CosA EN Jt + 2 CosA EN Jt + 2 CosA EN 64 14 14 14 14 11 13 Jt + 2 CosA EN Jt + 2 CosA EN SecA E 14 14 14 3 5 9 11 13 SecA E SecA E SecA E SecA E SecA E 14 14 14 14 14

lagrange.nb

19

0.5

-2

-1 -0.5

-1

1 0.8 0.6 0.4 0.2

-2

-1

1 0.75 0.5 0.25 0 -0.25 -0.5 -0.75 -2


Graphics

-1

lagrange.nb

20

Moe se uoiti da su toke gue pri rubovima intervala, dok sada interpolacijski polinom (ljubiasto) ima znaajno manje oscilacije od prethodne varijante (crveno).

You might also like