interpolácia - uniba.skzenis.dnp.fmph.uniba.sk/vtv/interpolacia.pdf · fyz-230/00 algoritmy...
TRANSCRIPT
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
FYZ-230/00Algoritmy vedeckotechnických výpo£tov
Interpolácia
1
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Obsah
• Úvod
• Priama interpolácia
• Newtonova interpolácia
• Lagrangeova interpolácia
• Spline
2
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Úvod
• Výpo£et funk£ných hodnôt bol potrebný uº v staroveku pre kalendár a navigáciu
� 300 p.n.l. Babylon, Grécko � pozícia slnka, planét, mesiaca� 150 p.n.l. Grécko � opis sinusoidy pomocou lineárnych rovníc na výpo£et polôh kozmických
telies
• Aº do 20. storo£ia sa hodnoty funkcií ur£ovali tabu©kami.
� Tabu©ky obsahujú len kone£ný po£et hodnôt� �al²ie hodnoty sa získajú interpoláciou� Nové tabu©ky boli £asto plagiáty, chyby v tabu©kách sa mnoºili
• Metódy na zjednodu²enie výpo£tu interpolácií
� 1675 � Newtonova metóda� 1795 � Lagrangeova metóda
3
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
• Charles Babbage
� 1820 � navrhol diferenciálny stroj pre výpo£et hodnôt polynómov� Neskôr navrhol zdokonalený diferenciálny stroj £.2. Tento bol zostrojený pod©a pôvodných
plánov v rokoch 1989�1991.∗ Presnos´ 31 desatinných miest
� Návrh programovate©ného stroja∗ Taktovacia frekvencia 7Hz
Diferenciálny stroj. Diferenciálny stroj £.2.
4
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Interpolácia
Majme body (x0, y0), (x1, y1), (x2, y2), . . . , (xn, yn). Interpoláciou nazývame funkciu f(x)prechádzajúcu týmito bodmi.
Extrapoláciou nazývame nájdenie parametrov modelu tak, aby model najlep²ie popisoval dané body. Model nemusí
prechádza´ týmito bodmi.
Ako funkcia f(x) sa £asto volí polynóm
• Vieme vypo£íta´ hodnotu polynómu
• Polynóm je derivovate©ný
• Polynóm je integrovate©ný
5
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Interpolácia polynómom Pn(x)
Majme body (x0, y0), (x1, y1), (x2, y2), . . . , (xn, yn). Existuje práve jedna funkcia
f(x) = Pn(x) = a0 + a1x+ a2x2 + · · ·+ anx
n
prechádzajúca cez týchto n+ 1 bodov.
Koe�cienty získame rie²ením sústavy n+ 1 rovníc s n+ 1 neznámymi:
a0 + a1x0 + a2x20 + · · ·+ anx
n0 = y0
a0 + a1x1 + a2x21 + · · ·+ anx
n1 = y1... = ...
a0 + a1xn + a2x2n + · · ·+ anx
nn = yn
6
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Interpolácia polynómom Pn(x) (2)
Predpokladajme, ºe existujú dva rôzne polynómy Pn(x) a P ′n(x), ktoré prechádzajú bodmi(x0, y0), (x1, y1), (x2, y2), . . . , (xn, yn). Rozdiel polynómov Pn(x) a P ′n(x) ozna£me akoQn(x).
Qn(x) = Pn(x)− P ′n(x) je polynóm najviac n-tého stup¬a. Pre i ∈ 0, 1, 2, . . . , n platí:
Qn(xi) = Pn(xi)− P ′n(xi) = yi − yi = 0
Poºadujeme, aby polynóm (najviac) n-tého stup¬a mal n+ 1 kore¬ov, £o je spor!
7
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Príklad 1
Odmerali sme rýchlos´ rakety v nieko©kých £asoch.
t [s] v(t) [m/s]0 010 227.0415 362.7820 517.3522.5 602.9730 901.67
Aká je rýchlos´ rakety v £ase t = 17 s?
8
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Príklad 1, lineárna interpolácia
v(t) = a0 + a1t
v(15) = a0 + a1 15 = 362,78
v(20) = a0 + a1 20 = 517,35
Vyrie²ením získame: a0 = −100,93, a1 = 30,914.
v(t) = a0 + a1t
v(t) = −100,93 + 30,914 t
v(17) = −100,93 + 30,913 17 = 424,6m/s
9
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Príklad 1, kvadratická interpolácia
v(t) = a0 + a1t+ a2t2
v(10) = a0 + a1 10 + a2 102 = 227,04
v(15) = a0 + a1 15 + a2 152 = 362,78
v(20) = a0 + a1 20 + a3 202 = 517,35
Vyrie²ením získame: a0 = 12,05, a1 = 17,733, a2 = 0,3766.
v(t) = a0 + a1t+ a2t2
v(t) = 12,05 + 17,733 t+ 0,3766 t2
v(17) = 12,05 + 17,733 17 + 0,3766 172 = 422,3m/s
Relatívny rozdiel od lineárnej interpolácie: ε2 =∣∣∣422,3−424,6422,3
∣∣∣ 100% = 0,55%
10
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Príklad 1, integrovanie interpolácie
Akú dráhu preletela raketa od 11-tej do 22-hej sekundy?
Vzdialenos´ je daná integrálom22∫11
v(t) dt.
Pouºijeme kubickú interpoláciu a rýchlos´ rakety v £asoch 10, 15, 20 a 22,5 s.
v(t) = a0 + a1t+ a2t2 + a3t
3
v(10) = a0 + a1 10 + a2 102 + a3 10
3 = 227,04
v(15) = a0 + a1 15 + a2 152 + a3 15
3 = 362,78
v(20) = a0 + a1 20 + a2 202 + a3 20
3 = 517,35
v(22,5) = a0 + a1 22,5 + a2 22,52 + a3 22,5
3 = 602,97
a0 = −4,2540, a1 = 21,266, a2 = 0,13204, a3 = 0,0054347
v(t) = −4,2540 + 21,266 t+ 0,13204 t2 + 0,0054347 t3
11
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
d =
22∫11
v(t) dt
d =
22∫11
−4,2540 + 21,266 t+ 0,13204 t2 + 0,0054347 t3 dt
d =
[−4,2540 t+ 21,266
t2
2+ 0,13204
t3
3+ 0,0054347
t4
4
]2211
d = 5839,72− 1318,27 = 4521,45m
12
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Príklad 1, derivovanie interpolácie
Aké je zrýchlenie rakety v £ase t = 17 s?
Zrýchlenie je dané deriváciou a(t) = dv(t)dt .
Pouºijeme uº získanú kubickú interpoláciu:
a(t) =dv(t)
dt=
d
dt
(−4,254 + 21,266 t+ 0,13204 t2 + 0,0054347 t3
)a(t) = 21,266 + 0,26408 t+ 0,0163041 t2
a(17) = 21,266 + 0,26408 17 + 0,0163041 172 = 30,467m/s2
13
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Newtonova interpolácia
Interpolácia polynómom.
Polynóm h©adáme v tvare
Pn(x) = b0 + b1(x− x0) + b2(x− x0)(x− x1) + · · ·+ bn(x− x0)(x− x1) . . . (x− xn−1)
14
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Newtonova interpolácia, lineárny prípad
Interpolácia lineárnou funkciou P1(x) = b0 + b1(x− x0).
Funkcia prechádza bodmi (x0, f(x0)), (x1, f(x1)).
P1(x0) = b0 + b1(x0 − x0) = f(x0)
P1(x1) = b0 + b1(x1 − x0) = f(x1)
b0 = f(x0)
b1 =f(x1)− f(x0)
x1 − x0
15
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Newtonova interpolácia, kvadratický prípad
Interpolácia kvadratickou funkciou P2(x) = b0 + b1(x− x0) + b2(x− x0)(x− x1).
Funkcia prechádza bodmi (x0, f(x0)), (x1, f(x1)), (x2, f(x2)).
b0 = f(x0)
b1 =f(x1)− f(x0)
x1 − x0
b2 =
f(x2)−f(x1)x2−x1
− f(x1)−f(x0)x1−x0
x2 − x0
16
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Newtonova interpolácia, kvadratický prípad, odvodenie
Máme polynóm P2(x) = f(x) = b0 + b1(x− x0) + b2(x− x0)(x− x1).
V bode x0 platí:
f(x0) = b0 + b1(x0 − x0) + b2(x0 − x0)(x0 − x1)
f(x0) = b0
b0 = f(x0),
V bode x1 platí:
f(x1) = b0 + b1(x1 − x0) + b2(x1 − x0)(x1 − x1)
f(x1) = b0 + b1(x1− x0)
f(x1) = f(x0) + b1(x1 − x0)
b1 =f(x1)− f(x0)
x1 − x0
17
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
V bode x2 platí:
f(x2) = b0 + b1(x2 − x0) + b2(x2 − x0)(x2 − x1)
f(x2) = f(x0) +f(x1)− f(x0)
x1 − x0(x2 − x0) + b2(x2 − x0)(x2 − x1)
b2 =
f(x2)−f(x0)x2−x0
− f(x1)−f(x0)x1−x0
x2 − x1
18
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Výraz pre b2 potrebujeme upravi´ do poºadovaného tvaru
b2(x2 − x0)(x2 − x1) =(f(x2)− f(x0))(x2 − x0)
x2 − x0− (f(x1)− f(x0))(x2 − x0)
x1 − x0
b2(x2 − x0)(x2 − x1) = f(x2)
=0︷ ︸︸ ︷−f(x1) + f(x1)−f(x0)−
(f(x1)− f(x0))(x2 − x0)
x1 − x0
b2(x2 − x0)(x2 − x1) = f(x2)− f(x1) +(f(x1)− f(x0))(x1 − x0)
x1 − x0−
− (f(x1)− f(x0))(x2 − x0)
x1 − x0
b2(x2 − x0)(x2 − x1) = f(x2)− f(x1) +f(x1)− f(x0)
x1 − x0(x1 − x0 − (x2 − x0))
b2(x2 − x0)(x2 − x1) = f(x2)− f(x1)−f(x1)− f(x0)
x1 − x0(x2 − x1)
b2(x2 − x0) =f(x2)− f(x1)
x2 − x1− f(x1)− f(x0)
x1 − x0
b2 =
f(x2)−f(x1)x2−x1
− f(x1)−f(x0)x1−x0
x2 − x0
19
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Newtonova interpolácia, kvadratický prípad, záver
Dosadíme koe�cienty b0, b1, b2 do f(x) = b0 + b1(x− x0) + b2(x− x0)(x− x1)
f(x) = f(x0) +f(x1)− f(x0)
x1 − x0(x− x0) +
f(x2)−f(x1)x2−x1
− f(x1)−f(x0)x1−x0
x2 − x0(x− x0)(x− x1)
Zavedieme zjednodu²ený zápis: f [xi] ≡ f(xi), f [xj, xi] ≡f(xj)−f(xi)
xj−xi
f(x) = f [x0] + f [x1, x0](x− x0) +f [x2, x1]− f [x1, x0]
x2 − x0(x− x0)(x− x1)
f(x) = f [x0] + f [x1, x0](x− x0) + f [x2, x1, x0](x− x0)(x− x1)
20
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Newtonova interpolácia, polynóm n-tého stup¬a
Pn(x) = b0 + b1(x− x0) + b2(x− x0)(x− x1) + · · ·+ bn(x− x0)(x− x1) . . . (x− xn−1)
b0 = f [x0] ≡ f(x0)
b1 = f [x1, x0] ≡f(x1)− f(x0)
x1 − x0
b2 = f [x2, x1, x0] ≡f [x2, x1]− f [x1, x0]
x2 − x0
b3 = f [x3, x2, x1, x0] ≡f [x3, x2, x1]− f [x2, x1, x0]
x3 − x0
...
bn = f [xn, xn−1, . . . , x2, x1, x0] ≡f [xn, xn−1, . . . , x2, x1]− f [xn−1, xn−2, . . . , x1, x0]
xn − x0
21
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Lagrangeova interpolácia
H©adáme funkciu f(x) ako sú£et n+ 1 polynómov (najviac) n-tého stup¬a.
f(x) = P 0n(x) + P 1
n(x) + · · ·+ Pnn (x)
Polynómy P in(x) pouºijeme v tvare
P in(x) ∼ ci(x− x0)(x− x1) . . . (x− xn) = ci
∏j∈...
(x− xj)
Máme k dispozícii n+1 £lenov (x−xj), pre kaºdý polynóm ich potrebujeme len n. Pre polynómP in vynecháme £len (x− xi).
P in(x) = ci(x− x0)(x− x1) . . . (x− xi−1)(x− xi+1) . . . (x− xn) = ci
n∏j=0j 6=i
(x− xj)
22
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Lagrangeova interpolácia, výpo£et ci
Máme:
f(x) = P 0n(x) + P 1
n(x) + · · ·+ Pnn (x)
P in(x) = ci
n∏j=0j 6=i
(x− xj)
Poºadujeme, aby funkcia f(x) prechádzala bodmi (x0, y0), (x1, y1), . . . , (xn, yn):
f(xk) = yk
Dostaneme:
f(xk) =
n∑i=0
ci
n∏j=0j 6=i
(xk − xj) = yk
f(xk) =
n∑i=0
ci
n∏j=0j 6=i
0 pre k=j︷ ︸︸ ︷(xk − xj) = yk
23
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
f(xk) =
n∑i=0
ci
6=0pre i=k︷ ︸︸ ︷n∏
j=0j 6=i
0 pre k=j︷ ︸︸ ︷(xk − xj) = yk
f(xk) = ck
n∏j=0j 6=k
(xk − xj) = yk
ck =yk
n∏j=0j 6=k
(xk − xj)
ci =yi
n∏j=0j 6=i
(xi − xj)
Dostaneme:
P in(x) =
yin∏
j=0j 6=i
(xi − xj)
n∏j=0j 6=i
(x− xj) =
n∏j=0j 6=i
(x− xj)
n∏j=0j 6=i
(xi − xj)yi
24
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Lagrangeova interpolácia, záver
Polynomiálnu funkcia f(x) prechádzajúcu bodmi (x0, y0), (x1, y1), . . . , (xn, yn) nájdemev tvare:
f(x) =
n∑i=0
n∏j=0j 6=i
(x− xj)
n∏j=0j 6=i
(xi − xj)yi =
n∑i=0
n∏j=0j 6=i
x− xj
xi − xj
yi =
n∑i=0
Li(x)yi =
n∑i=0
Li(x)f(xi)
Kde Li(x) je váhovacia funkcia:
Li(x) =
n∏j=0j 6=i
x− xj
xi − xj
25
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Spline
Interpolácia po £astiach.
Máme body (x0, y0), (x1, y1), . . . , (xn, yn). Interpoláciu h©adáme na jednotlivých intervaloch(x0, x1), (x1, x2), . . . , (xn−1, xn) zvlá²´.
Lineárny spline. Pouºijeme lineárne funkcie na intervaloch (xi, xi+1). Tieto funkciemusia prechádza´ hrani£nými bodmi intervalov (xi, yi), (xi+1, yi+1). Lineárna funkcia nakaºdom intervale má 2 parametre a pre kaºdú funkciu máme 2 podmienky. Jednozna£nérie²enie. Získame spojitú funkciu na celom intervale (x0, xn). Vo vnútorných bodoch(x1, y1), (x2, y2), . . . , (xn−1, yn−1) môºe by´ nespojitá prvá derivácia.
Kvadratický spline. Pouºijeme kvadratické funkcie na intervaloch (xi, xi+1). Tietofunkcie musia prechádza´ hrani£nými bodmi intervalov (xi, yi), (xi+1, yi+1). Kvadratickáfunkcia na kaºdom intervale má 3 parametre a pre kaºdú funkciu máme 2 podmienky.Na získanie jednozna£ného rie²enie potrebujeme ¤al²ie podmienky. Zvy£ajne sa poºadujespojitá prvá derivácia na vnútorných hrani£ných bodoch (n − 1 podmienok). Ako poslednúpodmienku môºeme poºadova´ lineárnu funkciu na prvom intervale. Získame spojitúfunkciu so spojitou prvou deriváciou na celom intervale (x0, xn). Vo vnútorných bodoch(x1, y1), (x2, y2), . . . , (xn−1, yn−1) môºe by´ nespojitá druhá derivácia.
26
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Kubický spline. Ak poºadujeme spojitú druhú deriváciu na celom intervale (x0, xn) môºemepouºi´ kubický spline. Postupujeme podobne ako pri kvadratickom spline. Poºadujeme spojitúprvú a druhú deriváciu na vnútorných hrani£ných bodoch (x1, y1), (x2, y2), . . . , (xn−1, yn−1).
Spline vy²²ieho rádu. Ak by sme potrebovali. . .
27
FYZ-230/00 Algoritmy vedeckotechnických výpo£tov
Záver
• Interpolácia umoº¬uje dopo£íta´ chýbajúce hodnoty. Takto získané hodnoty nemusia
zodpoveda´ skuto£ným hodnotám.
• Pri pouºití polynómu vysokého rádu hrozí �oscilujúca katastrofa� alebo numerická nestabilita.
• Spline sa £asto pouºíva na optické vylep²enie obrázkov nameraných alebo vypo£ítaných dát.Nejedná sa o interpretáciu dát. Spline dokáºe zvidite©ni´ neexistujúce úkazy!
28