Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Univerzitet u Beogradu

Fizički fakultet

Seminarski rad iz Aplikativnog softvera

Interpolacija seta podataka Njutnovim interpolacionim


polinomima

Nemanja Obućina
B1
2008/2019
3.2.2020.
SADRŽAJ Nemanja Obućina

Sadržaj
1 Teorijski uvod 2

2 Njutnov interpolacioni polinom sa podeljenim razlikama 2

3 Rad u Wolfram Mathematica 3

1
2 NJUTNOV INTERPOLACIONI POLINOM SA PODELJENIM RAZLIKAMANemanja Obućina

1 Teorijski uvod
Interpolacija je postupak nalaženja neke druge funkcije koja je bliska prvoj (u nekom smislu),
odnosno nalaženje funkcije koja dobro aproksimira i koja je laka za račun.
Na primer, tražimo polinom n-tog stepena ako nam je data funkcija sa n+1 čvorova
Pretpostavimo da je neka funckija data tablično:

x x0 x1 x2 x3 ... xn čvorovi interpolacije


y = f(x) y0 y1 y2 y3 ... yn vrednosti funckije u čvorovima
Tabela 1: Primer funkcije date tablično

Dakle, tražimo polinom stepena n takav da važi: 𝑝𝑛 (𝑥𝑖 ) = 𝑦𝑖 i = 0,1,...,n i nazivamo ga interpolantom.
Ako je rastojanje između čvorova jednako, čvorove nazivamo ekvidistantnim. Ekvidistantni čvorovi
čine ekvidistantnu mrežu. Rastojanje između dva čvora naziva se korak interpolacije i obeležava se
ga sa h (ℎ = 𝑑(𝑥𝑖 , 𝑥𝑖+1 )).

Slika 1: Polinom i data funcija se poklapaju u čvorovima interpolacije dok u ostalim čvorovima to ne
mora da bude slučaj.

2 Njutnov interpolacioni polinom sa podeljenim razlikama


Podeljene razlike definišemo na sledeći način:

reda 1 𝑓 [0]
𝑓 (𝑥1 )−𝑓 (𝑥0 )
reda 1 𝑓 [𝑥0 , 𝑥1 ] = 𝑥1 −𝑥0
𝑓 [𝑥 ,𝑥 )−𝑓 [𝑥 ,𝑥 ]
reda 2 𝑓 [𝑥0 , 𝑥1 , 𝑥2 ] = 1 𝑥2 −𝑥 0 1
2 1
... ...
𝑓 (𝑥0 ) 𝑓 (𝑥𝑛 )
reda n 𝑓 [𝑥0 , 𝑥1 , .., 𝑥𝑛 ] = (𝑥0 −𝑥1 )(𝑥0 −𝑥2 )...(𝑥0 −𝑥𝑛 )
+ ... + (𝑥𝑛 −𝑥0 )(𝑥0 −𝑥1 )...(𝑥𝑛 −𝑥𝑛 −1)

Tabela 2: Podeljene razlike

Nad skupom od (n+1) interpolacionih čvorova može se konstruisati interpolacioni polinom sa po-
deljenim razlikama koji je najviše stepena n !!!

2
3 RAD U WOLFRAM MATHEMATICA Nemanja Obućina

𝑥 𝑦𝑖 = 𝑓 [0] reda 1 reda 2 reda 3


𝑥0 𝑦0
𝑓 [𝑥0 , 𝑥1 ]
𝑥1 𝑦1 𝑓 [𝑥0 , 𝑥1 , 𝑥2 ]
𝑓 [𝑥1 , 𝑥2 ] 𝑓 [𝑥0 , 𝑥1 , 𝑥2 , 𝑥3 ]
𝑥2 𝑦2 𝑓 [𝑥1 , 𝑥2 , 𝑥3 ]
𝑓 [𝑥2 , 𝑥3 ]
𝑥3 𝑦3
Tabela 3: Tablica podeljenih razlika

Njutnov interpolacioni polinom sa podeljenim razlikama je oblika

