MN11: Różnice pomiędzy wersjami
mNie podano opisu zmian |
|||
(Nie pokazano 10 pośrednich wersji utworzonych przez tego samego użytkownika) | |||
Linia 29: | Linia 29: | ||
własności, które teraz określimy. | własności, które teraz określimy. | ||
Niech dany będzie przedział skończony <math> | Niech dany będzie przedział skończony <math>[a,b]</math> i węzły | ||
<center><math> | <center><math>a \,=\, x_0 \,<\, x_1 \,<\, \cdots \,<\, x_n \,=\, b, | ||
</math></center> | </math></center> | ||
przy czym <math> | przy czym <math>n\ge 1</math>. | ||
{{definicja||| | {{definicja||| | ||
Funkcję <math> | Funkcję <math>s:R\to R</math> nazywamy <strong>funkcją sklejaną rzędu <math>r</math></strong> (<math>r\ge 1</math>) odpowiadającą węzłom <math>x_j</math>, <math>0\le j\le n</math>, jeśli spełnione są następujące | ||
dwa warunki: | dwa warunki: | ||
; (i) | ; (i) | ||
: <math> | : <math>s</math> jest wielomianem stopnia co najwyżej <math>2r-1</math> na każdym | ||
z przedziałów <math> | z przedziałów <math>[x_{j-1},x_j]</math>, tzn. | ||
<math> | <math>s_{|[x_{j-1},x_j]}\in\Pi_{2r-1}</math>, <math>1\le j\le n</math>, | ||
; (ii) | ; (ii) | ||
: <math> | : <math>s</math> jest <math>(2r-2)</math>-krotnie różniczkowalna w sposób | ||
ciągły na całej prostej, tzn. <math> | ciągły na całej prostej, tzn. <math>s\in C^{(2r-2)}(R)</math>. | ||
Jeśli ponadto | Jeśli ponadto | ||
; (iii) | ; (iii) | ||
: <math> | : <math>s</math> jest wielomianem stopnia co najwyżej <math>r-1</math> poza | ||
<math> | <math>(a,b)</math>, tzn. <math>s_{|(-\infty,a]},s_{|[b,+\infty)}\in\Pi_{r-1}</math>, | ||
to <math> | to <math>s</math> jest naturalną funkcją sklejaną. | ||
}} | }} | ||
Klasę naturalnych funkcji sklejanych rzędu <math> | Klasę naturalnych funkcji sklejanych rzędu <math>r</math> opartych na | ||
węzłach <math> | węzłach <math>x_j</math> będziemy oznaczać przez | ||
<math> | <math>{\cal S}_r(x_0,\ldots,x_n)</math>, albo po prostu <math>{\cal S}_r</math>, | ||
jeśli węzły są ustalone. | jeśli węzły są ustalone. | ||
Na przykład funkcją sklejaną rzędu pierwszego (<math> | Na przykład funkcją sklejaną rzędu pierwszego (<math>r=1</math>) | ||
jest funkcja ciągła i liniowa na poszczególnych | jest funkcja ciągła i liniowa na poszczególnych | ||
przedziałach <math> | przedziałach <math>[x_{j-1},x_j]</math>. Jest ona naturalna, gdy poza | ||
<math> | <math>(a,b)</math> jest funkcją stała. Tego typu funkcje nazywamy | ||
<strong>liniowymi funkcjami sklejanymi</strong>. | <strong>liniowymi funkcjami sklejanymi</strong>. | ||
Najważniejszymi z praktycznego punktu widzenia są jednak | Najważniejszymi z praktycznego punktu widzenia są jednak | ||
funkcje sklejane rzędu drugiego odpowiadające <math> | funkcje sklejane rzędu drugiego odpowiadające <math>r=2</math>. Są | ||
to funkcje, które są na <math> | to funkcje, które są na <math>R</math> dwa razy różniczkowalne w | ||
sposób ciągły, a na każdym z podprzedziałów są | sposób ciągły, a na każdym z podprzedziałów są | ||
wielomianami stopnia co najwyżej trzeciego. W tym przypadku | wielomianami stopnia co najwyżej trzeciego. W tym przypadku | ||
mówimy o <strong>kubicznych funkcjach sklejanych</strong>. Funkcja | mówimy o <strong>kubicznych funkcjach sklejanych</strong>. Funkcja | ||
sklejana kubiczna <math> | sklejana kubiczna <math>s</math> jest naturalna, gdy poza <math>(a,b)</math> jest | ||
wielomianem liniowym, a więc <math> | wielomianem liniowym, a więc <math>s''(a) = s''(b) = 0</math>. | ||
==Interpolacja i gładkość== | ==Interpolacja i gładkość== | ||
Linia 84: | Linia 84: | ||
do dowodu dalszych twierdzeń. | do dowodu dalszych twierdzeń. | ||
Niech <math> | Niech <math>W^r(a,b)</math> będzie klasą funkcji <math>f:[a,b]\to R</math> takich, | ||
że <math> | że <math>f</math> jest <math>(r-1)</math> razy różniczkowalna na <math>[a,b]</math> w sposób | ||
ciągły oraz <math> | ciągły oraz <math>f^{(r)}(x)</math> istnieje prawie wszędzie na <math>[a,b]</math> | ||
i jest całkowalna z kwadratem, tzn. | i jest całkowalna z kwadratem, tzn. | ||
<center><math>\ | <center><math>\begin{align} W^r(a,b) &= \{\,f\in C^{(r-1)}([a,b]):\, f^{(r)}(x) | ||
\mbox{ istnieje p.w. na } [a,b] \\ | \mbox{ istnieje p.w. na } [a,b] \\ | ||
&& \qquad\qquad\qquad\qquad \mbox{ oraz } | && \qquad\qquad\qquad\qquad \mbox{ oraz } | ||
f^{(r)}\in{\cal L}_2(a,b)\,\}. | f^{(r)}\in{\cal L}_2(a,b)\,\}. | ||
\ | \end{align}</math></center> | ||
Oczywiście każda funkcja sklejana rzędu <math> | Oczywiście każda funkcja sklejana rzędu <math>r</math> (niekoniecznie | ||
naturalna) należy do <math> | naturalna) należy do <math>W^r(a,b)</math>. | ||
{{lemat||| | {{lemat||| | ||
Niech <math> | Niech <math>f\in W^r(a,b)</math> będzie funkcją | ||
zerującą się w węzłach, tzn. | zerującą się w węzłach, tzn. | ||
<center><math> | <center><math>f(x_j)\,=\,0,\qquad 0\le j\le n</math></center> | ||
</math></center> | |||
Wtedy dla dowolnej naturalnej funkcji sklejanej <math> | Wtedy dla dowolnej naturalnej funkcji sklejanej <math>s\in {\cal S}_r</math> | ||
mamy | mamy | ||
<center><math> | <center><math>\int_a^b f^{(r)}(x)s^{(r)}(x)\,dx\,=\,0. | ||
</math></center> | </math></center> | ||
Linia 115: | Linia 114: | ||
{{dowod||| | {{dowod||| | ||
Dla <math> | Dla <math>r=1</math> funkcja <math>s'</math> jest przedziałami stała. | ||
Oznaczając przez <math> | Oznaczając przez <math>a_j</math> jej wartość na <math>[x_{j-1},x_j]</math> dostajemy | ||
<center><math>\ | <center><math>\begin{align} \int_a^b f'(x)s'(x)\,dx &= | ||
\sum_{j=1}^n\int_{t_{j-1}}^{t_j} f'(x)a_j\,dx \\ | \sum_{j=1}^n\int_{t_{j-1}}^{t_j} f'(x)a_j\,dx \\ | ||
&= \sum_{j=1}^n a_j(f(x_j)-f(x_{j-1}))\,=\,0, | &= \sum_{j=1}^n a_j(f(x_j)-f(x_{j-1}))\,=\,0, | ||
\ | \end{align}</math></center> | ||
ponieważ <math> | ponieważ <math>f</math> zeruje się w <math>t_j</math>. | ||
Rozpatrzmy teraz przypadek <math> | Rozpatrzmy teraz przypadek <math>r\ge 2</math>. Ponieważ | ||
<center><math> | <center><math>(f^{(r-1)}s^{(r)})'\,=\,f^{(r)}s^{(r)}\,+\,f^{(r-1)}s^{(r+1)}, | ||
</math></center> | </math></center> | ||
to | to | ||
<center><math> | <center><math>\int_a^b f^{(r)}(x)s^{(r)}(x)\,dx\,=\,f^{(r-1)}(x)s^{(r)}(x) | ||
\Big |_a^b \,-\,\int_a^b f^{(r-1)}(x)s^{(r+1)}(x)\,dx | \Big |_a^b \,-\,\int_a^b f^{(r-1)}(x)s^{(r+1)}(x)\,dx</math></center> | ||
</math></center> | |||
Wobec tego, że <math> | Wobec tego, że <math>s</math> jest poza przedziałem <math>(a,b)</math> wielomianem stopnia | ||
co najwyżej <math> | co najwyżej <math>r-1</math> oraz <math>s^{(r)}</math> jest ciągła na <math>R</math>, mamy | ||
<math> | <math>s^{(r)}(a)=0=s^{(r)}(b)</math>, a stąd | ||
<center><math> | <center><math>f^{(r-1)}(x)s^{(r)}(x)\Big |_a^b\,=\,0. | ||
</math></center> | </math></center> | ||
Postępując podobnie, tzn. całkując przez części <math> | Postępując podobnie, tzn. całkując przez części <math>r-1</math> razy, | ||
otrzymujemy w końcu | otrzymujemy w końcu | ||
<center><math> | <center><math>\int_a^b f^{(r)}(x)s^{(r)}(x)\,dx\,=\,(-1)^{r-1} | ||
\int_a^b f'(x)s^{(2r-1)}(x)\,dx | \int_a^b f'(x)s^{(2r-1)}(x)\,dx</math></center> | ||
</math></center> | |||
Funkcja <math> | Funkcja <math>s^{(2r-1)}</math> jest przedziałami stała, a więc możemy | ||
teraz zastosować ten sam argument jak dla <math> | teraz zastosować ten sam argument jak dla <math>r=1</math>, aby pokazać, | ||
że ostatnia całka jest równa zeru.}} | że ostatnia całka jest równa zeru.}} | ||
Linia 160: | Linia 157: | ||
{{twierdzenie|O istnieniu i jednoznaczności naturalnego splajnu interpolacyjnego|O istnieniu i jednoznaczności naturalnego splajnu interpolacyjnego| | {{twierdzenie|O istnieniu i jednoznaczności naturalnego splajnu interpolacyjnego|O istnieniu i jednoznaczności naturalnego splajnu interpolacyjnego| | ||
Jeśli <math> | Jeśli <math>n+1\ge r</math>, to dla dowolnej funkcji | ||
<math> | <math>f:[a,b]\to R</math> istnieje dokładnie jedna naturalna funkcja sklejana | ||
<math> | <math>s_f\in {\cal S}_r</math> interpolująca <math>f</math> w węzłach <math>x_j</math>, tzn. taka, | ||
że | że | ||
<center><math> | <center><math>s_f(x_j)\,=\,f(x_j),\qquad 0\le j\le n</math></center> | ||
</math></center> | |||
}} | }} | ||
Linia 173: | Linia 169: | ||
Pokażemy najpierw, że jedyną naturalną | Pokażemy najpierw, że jedyną naturalną | ||
funkcją sklejaną interpolującą dane zerowe jest funkcja zerowa. | funkcją sklejaną interpolującą dane zerowe jest funkcja zerowa. | ||
Rzeczywiście, jeśli <math> | Rzeczywiście, jeśli <math>s(x_j)=0</math> dla <math>0\le j\le n</math>, to podstawiając | ||
w poprzednim lemacie <math> | w poprzednim lemacie <math>f = s</math>, otrzymujemy | ||
<center><math> | <center><math>\int_a^b \Big(s^{(r)}(x)\Big)^2\,dx\,=\,0</math></center> | ||
</math></center> | |||
Stąd <math> | Stąd <math>s^{(r)}</math> jest funkcją zerową, a więc <math>s</math> jest | ||
wielomianem stopnia co najwyżej <math> | wielomianem stopnia co najwyżej <math>r-1</math> zerującym się w co | ||
najmniej <math> | najmniej <math>n+1</math> punktach <math>x_j</math>. Wobec tego, że <math>n+1>r-1</math>, | ||
otrzymujemy <math> | otrzymujemy <math>s\equiv 0</math>. | ||
Zauważmy teraz, że problem znalezienia naturalnej funkcji sklejanej | Zauważmy teraz, że problem znalezienia naturalnej funkcji sklejanej | ||
<math> | <math>s</math> interpolującej <math>f</math> można sprowadzić do rozwiązania układu równań liniowych z macierzą kwadratową. Na każdym przedziale <math>[x_{i-1},x_i]</math>, | ||
<math> | <math>1\le i\le n</math>, jest ona postaci | ||
<center><math> | <center><math>s(x)\,=\,w_i(x)\,=\,\sum_{j=0}^{2r-1} a_{i,j}x^j, | ||
</math></center> | </math></center> | ||
dla pewnych współczynników <math> | dla pewnych współczynników <math>a_{i,j}\in R</math>, a na | ||
<math> | <math>(-\infty,a]</math> i <math>[b,\infty)</math> mamy odpowiednio | ||
<center><math> | <center><math>s(x)\,=\,w_0(x)\,=\,\sum_{j=0}^{r-1} a_{0,j}x^j | ||
</math></center> | </math></center> | ||
i | i | ||
<center><math> | <center><math>s(x)\,=\,w_{n+1}(x)\,=\,\sum_{j=0}^{r-1} a_{n+1,j}x^j. | ||
</math></center> | </math></center> | ||
Aby wyznaczyć <math> | Aby wyznaczyć <math>s</math>, musimy więc znaleźć ogółem <math>2r(n+1)</math> | ||
współczynników <math> | współczynników <math>a_{i,j}</math>, przy czym są one związane | ||
<math> | <math>(2r-1)(n+1)</math> warunkami jednorodnymi wynikającymi z gładkości, | ||
<center><math> | <center><math>w_i^{(k)}(x_i)\,=\,w_{i+1}^{(k)}(x_i) | ||
</math></center> | </math></center> | ||
dla <math> | dla <math>0\le i\le n</math> i <math>0\le k\le 2r-2</math>, oraz <math>n+1</math> | ||
niejednorodnymi warunkami interpolacyjnymi, | niejednorodnymi warunkami interpolacyjnymi, | ||
<center><math> | <center><math>w_i(x_i)\,=\,f(x_i) | ||
</math></center> | </math></center> | ||
dla <math> | dla <math>0\le i\le n</math>. Otrzymujemy więc układ <math>2r(n+1)</math> | ||
równań liniowych ze względu na <math> | równań liniowych ze względu na <math>2r(n+1)</math> niewiadomych | ||
<math> | <math>a_{i,j}</math>. | ||
Naturalna funkcja sklejana interpolująca <math> | Naturalna funkcja sklejana interpolująca <math>f</math> jest wyznaczona jednoznacznie wtedy i tylko wtedy, gdy układ ten ma jednoznaczne rozwiązanie. To zaś zachodzi, gdy zero jest jedynym rozwiązaniem układu jednorodnego. Rzeczywiście, układ jednorodny odpowiada zerowym warunkom interpolacyjnym, przy których, jak pokazaliśmy wcześniej, zerowa funkcja sklejana (której odpowiada <math>a_{i,j}=0</math>, <math>\forall i,j</math>) jest jedynym rozwiązaniem zadania interpolacyjnego.}} | ||
Naturalnych funkcji sklejanych możemy więc używać do | Naturalnych funkcji sklejanych możemy więc używać do | ||
Linia 228: | Linia 223: | ||
{{twierdzenie|O ekstremalnej własności splajnów naturalnych|O ekstremalnej własności splajnów naturalnych| | {{twierdzenie|O ekstremalnej własności splajnów naturalnych|O ekstremalnej własności splajnów naturalnych| | ||
Niech <math> | Niech <math>f\in W^r(a,b)</math> i niech <math>s_f\in {\cal S}_r</math> | ||
będzie naturalną funkcją sklejaną rzędu <math> | będzie naturalną funkcją sklejaną rzędu <math>r</math> interpolującą | ||
<math> | <math>f</math> w węzłach <math>x_j</math>, <math>0\le j\le n</math>. Wtedy | ||
<center><math> | <center><math> | ||
\int_a^b \Big( f^{(r)}(x)\Big)^2\,dx\,\ge\, | \int_a^b \Big( f^{(r)}(x)\Big)^2\,dx\,\ge\, | ||
\int_a^b \Big(s_f^{(r)}(x)\Big)^2\,dx. | \int_a^b \Big(s_f^{(r)}(x)\Big)^2\,dx. | ||
Linia 240: | Linia 235: | ||
{{dowod||| | {{dowod||| | ||
Jeśli przedstawimy <math> | Jeśli przedstawimy <math>f</math> w postaci | ||
<math> | <math>f=s_f+(f-s_f)</math>, to | ||
<center><math>\ | <center><math>\begin{align} \int_a^b\Big(f^{(r)}(x)\Big)^2\,dx | ||
&= \int_a^b\Big(s_f^{(r)}(x)\Big)^2\,dx\,+\, | &= \int_a^b\Big(s_f^{(r)}(x)\Big)^2\,dx\,+\, | ||
\int_a^b\Big((f-s_f)^{(r)}(x)\Big)^2\,dx \\ | \int_a^b\Big((f-s_f)^{(r)}(x)\Big)^2\,dx \\ | ||
& & \qquad\qquad + 2\,\int_a^b s_f^{(r)}(x)(f-s_f)^{(r)}(x)\,dx. | & & \qquad\qquad + 2\,\int_a^b s_f^{(r)}(x)(f-s_f)^{(r)}(x)\,dx. | ||
\ | \end{align}</math></center> | ||
Funkcja <math> | Funkcja <math>f-s_f</math> jest w klasie <math>W^r(a,b)</math> i zeruje się w węzłach | ||
<math> | <math>x_j</math>, <math>0\le j\le n</math>. Z lematu wynika więc, że | ||
<math> | <math>\int_a^b s_f^{(r)}(x)(f-s_f)^{(r)}(x)dx=0</math>, a stąd wynika teza.}} | ||
Wartość całki <math> | Wartość całki <math>\int_a^b(f^{(r)}(x))^2 dx</math> może być w | ||
ogólności uważana za miarę gładkości funkcji. Dowiedzioną nierówność możemy więc zinterpretować w następujący sposób. Naturalna funkcja sklejana jest w | ogólności uważana za miarę gładkości funkcji. Dowiedzioną nierówność możemy więc zinterpretować w następujący sposób. Naturalna funkcja sklejana jest w | ||
klasie <math> | klasie <math>W^r(a,b)</math> najgładszą funkcją spełniającą dane | ||
warunki interpolacyjne w wybranych węzłach <math> | warunki interpolacyjne w wybranych węzłach <math>x_j</math>. | ||
Jak już wspomnieliśmy, najczęściej używanymi są kubiczne | Jak już wspomnieliśmy, najczęściej używanymi są kubiczne | ||
funkcje sklejane. Dlatego rozpatrzymy je oddzielnie. | funkcje sklejane. Dlatego rozpatrzymy je oddzielnie. | ||
==Kubiczne funkcje sklejane== | ==Kubiczne funkcje sklejane== | ||
Jeśli zdecydowaliśmy się na użycie kubicznych funkcji | Jeśli zdecydowaliśmy się na użycie kubicznych funkcji | ||
sklejanych, powstaje problem wyznaczenia <math> | sklejanych, powstaje problem wyznaczenia <math>s_f\in{\cal S}_2</math> | ||
interpolującej daną funkcję <math> | interpolującej daną funkcję <math>f</math>, tzn. takiej, że | ||
<math> | <math>s_f(x_i)=f(x_i)</math> dla <math>0\le i\le n</math>. W tym celu, na każdym | ||
przedziale <math> | przedziale <math>[x_i,x_{i+1}]</math> przedstawimy <math>s_f</math> w postaci jej | ||
rozwinięcia w szereg Taylora w punkcie <math> | rozwinięcia w szereg Taylora w punkcie <math>x_i</math>, | ||
<center><math> | <center><math>s_f(x)\,=\,w_i(x)\,=\,a_i+b_i(x-x_i)+ | ||
c_i\frac{(x-x_i)^2}2+d_i\frac{(x-x_i)^3}6 | c_i\frac{(x-x_i)^2}2+d_i\frac{(x-x_i)^3}6</math>,</center> | ||
</math></center> | |||
i podamy algorytm obliczania <math> | i podamy algorytm obliczania <math>a_i,b_i,c_i,d_i</math> | ||
dla <math> | dla <math>0\le i\le n-1</math>. | ||
Warunki brzegowe i warunki ciągłości | Warunki brzegowe i warunki ciągłości | ||
dla <math> | dla <math>s_f''</math> dają nam <math>w_0''(x_0)=0=w_{n-1}''(x_n)</math> oraz | ||
<math> | <math>w_i''(x_{i+1})=w_{i+1}''(x_{i+1})</math>, czyli | ||
<center><math>\ | <center><math>\begin{align} c_0 &= 0, \\ | ||
c_i+d_ih_i &= c_{i+1}, \qquad 0\le i\le n-2, \\ | c_i+d_ih_i &= c_{i+1}, \qquad 0\le i\le n-2, \\ | ||
c_{n-1}+d_{n-1}h_{n-1} &= 0, | c_{n-1}+d_{n-1}h_{n-1} &= 0, | ||
\ | \end{align}</math></center> | ||
gdzie <math> | gdzie <math>h_i=x_{i+1}-x_i</math>. Stąd, przyjmując dodatkowo | ||
<math> | <math>c_n=0</math>, otrzymujemy | ||
<center><math> | <center><math> | ||
d_i\,=\,\frac{c_{i+1}-c_i}{h_i},\qquad 1\le i\le n-1 | d_i\,=\,\frac{c_{i+1}-c_i}{h_i},\qquad 1\le i\le n-1</math></center> | ||
</math></center> | |||
Z warunków ciągłości dla <math> | Z warunków ciągłości dla <math>s_f'</math> dostajemy z kolei | ||
<center><math> | <center><math>b_i+c_ih_i+d_i\frac{h_i^2}{2}\,=\,b_{i+1}, | ||
\qquad 0\le i\le n-2 | \qquad 0\le i\le n-2</math>,</center> | ||
</math></center> | |||
oraz | oraz | ||
<center><math> | <center><math> | ||
b_{i+1}\,=\,b_i+h_i\frac{c_{i+1}+c_i}{2}, | b_{i+1}\,=\,b_i+h_i\frac{c_{i+1}+c_i}{2}, | ||
\qquad 0\le i\le n-2. | \qquad 0\le i\le n-2. | ||
</math></center> | </math></center> | ||
Warunki ciągłości <math> | Warunki ciągłości <math>s_f</math> dają w końcu | ||
<center><math> | <center><math> | ||
a_i+b_ih_i+c_i\frac{h_i^2}{2}+d_i\frac{h_i^3}{6}\,=\,a_{i+1}, | a_i+b_ih_i+c_i\frac{h_i^2}{2}+d_i\frac{h_i^3}{6}\,=\,a_{i+1}, | ||
\qquad 0\le i\le n-2. | \qquad 0\le i\le n-2. | ||
</math></center> | </math></center> | ||
Powyższe równania definiują nam na odcinku <math> | Powyższe równania definiują nam na odcinku <math>[a,b]</math> naturalną kubiczną funkcję | ||
sklejaną. Ponieważ poszukiwana funkcja sklejana <math> | sklejaną. Ponieważ poszukiwana funkcja sklejana <math>s_f</math> ma interpolować <math>f</math>, mamy dodatkowych <math>n+1</math> warunków interpolacyjnych <math>w_i(x_i)=f(x_i)</math>, <math>0\le i\le n-1</math>, | ||
oraz <math> | oraz <math>w_{n-1}(x_n)=f(x_n)</math>, z których | ||
<center><math> | <center><math> | ||
a_i\,=\,f(x_i), \qquad 0\le i\le n-1 | a_i\,=\,f(x_i), \qquad 0\le i\le n-1</math></center> | ||
</math></center> | |||
Teraz możemy warunki ciągłości przepisać jako | Teraz możemy warunki ciągłości przepisać jako | ||
<center><math> | <center><math>f(x_{i+1})\,=\,f(x_i)+b_ih_i+c_ih_i^2+d_i\frac{h_i^3}{6}</math>,</center> | ||
</math></center> | |||
przy czym wzór ten zachodzi również dla <math> | przy czym wzór ten zachodzi również dla <math>i=n-1</math>. | ||
Po wyrugowaniu <math> | Po wyrugowaniu <math>b_i</math> i podstawieniu <math>d_i</math>, | ||
mamy | mamy | ||
<center><math> | <center><math> | ||
b_i\,=\,f(x_i,x_{i+1})+h_i\frac{c_{i+1}+2c_i}{6}, \qquad 0\le i\le n-1, | b_i\,=\,f(x_i,x_{i+1})+h_i\frac{c_{i+1}+2c_i}{6}, \qquad 0\le i\le n-1, | ||
</math></center> | </math></center> | ||
gdzie <math> | gdzie <math>f(x_i,x_{i+1})</math> jest odpowiednią różnicą | ||
dzieloną. Możemy teraz powyższe wyrażenie na <math> | dzieloną. Możemy teraz powyższe wyrażenie na <math>b_i</math> | ||
podstawić, aby otrzymać | podstawić, aby otrzymać | ||
<center><math> | <center><math>c_i\frac{h_i}{6}+c_{i+1}\frac{h_i+h_{i+1}}{3}+c_{i+1}\frac{h_{i+1}}{6} | ||
\,=\,f(x_{i+1},x_{i+2})-f(x_i,x_{i+1}). | \,=\,f(x_{i+1},x_{i+2})-f(x_i,x_{i+1}). | ||
</math></center> | </math></center> | ||
Linia 344: | Linia 334: | ||
Wprowadzając oznaczenie | Wprowadzając oznaczenie | ||
<center><math> | <center><math> | ||
c_i^*\,=\,\frac{c_i}{6}, | c_i^*\,=\,\frac{c_i}{6}, | ||
</math></center> | </math></center> | ||
Linia 350: | Linia 340: | ||
możemy to równanie przepisać jako | możemy to równanie przepisać jako | ||
<center><math> | <center><math>\frac{h_i}{h_i+h_{i+1}}c_i^*\,+\,2\,c_{i+1}^*\,+\, | ||
\frac{h_{i+1}}{h_i+h_{i+1}}c_{i+2}^*\,=\, | \frac{h_{i+1}}{h_i+h_{i+1}}c_{i+2}^*\,=\, | ||
f(x_i,x_{i+1},x_{i+2}), | f(x_i,x_{i+1},x_{i+2}), | ||
</math></center> | </math></center> | ||
<math> | <math>0\le i\le n-2</math>, albo w postaci macierzowej | ||
<center><math> | <center><math> | ||
\left(\begin{array} {cccccc} | \left(\begin{array} {cccccc} | ||
2 & w_1 \\ | 2 & w_1 \\ | ||
Linia 371: | Linia 361: | ||
\left(\begin{array} {c} | \left(\begin{array} {c} | ||
v_1\\ v_2\\ v_3\\ \vdots\\ v_{n-2}\\ v_{n-1} | v_1\\ v_2\\ v_3\\ \vdots\\ v_{n-2}\\ v_{n-1} | ||
\end{array} \right) | \end{array} \right)</math>,</center> | ||
</math></center> | |||
gdzie | gdzie | ||
<center><math>\ | <center><math>\begin{align} && u_i\,=\,\frac{h_{i-1}}{h_{i-1}+h_i},\qquad | ||
w_i\,=\,\frac{h_i}{h_{i-1}+h_i}, \\ | w_i\,=\,\frac{h_i}{h_{i-1}+h_i}, \\ | ||
&& v_i\,=\,f(x_{i-1},x_i,x_{i+1}). | && v_i\,=\,f(x_{i-1},x_i,x_{i+1}). | ||
\ | \end{align}</math></center> | ||
Ostatecznie, aby znaleźć współczynniki <math> | Ostatecznie, aby znaleźć współczynniki <math>a_i,b_i,c_i,d_i</math> | ||
należy najpierw rozwiązać układ równań liniowych, | należy najpierw rozwiązać układ równań liniowych, | ||
a potem zastosować wzory definiujące pozostałe współczynniki. | a potem zastosować wzory definiujące pozostałe współczynniki. | ||
Zauważmy, że macierz układu równań liniowych jest trójdiagonalna i ma dominującą przekątną. Układ można więc rozwiązać kosztem proporcjonalnym do wymiaru <math> | Zauważmy, że macierz układu równań liniowych jest trójdiagonalna i ma dominującą przekątną. Układ można więc rozwiązać kosztem proporcjonalnym do wymiaru <math>n</math> używając [[MN08#Macierze trójdiagonalne|algorytmu przeganiania]]. Koszt znalezienia wszystkich współczynników kubicznej funkcji sklejanej interpolującej <math>f</math> jest więc też proporcjonalny do <math>n</math>. | ||
MATLAB i Octave mają wbudowaną funkcję wyznaczającą naturalny kubiczny splajn interpolujący zadane wartości: | MATLAB i Octave mają wbudowaną funkcję wyznaczającą naturalny kubiczny splajn interpolujący zadane wartości: | ||
Linia 392: | Linia 381: | ||
</pre></div> | </pre></div> | ||
Aby wyznaczyć wartości takiego splajnu w zadanych punktach <math> | Aby wyznaczyć wartości takiego splajnu w zadanych punktach <math>X</math>, także musimy użyć specjalnej funkcji, | ||
<div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>Y = ppval(s,X); | <div style="margin: 1em; padding:1em; color: #006; background-color:#fcfcfc;"><pre>Y = ppval(s,X); | ||
Linia 398: | Linia 387: | ||
Na końcu oszacujemy jeszcze błąd interpolacji naturalnymi | Na końcu oszacujemy jeszcze błąd interpolacji naturalnymi | ||
kubicznymi funkcjami sklejanymi na przedziale <math> | kubicznymi funkcjami sklejanymi na przedziale <math>[a,b]</math>. | ||
Będziemy zakładać, że <math> | Będziemy zakładać, że <math>f</math> jest dwa razy | ||
różniczkowalna w sposób ciągły. | różniczkowalna w sposób ciągły. | ||
{{twierdzenie|O błędzie interpolacji splajnem kubicznym|O błędzie interpolacji splajnem kubicznym| | {{twierdzenie|O błędzie interpolacji splajnem kubicznym|O błędzie interpolacji splajnem kubicznym| | ||
Jeśli <math> | Jeśli <math>f\in F^1_M([a,b])</math> to | ||
<center><math> | <center><math>\|f-s_f\|_{C([a,b])}\,\le\,5\,M\, | ||
\max_{1\le i\le n}(x_i-x_{i-1})^2 | \max_{1\le i\le n}(x_i-x_{i-1})^2</math></center> | ||
</math></center> | |||
W szczególności, dla podziału równomiernego | W szczególności, dla podziału równomiernego | ||
<math> | <math>x_i=a+i\frac{b-a}{n}</math>, <math>0\le i\le n</math>, mamy | ||
<center><math> | <center><math>\|f-s_f\|_{ C([a,b])}\,\le\, | ||
5\,M\,\Big(\frac{b-a}n\Big)^2. | 5\,M\,\Big(\frac{b-a}n\Big)^2. | ||
</math></center> | </math></center> | ||
Linia 421: | Linia 409: | ||
{{dowod||| | {{dowod||| | ||
Wykorzystamy obliczoną wcześniej | Wykorzystamy obliczoną wcześniej | ||
postać interpolującej funkcji sklejanej <math> | postać interpolującej funkcji sklejanej <math>s_f</math>. | ||
Dla <math> | Dla <math>x\in [x_i,x_{i+1}]</math> mamy | ||
<center><math>\ | <center><math>\begin{align} w_i(x) &= f(x_i)\,+\,\left(\frac{f(x_{i+1})-f(x_i)}{h_i} -h_i(c_{i+1}^*+2c_i^*)\right)(x-x_i) \\ &&\qquad\qquad \,+\, 3c_i^*(x-x_i)^2\,+\,\frac{c_{i+1}^*-c_i^*}{h_i}(x-x_i)^3. | ||
\ | \end{align}</math></center> | ||
Z rozwinięcia <math> | Z rozwinięcia <math>f</math> w szereg Taylora w punkcie <math>x_i</math> dostajemy | ||
<math> | <math>f(x)=f(x_i)+f'(x_i)(x-x_i)+f''(\xi_1)(x-x_i)^2/2</math> oraz | ||
<math> | <math>(f(x_{i+1})-f(x_i))/h_i=f'(x_i)+h_if''(\xi_2)/2</math>. Stąd | ||
<center><math>\ | <center><math>\begin{align} f(x)-s_f(x) \,=\, f(x)-w_i(x) \\ | ||
&= \frac{f''(\xi_1)}2(x-x_i)^2-\left(\frac{f''(\xi_2)}2 | &= \frac{f''(\xi_1)}2(x-x_i)^2-\left(\frac{f''(\xi_2)}2 | ||
-(c_{i+1}^*+2c_i^*)\right)h_i(x-x_i) \\ | -(c_{i+1}^*+2c_i^*)\right)h_i(x-x_i) \\ | ||
& & \qquad\qquad\qquad -3c_i^*(x-x_i)^2 | & & \qquad\qquad\qquad -3c_i^*(x-x_i)^2 | ||
-\frac{c_{i+1}^*-c_i^*}{h_i}(x-x_i)^3, | -\frac{c_{i+1}^*-c_i^*}{h_i}(x-x_i)^3, | ||
\ | \end{align}</math></center> | ||
oraz | oraz | ||
<center><math>\ | <center><math>\begin{align} | ||
|f(x)-s_f(x)| &\le &(M+2|c_{i+1}^*|+6|c_i^*|)h_i^2 \\ | |f(x)-s_f(x)| &\le &(M+2|c_{i+1}^*|+6|c_i^*|)h_i^2 \\ | ||
&= (M+8\max_{1\le i\le n-1}|c_i^*|)h_i^2. | &= (M+8\max_{1\le i\le n-1}|c_i^*|)h_i^2. | ||
\ | \end{align}</math></center> | ||
Niech teraz <math> | Niech teraz <math>\max_{1\le i\le n-1}|c_i^*|=|c_s^*|</math>. | ||
Z postaci układu otrzymujemy | Z postaci układu otrzymujemy | ||
<center><math>\ | <center><math>\begin{align} |c_s^*| &= 2|c_s^*|-|c_s^*|(u_s+w_s) \,\le\, | ||
|u_sc_{s-1}^*+2c_s^*+w_sc_{s+1}| \\ | |u_sc_{s-1}^*+2c_s^*+w_sc_{s+1}| \\ | ||
&= |f(x_{s-1},x_s,x_{s+1})|\,\le\, | &= |f(x_{s-1},x_s,x_{s+1})|\,\le\, | ||
\Big|\frac{f''(\xi_3)}2\Big|\,\le\,\frac 12 M, | \Big|\frac{f''(\xi_3)}2\Big|\,\le\,\frac 12 M, | ||
\ | \end{align}</math></center> | ||
a stąd | a stąd | ||
<center><math> | <center><math>|f(x)-s_f(x)|\,\le\, 5\, M\, h_i^2, | ||
</math></center> | </math></center> | ||
Linia 470: | Linia 458: | ||
[[Image:MNrunge17czebyspline.png|thumb|550px|center|Interpolacja splajnowa wydaje się lepiej spełniać zadanie odtworzenia kształtu funkcji]] | [[Image:MNrunge17czebyspline.png|thumb|550px|center|Interpolacja splajnowa wydaje się lepiej spełniać zadanie odtworzenia kształtu funkcji]] | ||
Jak widać, w przeciwieństwie do wielomianu interpolacyjnego, splajn interpolacyjny praktycznie pokrywa się z wykresem funkcji, tutaj: <math> | Jak widać, w przeciwieństwie do wielomianu interpolacyjnego, splajn interpolacyjny praktycznie pokrywa się z wykresem funkcji, tutaj: <math>f(x) = \frac{1}{1+x^2}</math>. | ||
</div></div> | </div></div> | ||
Linia 480: | Linia 468: | ||
Niech | Niech | ||
<center><math> | <center><math>W^r_M(a,b)\,=\,\Big\{\,f\in W^r(a,b):\, | ||
\int_a^b\left(f^{(r)}(x)\right)^2\,dx\le M\,\Big\} | \int_a^b\left(f^{(r)}(x)\right)^2\,dx\le M\,\Big\}</math></center> | ||
</math></center> | |||
Ustalmy węzły <math> | Ustalmy węzły <math>a=x_0<\cdots<x_n=b</math>. Dla <math>f\in W^r_M(a,b)</math>, niech <math>s_f</math> będzie naturalną funkcją sklejaną interpolującą <math>f</math> w <math>x_j</math>, <math>0\le j\le n</math>, a <math>a_f</math> dowolną inną aproksymacją korzystającą jedynie z informacji o wartościach <math>f</math> w tych węzłach, tzn. | ||
<center><math> | <center><math>a_f\,=\,\phi(f(x_0),\ldots,f(x_n))</math></center> | ||
</math></center> | |||
Załóżmy, że błąd aproksymacji mierzymy nie w normie Czebyszewa, ale w normie średniokwadratowej zdefiniowanej jako | Załóżmy, że błąd aproksymacji mierzymy nie w normie Czebyszewa, ale w normie średniokwadratowej zdefiniowanej jako | ||
<center><math> | <center><math>\|g\|_{{\cal L}_2(a,b)}\,=\,\sqrt{\int_a^b (g(x))^2\,dx}. | ||
</math></center> | </math></center> | ||
Wtedy | Wtedy | ||
<center><math> | <center><math>\sup_{f\in W^r_M(a,b)}\|f-s_f\|_{{\cal L}_2(a,b)}\,\le\, | ||
\sup_{f\in W^r_M(a,b)}\|f-a_f\|_{{\cal L}_2(a,b)}. | \sup_{f\in W^r_M(a,b)}\|f-a_f\|_{{\cal L}_2(a,b)}. | ||
</math></center> | </math></center> | ||
Aproksymacja naturalnymi funkcjami sklejanymi jest więc optymalna w klasie <math> | Aproksymacja naturalnymi funkcjami sklejanymi jest więc optymalna w klasie <math>W^r_M(a,b)</math>. | ||
Można również pokazać, że interpolacja <math> | Można również pokazać, że interpolacja <math>s_f^*</math> naturalnymi funkcjami sklejanymi na węzłach równoodległych <math>x_j=a+(b-a)j/n</math>, <math>0\le j\le n</math>, jest optymalna co do | ||
rzędu w klasie <math> | rzędu w klasie <math>W^r_M(a,b)</math>, wśród wszystkich aproksymacji korzystających jedynie z informacji o wartościach funkcji w <math>n+1</math> dowolnych punktach, oraz | ||
<center><math> | <center><math>\max_{f\in W^r_M(a,b)}\|f-s^*_f\|_{{\cal L}_2(a,b)} | ||
\,\asymp\,n^{-r}. | \,\asymp\,n^{-r}. | ||
</math></center> | </math></center> | ||
Linia 516: | Linia 502: | ||
Tak jak wielomiany, naturalne funkcje sklejane interpolujące dane funkcje można | Tak jak wielomiany, naturalne funkcje sklejane interpolujące dane funkcje można | ||
reprezentować przez ich współczynniki w różnych bazach. Do tego celu można na przykład użyć bazy kanonicznej <math> | reprezentować przez ich współczynniki w różnych bazach. Do tego celu można na przykład użyć bazy kanonicznej <math>K_j</math>, <math>0\le j\le n</math> zdefiniowanej równościami | ||
<center><math> | <center><math>K_j(x_i)\,=\,\left\{\begin{array} {ll} | ||
0 &\quad i\ne j, \\ | 0 &\quad i\ne j, \\ | ||
1 &\quad i=j, \end{array} \right. | 1 &\quad i=j, \end{array} \right.</math></center> | ||
</math></center> | |||
przy której <math> | przy której <math>s_f(x)=\sum_{j=0}^n f(x_j)K_j(x)</math>. Baza kanoniczna jest jednak niewygodna w użyciu, bo funkcje <math>K_j</math> w ogólności nie zerują się na żadnym podprzedziale, a tym samym manipulowanie nimi jest utrudnione. | ||
Częściej używa się bazy B-sklejanej. Można ją zdefiniować dla splajnów dowolnego rzędu za pomocą wzoru rekurencyjnego (przyjmując, że dla dowolnego <math> | Częściej używa się bazy B-sklejanej. Można ją zdefiniować dla splajnów dowolnego rzędu za pomocą wzoru rekurencyjnego (przyjmując, że dla dowolnego <math>i</math>, <math>x_i < x_{i+1}</math>): | ||
<center><math> | <center><math>B_i^0(x) = \left\{ \begin{matrix} 1, & \mbox{ jeśli } x_i \leq x < x_{i+1},\\ | ||
0, & \mbox{ w przeciwnym przypadku} ; | 0, & \mbox{ w przeciwnym przypadku} ; | ||
\ | \end{matrix} | ||
\right. | \right.</math></center> | ||
</math></center> | |||
<center><math> | <center><math>B_i^r(x) = \frac{x-x_i}{x_{i+r}-x_i} B_i^{r-1}(x) + | ||
\frac{x_{i+r+1}-x}{x_{i+r+1}-x_{i+1}} B_{i+1}^{r-1}(x) | \frac{x_{i+r+1}-x}{x_{i+r+1}-x_{i+1}} B_{i+1}^{r-1}(x)</math></center> | ||
</math></center> | |||
W przypadku naturalnych splajnów kubicznych, <math> | W przypadku naturalnych splajnów kubicznych, <math>r=2</math>, baza B-sklejana jest jawnie zdefiniowana przez następujące warunki: | ||
<center><math>\ | <center><math>\begin{align} B_j(x_j) &= 1, \qquad \mbox{ dla } 0\le j\le n, \\ | ||
B_j(x) &= 0,\qquad \mbox{ dla } x\le x_{j-2}, j\ge 2, | B_j(x) &= 0,\qquad \mbox{ dla } x\le x_{j-2}, j\ge 2, | ||
\mbox{ oraz dla } x\ge x_{j+2}, j\le n-2. | \mbox{ oraz dla } x\ge x_{j+2}, j\le n-2. | ||
\ | \end{align}</math></center> | ||
Dla <math> | Dla <math>B_0</math> i <math>B_1</math> dodatkowo żądamy, aby | ||
<center><math> | <center><math>B_0''(x_0)\,=\,0\,=\,B_1''(x_0),\qquad B_1(x_0)\,=\,0, | ||
</math></center> | </math></center> | ||
a dla <math> | a dla <math>B_{n-1}</math> i <math>B_n</math> podobnie | ||
<center><math> | <center><math>B_{n-1}''(x_n)\,=\,0\,=\,B_n''(x_n), | ||
\qquad B_{n-1}(x_{n-1})\,=\,0 | \qquad B_{n-1}(x_{n-1})\,=\,0</math></center> | ||
</math></center> | |||
Wtedy <math> | Wtedy <math>B_j</math> nie zeruje się tylko na przedziale | ||
<math> | <math>(x_{j-2},x_{j+2})</math>. Wyznaczenie współczynników | ||
rozwinięcia w bazie <math> | rozwinięcia w bazie <math>\{B_i\}_{i=0}^n</math> funkcji sklejanej | ||
interpolującej <math> | interpolującej <math>f</math> wymaga rozwiązania układu liniowego | ||
z macierzą trójdiagonalną <math> | z macierzą trójdiagonalną <math>\{B_j(x_i)\}_{i,j=0}^n</math>, a | ||
więc koszt obliczenia tych współczynników jest | więc koszt obliczenia tych współczynników jest | ||
proporcjonalny do <math> | proporcjonalny do <math>n</math>. | ||
</div></div> | </div></div> | ||
Linia 568: | Linia 550: | ||
<div class="solution" style="margin-left,margin-right:3em;"> | <div class="solution" style="margin-left,margin-right:3em;"> | ||
Oprócz naturalnych funkcji sklejanych często rozpatruje się też <strong>okresowe funkcje sklejane</strong>. Są to funkcje <math> | Oprócz naturalnych funkcji sklejanych często rozpatruje się też <strong>okresowe funkcje sklejane</strong>. Są to funkcje <math>\tilde s:R\to R</math> spełniające warunki '''(i)''', '''(ii)''' \link{splinedef}{definicji funkcji sklejanej}, oraz warunek: | ||
; (iii)' | ; (iii)' | ||
: <math> | : <math>\tilde s^{(i)}</math> jest dla <math>0\le i\le r-1</math> | ||
funkcją okresową o okresie <math> | funkcją okresową o okresie <math>(b-a)</math>, tzn. | ||
<math> | <math>\tilde s^{(i)}(x)=\tilde s^{(i)}(x+(b-a))</math>, <math>\forall x</math>. | ||
Klasę okresowych funkcji sklejanych rzędu <math> | Klasę okresowych funkcji sklejanych rzędu <math>r</math> oznaczymy przez <math>\widetilde{\cal S}_r</math>. Funkcje te mają podobne własności jak naturalne funkcje sklejane. Dokładniej, niech | ||
<center><math> | <center><math> | ||
\tilde W^r(a,b)\,=\,\{\,f\in W^r(a,b):\, f^{(i)}(a)=f^{(i)}(b),\; 0\le i\le r-1\,\} | \tilde W^r(a,b)\,=\,\{\,f\in W^r(a,b):\, f^{(i)}(a)=f^{(i)}(b),\; 0\le i\le r-1\,\}</math>,</center> | ||
</math></center> | |||
tzn. <math> | tzn. <math>\tilde W^r(a,b)</math> jest klasą funkcji z <math>W^r(a,b)</math>, które można przedłużyć do funkcji, krórych wszystkie pochodne do rzędu <math>r-1</math> włącznie są <math>(b-a)</math>-okresowe na <math>R</math>. Wtedy dla dowolnej funkcji <math>f\in\tilde W^r(a,b)</math> | ||
zerującej się w węzłach <math> | zerującej się w węzłach <math>x_j</math>, oraz dla dowolnej <math>\tilde s\in\widetilde{\cal S}_r</math> mamy | ||
<center><math> | <center><math> | ||
\int_a^b f^{(r)}(x)\tilde s^{(r)}(x)\,dx\,=\,0. | \int_a^b f^{(r)}(x)\tilde s^{(r)}(x)\,dx\,=\,0. | ||
</math></center> | </math></center> | ||
Wynika z niego jednoznaczność rozwiązania zadania interpolacyjnego dla okresowych funkcji <math> | Wynika z niego jednoznaczność rozwiązania zadania interpolacyjnego dla okresowych funkcji <math>f</math> (tzn. takich, że <math>f(a)=f(b)</math>), jak również odpowiednia własność minimalizacyjna okresowych funkcji sklejanych. Dokładniej, jeśli <math>f\in\tilde W^r(a,b)</math> oraz <math>\tilde s_f\in\widetilde{\cal S}_r</math> interpoluje <math>f</math> w węzłach <math>x_j</math>, <math>0\le j\le n</math>, to | ||
<center><math> | <center><math>\int_a^b \Big( f^{(r)}(x)\Big)^2\,dx\,\ge\, | ||
\int_a^b \Big(\tilde s_f^{(r)}(x)\Big)^2\,dx. | \int_a^b \Big(\tilde s_f^{(r)}(x)\Big)^2\,dx. | ||
</math></center> | </math></center> | ||
Linia 601: | Linia 582: | ||
w następujący sposób. | w następujący sposób. | ||
Niech <math> | Niech <math>F</math> będzie pewną przestrzenią liniową funkcji <math>f:[a,b]\to R</math>, w której określona została norma <math>\|\cdot\|</math>. Niech <math>V_n\subset F</math> będzie podprzestrzenią | ||
w <math> | w <math>F</math> wymiaru <math>n</math>. Dla danej <math>f\in F</math>, należy znaleźć funkcję <math>v_f\in F</math> taką, że | ||
<center><math> | <center><math>\|f-v_f\|\,=\,\min_{v\in V_n}\|f-v\|. | ||
</math></center> | </math></center> | ||
Okazuje się, że tak postawione zadanie ma rozwiązanie <math> | Okazuje się, że tak postawione zadanie ma rozwiązanie <math>v_f</math>, choć nie zawsze jest ono wyznaczone jednoznacznie. | ||
Jako przykład, rozpatrzmy <math> | Jako przykład, rozpatrzmy <math>F=W^r(a,b)</math>. Utożsamiając funkcje <math>f_1,f_2\in W^r(a,b)</math> takie, że <math>f_1(x)-f_2(x) \in\Pi_{r-1}</math>, zdefiniujemy w <math>W^r(a,b)</math> normę | ||
<center><math> | <center><math>\|f\|\,=\,\sqrt{\int_a^b\left(f^{(r)}(x)\right)^2\,dx}. | ||
</math></center> | </math></center> | ||
Dla ustalonych węzłów <math> | Dla ustalonych węzłów <math>a=x_0<\cdots<x_n=b</math>, niech | ||
<center><math> | <center><math>V_{n+1}\,=\,{\cal S}_r | ||
</math></center> | </math></center> | ||
będzie podprzestrzenią w <math> | będzie podprzestrzenią w <math>W^r(a,b)</math> naturalnych funkcji sklejanych rzędu <math>r</math> opartych węzłach <math>x_j</math>, <math>0\le j\le n</math>. Oczywiście <math>\mbox{dim} {\cal S}_r=n+1</math>, co wynika z jednoznaczności rozwiązania w <math>{\cal S}_r</math> zadania interpolacji. Okazuje się, że wtedy optymalną dla <math>f\in W^r(a,b)</math> jest naturalna funkcja sklejana <math>s_f</math> interpolująca <math>f</math> w węzłach <math>x_j</math>, tzn. | ||
<center><math> | <center><math>\|f-s_f\|\,=\,\min_{s\in {\cal S}_r}\|f-s\|. | ||
</math></center> | </math></center> | ||
Rzeczywiście, ponieważ norma w przestrzeni <math> | Rzeczywiście, ponieważ norma w przestrzeni <math>W^r(a,b)</math> generowana jest przez iloczyn skalarny | ||
<center><math> | <center><math>(f_1,f_2)\,=\, | ||
\int_a^b f_1^{(r)}(x)f_2^{(r)}(x)\,dx, | \int_a^b f_1^{(r)}(x)f_2^{(r)}(x)\,dx, | ||
</math></center> | </math></center> | ||
jest to przestrzeń unitarna. Znane twierdzenie mówi, że w przestrzeni unitarnej najbliższą danej <math> | jest to przestrzeń unitarna. Znane twierdzenie mówi, że w przestrzeni unitarnej najbliższą danej <math>f</math> funkcją w dowolnej domkniętej podprzestrzeni <math>V</math> jest rzut | ||
prostopadły <math> | prostopadły <math>f</math> na <math>V</math>, albo równoważnie, taka funkcja <math>v_f\in V_{n+1}</math>, że iloczyn skalarny | ||
<center><math> | <center><math>(f-v_f, v)\,=\,0, \qquad\forall v\in V. | ||
</math></center> | </math></center> | ||
W naszym przypadku, ostatnia równość jest równoważna | W naszym przypadku, ostatnia równość jest równoważna | ||
<center><math> | <center><math>\int_a^b(f-v_f)^{(r)}(x)s^{(r)}(x)\,dx\,=\,0, | ||
\quad\forall s\in{\cal S}_r. | \quad\forall s\in{\cal S}_r. | ||
</math></center> | </math></center> | ||
To zaś jest prawdą, gdy <math> | To zaś jest prawdą, gdy <math>v_f</math> interpoluje <math>f</math> w punktach <math>x_j</math>, czyli <math>v_f=s_f</math>. | ||
Dodajmy jeszcze, że nie zawsze interpolacja daje najlepszą | Dodajmy jeszcze, że nie zawsze interpolacja daje najlepszą | ||
aproksymację w sensie klasycznym. | aproksymację w sensie klasycznym. | ||
==Literatura== | ==Literatura== |
Aktualna wersja na dzień 11:16, 12 wrz 2023
Funkcje sklejane (splajny)
<<< Powrót do strony głównej przedmiotu Metody numeryczne
Interpolacja wielomianami interpolacyjnymi, chociaż korzysta z funkcji gładkich i łatwo reprezentowalnych w komputerze, ma jednak również pewne wady. Zauważmy, że błąd interpolacji może być bardzo duży (zjawisko Rungego), a poza tym interpolacja jest nielokalna: nawet mała zmiana warości funkcji w pojedynczym węźle może powodować dużą zmianę zachowania całego wielomianu interpolacyjnego. Czasem więc lepiej jest zastosować innego rodzaju interpolację, np. posługując się funkcjami sklejanymi, które tylko lokalnie są wielomianami, sklejonymi w taki sposób, by globalnie zachować pewien stopień gładkości, tzn. różniczkowalność zadaną liczbę razy.
Tego typu podejście okazało się bardzo owocne m.in. w grafice komputerowej (np. dla wizualizacji scenerii w grach komputerowych), a także np. posłużyło jako narzędzie konstrukcji skalowalnych czcionek komputerowych w Postscripcie (precyzyjniej, korzysta się tam z tzw. krzywych Beziera --- pewnych krzywych sklejanych zadanych na płaszczyźnie). Z krzywych Beziera powszechnie korzysta się również w systemach CAD (Computer Aided Design).
Zamiast terminu funkcje sklejane używa się też często terminów splajny (spline), albo funkcje gięte. Nazwy te biorą się stąd, że zadanie interpolacji naturalnym splajnem kubicznym można interpretować jako model matematyczny aparatu służącego do wytwarzania mebli giętych.
Funkcje sklejane
W ogólności przez funkcję sklejaną rozumie się każdą funkcję przedziałami wielomianową. Nas będą jednak interesować szczególne funkcje tego typu i dlatego termin funkcje sklejane zarezerwujemy dla funkcji przedziałami wielomianowych i posiadających dodatkowe własności, które teraz określimy.
Niech dany będzie przedział skończony i węzły
przy czym .
Definicja
Funkcję nazywamy funkcją sklejaną rzędu () odpowiadającą węzłom , , jeśli spełnione są następujące dwa warunki:
- (i)
- jest wielomianem stopnia co najwyżej na każdym
z przedziałów , tzn. , ,
- (ii)
- jest -krotnie różniczkowalna w sposób
ciągły na całej prostej, tzn. .
Jeśli ponadto
- (iii)
- jest wielomianem stopnia co najwyżej poza
, tzn. ,
to jest naturalną funkcją sklejaną.
Klasę naturalnych funkcji sklejanych rzędu opartych na węzłach będziemy oznaczać przez , albo po prostu , jeśli węzły są ustalone.
Na przykład funkcją sklejaną rzędu pierwszego () jest funkcja ciągła i liniowa na poszczególnych przedziałach . Jest ona naturalna, gdy poza jest funkcją stała. Tego typu funkcje nazywamy liniowymi funkcjami sklejanymi.
Najważniejszymi z praktycznego punktu widzenia są jednak funkcje sklejane rzędu drugiego odpowiadające . Są to funkcje, które są na dwa razy różniczkowalne w sposób ciągły, a na każdym z podprzedziałów są wielomianami stopnia co najwyżej trzeciego. W tym przypadku mówimy o kubicznych funkcjach sklejanych. Funkcja sklejana kubiczna jest naturalna, gdy poza jest wielomianem liniowym, a więc .
Interpolacja i gładkość
Pokażemy najpierw ważny lemat, który okaże się kluczem do dowodu dalszych twierdzeń.
Niech będzie klasą funkcji takich, że jest razy różniczkowalna na w sposób ciągły oraz istnieje prawie wszędzie na i jest całkowalna z kwadratem, tzn.
Oczywiście każda funkcja sklejana rzędu (niekoniecznie naturalna) należy do .
Lemat
Niech będzie funkcją zerującą się w węzłach, tzn.
Wtedy dla dowolnej naturalnej funkcji sklejanej mamy
Dowód
Dla funkcja jest przedziałami stała. Oznaczając przez jej wartość na dostajemy
ponieważ zeruje się w .
Rozpatrzmy teraz przypadek . Ponieważ
to
Wobec tego, że jest poza przedziałem wielomianem stopnia co najwyżej oraz jest ciągła na , mamy , a stąd
Postępując podobnie, tzn. całkując przez części razy, otrzymujemy w końcu
Funkcja jest przedziałami stała, a więc możemy teraz zastosować ten sam argument jak dla , aby pokazać,
że ostatnia całka jest równa zeru.
Funkcje sklejane chcielibyśmy zastosować do interpolacji funkcji. Ważne jest więc, aby odpowiednie zadanie interpolacyjne miało jednoznaczne rozwiązanie.
Twierdzenie O istnieniu i jednoznaczności naturalnego splajnu interpolacyjnego
Jeśli , to dla dowolnej funkcji istnieje dokładnie jedna naturalna funkcja sklejana interpolująca w węzłach , tzn. taka, że
Dowód
Pokażemy najpierw, że jedyną naturalną funkcją sklejaną interpolującą dane zerowe jest funkcja zerowa. Rzeczywiście, jeśli dla , to podstawiając w poprzednim lemacie , otrzymujemy
Stąd jest funkcją zerową, a więc jest wielomianem stopnia co najwyżej zerującym się w co najmniej punktach . Wobec tego, że , otrzymujemy .
Zauważmy teraz, że problem znalezienia naturalnej funkcji sklejanej interpolującej można sprowadzić do rozwiązania układu równań liniowych z macierzą kwadratową. Na każdym przedziale , , jest ona postaci
dla pewnych współczynników , a na i mamy odpowiednio
i
Aby wyznaczyć , musimy więc znaleźć ogółem współczynników , przy czym są one związane warunkami jednorodnymi wynikającymi z gładkości,
dla i , oraz niejednorodnymi warunkami interpolacyjnymi,
dla . Otrzymujemy więc układ równań liniowych ze względu na niewiadomych .
Naturalna funkcja sklejana interpolująca jest wyznaczona jednoznacznie wtedy i tylko wtedy, gdy układ ten ma jednoznaczne rozwiązanie. To zaś zachodzi, gdy zero jest jedynym rozwiązaniem układu jednorodnego. Rzeczywiście, układ jednorodny odpowiada zerowym warunkom interpolacyjnym, przy których, jak pokazaliśmy wcześniej, zerowa funkcja sklejana (której odpowiada , ) jest jedynym rozwiązaniem zadania interpolacyjnego.
Naturalnych funkcji sklejanych możemy więc używać do interpolacji funkcji. Pokażemy teraz inną ich własność, która jest powodem dużego praktycznego zainteresowania funkcjami sklejanymi.
Twierdzenie O ekstremalnej własności splajnów naturalnych
Niech i niech będzie naturalną funkcją sklejaną rzędu interpolującą w węzłach , . Wtedy
Dowód
Jeśli przedstawimy w postaci , to
Funkcja jest w klasie i zeruje się w węzłach , . Z lematu wynika więc, że
, a stąd wynika teza.
Wartość całki może być w ogólności uważana za miarę gładkości funkcji. Dowiedzioną nierówność możemy więc zinterpretować w następujący sposób. Naturalna funkcja sklejana jest w klasie najgładszą funkcją spełniającą dane warunki interpolacyjne w wybranych węzłach .
Jak już wspomnieliśmy, najczęściej używanymi są kubiczne funkcje sklejane. Dlatego rozpatrzymy je oddzielnie.
Kubiczne funkcje sklejane
Jeśli zdecydowaliśmy się na użycie kubicznych funkcji sklejanych, powstaje problem wyznaczenia interpolującej daną funkcję , tzn. takiej, że dla . W tym celu, na każdym przedziale przedstawimy w postaci jej rozwinięcia w szereg Taylora w punkcie ,
i podamy algorytm obliczania dla .
Warunki brzegowe i warunki ciągłości dla dają nam oraz , czyli
gdzie . Stąd, przyjmując dodatkowo , otrzymujemy
Z warunków ciągłości dla dostajemy z kolei
oraz
Warunki ciągłości dają w końcu
Powyższe równania definiują nam na odcinku naturalną kubiczną funkcję sklejaną. Ponieważ poszukiwana funkcja sklejana ma interpolować , mamy dodatkowych warunków interpolacyjnych , , oraz , z których
Teraz możemy warunki ciągłości przepisać jako
przy czym wzór ten zachodzi również dla . Po wyrugowaniu i podstawieniu , mamy
gdzie jest odpowiednią różnicą dzieloną. Możemy teraz powyższe wyrażenie na podstawić, aby otrzymać
Wprowadzając oznaczenie
możemy to równanie przepisać jako
, albo w postaci macierzowej
gdzie
Ostatecznie, aby znaleźć współczynniki należy najpierw rozwiązać układ równań liniowych, a potem zastosować wzory definiujące pozostałe współczynniki.
Zauważmy, że macierz układu równań liniowych jest trójdiagonalna i ma dominującą przekątną. Układ można więc rozwiązać kosztem proporcjonalnym do wymiaru używając algorytmu przeganiania. Koszt znalezienia wszystkich współczynników kubicznej funkcji sklejanej interpolującej jest więc też proporcjonalny do .
MATLAB i Octave mają wbudowaną funkcję wyznaczającą naturalny kubiczny splajn interpolujący zadane wartości:
s = spline(x,y);
Aby wyznaczyć wartości takiego splajnu w zadanych punktach , także musimy użyć specjalnej funkcji,
Y = ppval(s,X);
Na końcu oszacujemy jeszcze błąd interpolacji naturalnymi kubicznymi funkcjami sklejanymi na przedziale . Będziemy zakładać, że jest dwa razy różniczkowalna w sposób ciągły.
Twierdzenie O błędzie interpolacji splajnem kubicznym
Jeśli to
W szczególności, dla podziału równomiernego , , mamy
Dowód
Wykorzystamy obliczoną wcześniej postać interpolującej funkcji sklejanej . Dla mamy
Z rozwinięcia w szereg Taylora w punkcie dostajemy oraz . Stąd
oraz
Niech teraz . Z postaci układu otrzymujemy
a stąd
co kończy dowód.

Przykład
Uwaga
Niech
Ustalmy węzły . Dla , niech będzie naturalną funkcją sklejaną interpolującą w , , a dowolną inną aproksymacją korzystającą jedynie z informacji o wartościach w tych węzłach, tzn.
Załóżmy, że błąd aproksymacji mierzymy nie w normie Czebyszewa, ale w normie średniokwadratowej zdefiniowanej jako
Wtedy
Aproksymacja naturalnymi funkcjami sklejanymi jest więc optymalna w klasie .
Można również pokazać, że interpolacja naturalnymi funkcjami sklejanymi na węzłach równoodległych , , jest optymalna co do rzędu w klasie , wśród wszystkich aproksymacji korzystających jedynie z informacji o wartościach funkcji w dowolnych punktach, oraz
Uwaga
Tak jak wielomiany, naturalne funkcje sklejane interpolujące dane funkcje można reprezentować przez ich współczynniki w różnych bazach. Do tego celu można na przykład użyć bazy kanonicznej , zdefiniowanej równościami
przy której . Baza kanoniczna jest jednak niewygodna w użyciu, bo funkcje w ogólności nie zerują się na żadnym podprzedziale, a tym samym manipulowanie nimi jest utrudnione.
Częściej używa się bazy B-sklejanej. Można ją zdefiniować dla splajnów dowolnego rzędu za pomocą wzoru rekurencyjnego (przyjmując, że dla dowolnego , ):
W przypadku naturalnych splajnów kubicznych, , baza B-sklejana jest jawnie zdefiniowana przez następujące warunki:
Dla i dodatkowo żądamy, aby
a dla i podobnie
Wtedy nie zeruje się tylko na przedziale . Wyznaczenie współczynników rozwinięcia w bazie funkcji sklejanej interpolującej wymaga rozwiązania układu liniowego z macierzą trójdiagonalną , a więc koszt obliczenia tych współczynników jest proporcjonalny do .
Uwaga
Oprócz naturalnych funkcji sklejanych często rozpatruje się też okresowe funkcje sklejane. Są to funkcje spełniające warunki (i), (ii) \link{splinedef}{definicji funkcji sklejanej}, oraz warunek:
- (iii)'
- jest dla
funkcją okresową o okresie , tzn. , .
Klasę okresowych funkcji sklejanych rzędu oznaczymy przez . Funkcje te mają podobne własności jak naturalne funkcje sklejane. Dokładniej, niech
tzn. jest klasą funkcji z , które można przedłużyć do funkcji, krórych wszystkie pochodne do rzędu włącznie są -okresowe na . Wtedy dla dowolnej funkcji zerującej się w węzłach , oraz dla dowolnej mamy
Wynika z niego jednoznaczność rozwiązania zadania interpolacyjnego dla okresowych funkcji (tzn. takich, że ), jak również odpowiednia własność minimalizacyjna okresowych funkcji sklejanych. Dokładniej, jeśli oraz interpoluje w węzłach , , to
Dygresja o najlepszej aproksymacji
Klasyczne zadanie aproksymacyjne w przestrzeniach funkcji definiuje się w następujący sposób.
Niech będzie pewną przestrzenią liniową funkcji , w której określona została norma . Niech będzie podprzestrzenią w wymiaru . Dla danej , należy znaleźć funkcję taką, że
Okazuje się, że tak postawione zadanie ma rozwiązanie , choć nie zawsze jest ono wyznaczone jednoznacznie.
Jako przykład, rozpatrzmy . Utożsamiając funkcje takie, że , zdefiniujemy w normę
Dla ustalonych węzłów , niech
będzie podprzestrzenią w naturalnych funkcji sklejanych rzędu opartych węzłach , . Oczywiście , co wynika z jednoznaczności rozwiązania w zadania interpolacji. Okazuje się, że wtedy optymalną dla jest naturalna funkcja sklejana interpolująca w węzłach , tzn.
Rzeczywiście, ponieważ norma w przestrzeni generowana jest przez iloczyn skalarny
jest to przestrzeń unitarna. Znane twierdzenie mówi, że w przestrzeni unitarnej najbliższą danej funkcją w dowolnej domkniętej podprzestrzeni jest rzut prostopadły na , albo równoważnie, taka funkcja , że iloczyn skalarny
W naszym przypadku, ostatnia równość jest równoważna
To zaś jest prawdą, gdy interpoluje w punktach , czyli .
Dodajmy jeszcze, że nie zawsze interpolacja daje najlepszą aproksymację w sensie klasycznym.
Literatura
W celu dogłębnego zapoznania się z omawianym na wykładzie materiałem, przeczytaj rozdział 6.4 w
- D. Kincaid, W. Cheney Analiza numeryczna, Wydawnictwa Naukowo-Techniczne, Warszawa 2006, ISBN 83-204-3078-X.
Warto także zapoznać się (nieobowiązkowo) z rozdziałami 6.5 i 6.6 tamże.