Interpolace pomocí splajnu
Interpolace pomocí splajnu Připomenutí U interpolace požadujeme, aby graf aproximující funkce procházel všemi uzlovými body. Interpolační polynom aproximující funkce je polynom Spline (splajn) aproximující funkce je po částech polynom y=s 0 (x) y=s 1 (x) y=p n (x)... y=s n 1 (x)
Interpolace pomocí splajnu Splajn k-tého řádu Splajn k-tého řádu je funkce S, pro kterou platí: S 0 (x) pro x x 0, x 1 ) S 1 (x) pro x x 1, x 2 ) S(x) =. S n 1 (x) pro x x n 1, x n ) na každém intervalu x i, x i+1 ) je S i polynom stupně nanejvýš k S má na intervalu x 0, x n spojité derivace až do řádu k 1 včetně
Interpolace pomocí splajnu Lineární splajn Každé dva sousední body [x i, f i ], [x i+1, f i+1 ] propojíme úsečkou. S i (x) = f i + f i+1 f i x i+1 x i (x x i ), i = 0,..., n 1.
Interpolace pomocí splajnu Má-li f spojitou derivaci druhého řádu na intervalu x 0, x n, pak existuje konstanta C taková, že pro x x 0, x n platí f (x) S(x) < C h 2, kde h je maximální vzdálenost mezi sousedními uzly. Chybu lze učinit pro dostatečný počet uzlů libovolně malou.
Interpolace pomocí splajnu Nejpoužívanější je splajn 3. řádu, tzv. kubický splajn. Kubický splajn Kubický splajn je funkce S(x), která je kubický polynom na každém subintervalu x i, x i+1 ): S i (x) = a i + b i (x x i ) + c i (x x i ) 2 + d i (x x i ) 3, x x i, x i+1 ) a vyhovuje podmínkám S i (x i ) = f (x i ), i = 0,..., n 1, S n 1 (x n ) = f (x n ) S i (x i+1 ) = S i+1 (x i+1 ), i = 0,..., n 2 S i (x i+1 ) = S i+1(x i+1 ), i = 0,..., n 2 S i (x i+1 ) = S i+1(x i+1 ), i = 0,..., n 2.
Interpolace pomocí splajnu Abychom mohli kubický splajn jednoznačně určit, předepisujeme ještě okrajové podmínky. Používané typy okrajových podmínek: a) S (x 0 ) = S (x n ) = 0 b) S (x 0 ) = f 0, S (x n ) = f n c) S (x 0 ) = f 0, S (x n ) = f n d) podmínky typu not-a-knot (S 1 je tentýž kubický polynom jako S 0 a S n 2 je tentýž kubický polynom jako S n 1 tj. S 0 (x 1) = S 1 (x 1) a S n 2 (x n 1) = S n 1 (x n 1))
Interpolace pomocí splajnu Postup pro nalezení kubického splajnu 1. způsob vhodné pro okrajové podmínky typu a) a b): Koeficienty c i, i = 0,..., n najdeme jako řešení soustavy c 0 = f 0 2 ( f1 h 0 c 0 + 2(h 0 + h 1 )c 1 + h 1 c 2 = 3 f ) 0 h 1 h ( 0 f2 h 1 c 1 + 2(h 1 + h 2 )c 2 + h 2 c 3 = 3 f ) 1 h 2 h 1...... ( ) fn 1 h n 2 c n 2 + 2(h n 2 + h n 1 )c n 1 + h n 1 c n = 3 f n 2 h n 1 h n 2 c n = f n 2 h i = x i+1 x i, f i = f i+1 f i. Ostatní koeficienty splajnu dopočítáme podle vzorců: a i = f i, i = 0,..., n 1, b i = f (x i+1) f (x i ) c i+1 + 2c i h i 3 h i, i = 0,..., n 1, d i = c i+1 c i 3h i, i = 0,..., n 1.
Interpolace pomocí splajnu 2. způsob vhodné pro okrajové podmínky typu c): Vyřešíme soustavu pro koeficienty b i, i = 0,..., n: b 0 = f 0 ( ) f h 1 b 0 + 2(h 0 + h 1 )b 1 + h 0 b 2 = 3 h 0 f 1 + h 1 h 0 0 h ( 1 ) f h 2 b 1 + 2(h 1 + h 2 )b 2 + h 1 b 3 = 3 h 1 f 2 + h 2 h 1 1 h 2...... h n 1 b n 2 + 2(h n 2 + h n 1 )b n 1 + h n 2 b n ( ) f = 3 h n 2 f n 1 + h n 1 h n 2 n 2 h n 1 b n = f n h i = x i+1 x i, f i = f i+1 f i. Ostatní koeficienty splajnu dopočítáme podle vzorců: a i = f i, i = 0,..., n 1, c i = 1 ( 3 f ) i 2b i b i+1, i = 0,..., n 1, h i h i d i = 1 ( hi 2 b i + b i+1 2 f ) i, i = 0,..., n 1. h i
Aproximace funkcı metoda nejmens ı ch c tvercu (MNC )
Máme body [x i, y i ], i = 0,..., n, obvykle získané měřením. Známe typ funkční závislosti mezi x a y, např. y = c 0 + c 1 x, obecně y = P m (x) = c 0 ϕ 0 (x) + + c m ϕ m (x), ϕ j, j = 1,..., m, jsou známé funkce. Hledáme hodnoty parametrů c 0,..., c m, pro které je aproximace nejlepší. y y y n y n y 1 y 1 y 0 y 0 x 0 x 1 x n x x 0 x 1 x n x
Voĺıme ty hodnoty koeficientů c 0,..., c m, pro které je kvadratická odchylka ρ 2 (c 0,... c m ) = minimální. (y i P m (x i )) 2 = (y i c 0 ϕ 0 (x i ) c m ϕ m (x i )) 2 y=c 0 +c1 x y=c 0 +c1 x en e1 e0 x... 0 x1 xn x... 0 x1 xn
Aproximace přímkou Máme body [x i, y i ], i = 0,..., n. Hledáme přímku y = P 1 (x) = c 0 + c 1 x, pro kterou je ρ 2 (c 0, c 1 ) = (y i c 0 c 1 x i ) 2 minimální. Normální rovnice pro koeficienty přímky Koeficienty c 0 a c 1 najdeme jako řešení soustavy rovnic c 0 počet bodů {}}{ (n + 1) + c 1 x i = c 0 x i + c 1 xi 2 = y i x i y i
Jsou-li vektory (1, 1,..., 1) }{{} (n+1) krát normální soustava rovnic má jediné řešení. a (x 0, x 1,..., x n ) lineárně nezávislé,
Jiná možnost zápisu soustavy normálních rovnic pro přímku kde Odtud pak Z T Zc = Z T y, 1 x 0 1 x 1 Z =.., c = 1 x n ( c0 c 1 ), y = c = ( Z T Z ) 1 Z T y. y 0 y 1. y n.
Aproximace parabolou Máme body [x i, y i ], i = 0,..., n. Hledáme parabolu y = P 2 (x) = c 0 + c 1 x + c 2 x 2. Normální rovnice pro koeficienty paraboly Koeficienty c 0, c 1 a c 2 najdeme jako řešení soustavy rovnic c 0 počet bodů {}}{ (n + 1) + c 1 x i + c 2 xi 2 = c 0 c 0 x i + c 1 xi 2 + c 2 xi 3 = xi 2 + c 1 xi 3 + c 2 xi 4 = y i x i y i xi 2 y i
Jiná možnost zápisu soustavy normálních rovnic pro parabolu kde Odtud pak Z T Zc = Z T y, 1 x 0 x 2 0 y 0 1 x 1 x1 2 c 0 Z =..., c = c 1 y 1, y = c.. 1 x n xn 2 2 y n c = ( Z T Z ) 1 Z T y.
Aproximace obecně Máme body [x i, y i ], i = 0,..., n. Hledáme funkci y = P m (x) = c 0 ϕ 0 (x) + c 1 ϕ 1 (x) + + c m ϕ m (x), ϕ 0,..., ϕ m jsou známé funkce. Normální rovnice Koeficienty c 0, c 1,..., c m najdeme jako řešení soustavy rovnic c 0 ϕ 2 0 (x i ) + c 1 ϕ 1 (x i )ϕ 0 (x i ) + + c m ϕ m(x i )ϕ 0 (x i ) = c 0 ϕ 0 (x i )ϕ 1 (x i ) + c 1 ϕ 2 1 (x i ) + + c m ϕ m(x i )ϕ 1 (x i ) =...... c 0 ϕ 0 (x i )ϕ m(x i ) + c 1 ϕ 1 (x i )ϕ m(x i ) + + c m ϕ 2 m (x i ) = y i ϕ 0 (x i ) y i ϕ 1 (x i ) y i ϕ m(x i )
Jiná možnost zápisu soustavy normálních rovnic Z T Zc = Z T y, kde ϕ 0 (x 0 ) ϕ 1 (x 0 ) ϕ m (x 0 ) y ϕ 0 (x 1 ) ϕ 1 (x 1 ) ϕ m (x 1 ) c 0 0 Z =..., c = y 1., y =.. c ϕ 0 (x n ) ϕ 1 (x n ) ϕ m (x n ) m y n Odtud pak c = ( Z T Z ) 1 Z T y.
Jsou-li vektory ϕ 0 = (ϕ 0 (x 0 ), ϕ 0 (x 1 ),..., ϕ 0 (x n )), ϕ 1 = (ϕ 1 (x 0 ), ϕ 1 (x 1 ),..., ϕ 1 (x n )),. ϕ m = (ϕ m (x 0 ), ϕ m (x 1 ),..., ϕ m (x n )) lineárně nezávislé, normální soustava rovnic má jediné řešení. Matice soustavy Z T Z je v tomto případě symetrická pozitivně definitní.
MNČ nelineární model Nelineární model může být např. y = ae bx, hledáme a a b, y = a sin(kx + b) + c, hledáme a, k, b, c, y = a b+cx, hledáme a, b, c. Obecně y = f (x, c 0,..., c m ), hledáme c 0,..., c m tak, aby ρ 2 (c 0,..., c m ) = m (y i f (x i, c 0,..., c m )) 2 bylo minimální. V některých případech lze model linearizovat. Obecně hledáme minimum funkce více proměnných na to existují speciální metody. Často se používá Levenberg-Marquardtův algoritmus.
Aproximace exponenciálou Máme body [x i, y i ], i = 0,..., n. Hledáme exponenciální funkci Zlogaritmujeme: y = ae bx. ln y = ln a + bx a dál postupujeme jako při hledání přímky.
Postup při hledání exponenciály Označíme c 0 = ln a, c 1 = b. Koeficienty c 0 a c 1 najdeme jako řešení soustavy c 0 počet bodů {}}{ (n + 1) + c 1 x i = c 0 x i + c 1 xi 2 = ln y i x i ln y i. Koeficienty exponenciály jsou pak a = e c 0, b = c 1.
Pro takto nalezené a, b však ρ 2 (a, b) = ( ) 2 y i ae bx i nemusí nabývat nejmenší možné hodnoty!