Teoria aproksymacji
Projekt numer 1.17.
Wykonanie: Paweł Kopeć, grupa 32, WFMiIS.
Interpolacja jest to metoda numeryczna polegająca na wyznaczaniu w danym przedziale tak zwanej funkcji interpolacyjnej, która przyjmuje w nim z góry zadane wartości w ustalonych punktach, nazywanych węzłami. Stosowana jest ona często w naukach doświadczalnych, gdzie dysponuje się zazwyczaj skończoną liczbą danych do określenia zależności między wielkościami oraz w celu uproszczenia skomplikowanych funkcji, np. podczas całkowania numerycznego. Interpolacja jest szczególnym przypadkiem metod numerycznych typu aproksymacja.
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ą.
f(x) = ln(x)
Interpolację wykonałem za pomocą funkcji interp1 z metodą „spline”, gdyż jest to odpowiednik interpolacji funkcją sklejania z wykorzystaniem funkcji sklejania 3-rzędu. Wywołanie funkcji musiało odbywać się w zakresie liczb dodatnich, gdyż w przypadku gdy w przedziale [a,b] zawarte było "0", wykres funkcji interpolowanej nie rysował się.
function z = teoaprox17(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; aux=size(X); % Tworzenie tablicy używanej przy wykresie X2=a:0.01:b; % Obliczenie funkcji nie interpolowanej Y2=log(X2); % Tworzenie danych do interpolacji oraz interpolacja Y=log(X); Y2int=interp1(X,Y,X2,'spline'); |
---|
Wykresy wykonałem za pomocą funkcji plot. Dodałem również opis osi oraz ograniczyłem wartości na osi pionowej do przedziału y∈<-10,10> , oraz na osi poziomej do przedziału x∈ <-1,10>(aby wykres sporządzony przez program był czytelny i było na nim widać wszystkie wartości
% Rysowanie wykresów plot(X2,Y2int,'r.',X2,Y2,'k.'); xlabel('x'); ylabel('y');title('Wykres funkcji y=f(x) oraz funkcji interpolującej'); axis([-1 10 -10 10]); 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}}}$$
% Liczenie norm norma1 = trapz(Y); norma2 = sqrt(trapz(Y.*Y)); disp('norma1: ');disp(norma1); disp('norma2: ');disp(norma2); |
---|
N=2 | N=5 | N=10 | N=50 | |
---|---|---|---|---|
∥f1∥ |
-1.8444 | 2.4968 | 9.3481 | 62.2512 |
∥f2∥ |
6.9034 | 7.4164 | 8.2106 | 13.0767 |
Wykresy funkcji funkcji interpolowanej i interpolującej
Wykresy norm
Jak widać interpolacja metodą sklejanych trzeciego stopnia spisuje się całkiem przyzwoicie, przy zastosowaniu do funkcji logarytmicznej. Już przy wartości N=5 większa część wykresu nakłada się na wykres oryginalnej funkcji. Przy wartościach x bliskich 0 interpolacja metodą sklejanych trzeciego stopnia nie uzyskuje jednak już tak zadowalających rezultatów. Przy wywoływaniu funkcji, należało pamiętać, aby przedział <a;b> nie zawierał w sobie "0". W przeciwnym wypadku funkcja nie była interpolowana.