Teoria aproksymacji Projekt numer 1.17.
Wykonanie: Paweł Kopeć, grupa 32, WFMiIS.
Wstęp
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ą.
Interpolacja funkcją sklejania stopnia pierwszego
= ln
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'); Wykonanie wykresów
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');
Wyznaczenie norm
‖ ‖ = |
|
‖ ‖ =
% Liczenie norm
norma1 = trapz(Y);
norma2 = sqrt(trapz(Y.*Y)); disp('norma1: ');disp(norma1); disp('norma2: ');disp(norma2);
Wyniki, wykresy oraz wnioski N=2
N=5
N=10
N=50
‖ ‖
-1.8444
2.4968
9.3481
62.2512
‖ ‖
6.9034
7.4164
8.2106
13.0767
Wykresy funkcji funkcji in i t
n er
e p
r o
p lo
l w
o an
a e
n j i
i in
i t
n erp
r o
p lu
l j
u ąc
ą ej
N=2
N=5
N=10
N=50
Wykresy norm
70
60
50
40
Norma 1
30
Norma 2
20
10
0
0
10
20
30
40
50
60
-10
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.