𝑃 𝑛 = 𝑓 [𝑥0 ]+(𝑥−𝑥0 )𝑓 [𝑥0 , 𝑥1 ]+(𝑥−𝑥0 )(𝑥−𝑥1 )𝑓 [𝑥0 , 𝑥1 , 𝑥2 ]+...+(𝑥−𝑥0 )(𝑥−𝑥1 )...(𝑥−𝑥𝑛 −1)𝑓 [𝑥0 , 𝑥1 , 𝑥2 , ..., 𝑥𝑛 ]
(1)

3 Rad u Wolfram Mathematica


Program za crtanje grafika putem Njutnovog interpolacionog polinoma je odrađen u Wolfram Mat-
hematica softveru. Neophodno je da se omogući unos željene funkcije, željenih tačaka, broja proi-
zvoljnih tačaka i svakako da se definiše Njutnova interpolaciona jednačina (1). To je urađeno na sledeći
način.
Prvi korak je da se izaberu tačke, ispiše funkcija i da se odredi broj podataka (u ovom slučaju izabrana
3
je funkcija 𝑒𝑥 i tačke 𝑥1 = 1 i 𝑥2 = 3):

x1[1, 3];
f[x_] := Exp[x^3];
n = 15;
Zatim sledi učitavanje ”n” proizvoljnih tačaka i njihovo predstavljanje na grafiku Slika 2:

data = Table[Random[Real, {x1[[1]], x1[[2]]}], {n}];


data = Table[{data[[i]], f[data[[i]]]}, {i, Length[data]}];
xi = Table[Table[Delete[data[[i]], 2], {i, n}][[i]][[1]], {i, n}];
yi = Table[Table[Delete[data[[i]], 1], {i, n}][[i]][[1]], {i, n}];
g1 = ListPlot[data, PlotStyle -> {PointSize[0.019], Green},
PlotLegends -> {"Proizvoljne ta£ke"}];
Definišemo podeljene razlike:

h1 = Table[xi[[i]] - xi[[k]], {i, 1, n}, {k, 1, n}];


h1 = Table[Delete[h1[[i]], i], {i, n}];
h2 = Table[FoldList[#1*#2 &, 1, h1[[i]]], {i, 1, n}];
h2 = Table[Delete[h2[[i]], 1], {i, n}];

fi1 = yi/h2;
fi = FoldList[#1 + #2 &, 0, fi1];
fi = Delete[fi, 1];
fi = Delete[fi, 1];

3
3 RAD U WOLFRAM MATHEMATICA Nemanja Obućina

Slika 2: Proizvoljne tačke prikazane na grafiku.

Zatim, definišemo razliku (𝑥 − 𝑥0 )(𝑥 − 𝑥1 )...(𝑥 − 𝑥𝑛 − 1):


proiz = Table[x - xi[[i]], {i, 1, n}];
proiz1 = FoldList[#1*#2 &, 1, proiz];
proiz1 = Delete[proiz1, 1];
proiz1 = Delete[proiz1, n];
I na kraju, kada je sve ovo definisano, možemo da kompletiramo jednačinu:
pn1 = fi*proiz1;
pn2 = Table[pn1[[i]][[i]], {i, 1, n - 1}];
pn = yi[[1]] + Total[pn2];
Komandom Expand[pn] dobijamo konačan polinom dobijen Njutnovom interpolacionom jednači-
nom:
4.38615 ∗ 107 −4.44879 ∗ 108 𝑥+2.0905 ∗ 109 𝑥2 −6.03253 ∗ 109 𝑥3 +1.19441 ∗ 1010 𝑥4 −1.71662 ∗
1010 𝑥5 + 1.84698 ∗ 1010 𝑥6 − 1.51149 ∗ 1010 𝑥7 + 9.45497 ∗ 109 𝑥8 − 4.49952 ∗ 109 𝑥9 + 1.60375 ∗
109 𝑥10 − 4.15215 ∗ 108 𝑥11 + 7.38274 ∗ 107 𝑥12 − 8.07093 ∗ 106 𝑥13 + 409375.𝑥14

Slika 3: Grafik na kome je predstavljena originalna funkcija (žuta boja), proizvoljne tačke (zelena
boja) i Njutnova interpolacija (crvena boja)

You might also like