Interpolacja jest metodą numeryczną wyznaczania w danym przedziale funkcji interpolacyjnej, która przyjmuje w nim z góry zadane wartości w ustalonych punktach, zwanych węzłami. Stosowana jest w naukach doświadczalnych, w których dysponuje się skończoną liczbą danych do określenia zależności między wielkościami, a także w celu uproszczenia skomplikowanych funkcji.
Interpolacja funkcjami sklejanymi to metoda polegająca na przybliżaniu nieznanej funkcji wielomianami niskiego stopnia. Podany przedział [a, b] dzieli się na przedziały, a w każdym z nich interpoluje się funkcję wielomianem (zwykle niskiego poziomu – 1 lub 3 stopnia) interpolacyjnym. Następnie „sklejenie” tych wielomianów ma tworzyć funkcję sklejaną.
Thomas Simpson opracował w 1743 roku metodę przybliżonego, numerycznego obliczania całek oznaczonych, nazwaną później metodą Simpsona.
Metoda Simpsona opiera się na przybliżaniu funkcji całkowanej przez interpolację wielomianem drugiego stopnia, tak więc na jej skutek powstaje parabola, której powierzchnia jest zbliżona do powierzchni pod funkcją całkowaną, a jednocześnie jest łatwiejsza w obliczeniach.
f(x) = x * sin(x)
Interpolację wykonałam za pomocą funkcji interp1 z metodą „linear”, gdyż jest to odpowiednik interpolacji funkcją sklejania z wykorzystaniem wielomianu 1-go rzędu.
function z = teoaprox12(a,b,n) % n = liczba przedziałów w przedziale [a,b] % Walidacja danych if a > b c=b; b=a; a=c; end % Wyznaczanie elementów po podziale na n części delta=(b-a)/n; X=a:delta:b; % Tworzenie tablicy używanej przy wykresie X2=a:0.01:b; % Obliczenie funkcji nie interpolowanej Y2=X2.*sin(X2); % Tworzenie danych do interpolacji oraz interpolacja Y=X.*sin(X); Yint=interp1(X,Y,X2,'linear'); |
---|
Wykresy wykonałam za pomocą funkcji plot. Dodałam również opis osi oraz ograniczyłam wartości na osi pionowej do przedziału y∈<-max(a,b), max(a,b)>.
plot(X2,Yint,'g.',X2,Y2,'r.'); xlabel('x'); ylabel('y');title('Wykres funkcji y=f(x) oraz funkcji interpolującej'); axis([a b -max(a,b) max(a,b)]); legend('funkcja interpolująca','funkcja interpolowana'); |
---|
∥f1∥ = ∫ab|f(x)|dx
$$\left\| f_{2} \right\| = \sqrt[2]{\int_{a}^{b}{f^{2}(x)\text{dx}}}$$
norma1 = quad(@(x)teoaprox12fun(x,X,Y,1),a,b); norma2 = sqrt(quad(@(x)teoaprox12fun(x,X,Y,2),a,b)); |
---|
Listening pliku teoaprox12fun.m:
function y = teoaprox12fun(x,X,Y,n) y=interp1(X,Y,x,'linear') - x.*sin(x); y=y.^n; |
---|
$$\int_{a}^{b}{f\left( x \right)\text{dx} = {\frac{1}{6}\ \left( b - a \right)\ \left\lbrack f\left( a \right)\ + \ 4f\left( \frac{a + b}{2} \right)\ + f(b) \right\rbrack}}$$
$$R\left( f \right) = - \frac{1}{180}*\left( b - a \right)^{5}*{f^{\left( 4 \right)}\left( \varepsilon \right)}_{\varepsilon \in \left\lbrack a,b \right\rbrack}\ = \ - \frac{1}{180}*\left( b - a \right)^{5}\ *\ \operatorname{}\left( f^{\left( 4 \right)}\left( \varepsilon \right) \right)$$
$$f^{\left( 4 \right)}\left( x \right) = \frac{e^{\frac{x}{x - 1}}\left( {24x}^{3} - 36x^{2} + 12x + 1 \right)}{\left( x - 1 \right)^{8}}$$
Wyniki
N=2 | N=4 | N=15 | N=60 | |
---|---|---|---|---|
∥f1∥ |
122.2236 | 154.5912 | 7.6207 | 0.2390 |
∥f2∥ |
41.2312 | 45.3463 | 12.5601 | 0.2658 |
Jak widać na powyższych wykresach, funkcja x*sin(x) jest funkcją, która stosunkowo ciężko interpoluje się interpolacją liniową. Przypuszczalnie inne typu interpolacji, jak interpolacja typu „spline” czy też metodą Lagrange’a będą odnosić na tym polu lepsze efekty – wynikać to będzie z faktu, że wykorzystują one wielomiany, a nie jak ta metoda proste odcinki.