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
‖ ‖
-1.8444
‖ ‖
6.9034
Wykresy funkcji funkcji interpolowanej i interpolującej
‖ ‖ = |
|
‖ ‖ =
norma2 = sqrt(trapz(Y.*Y));
);disp(norma1);
);disp(norma2);
N=5
N=10
2.4968
9.3481
7.4164
8.2106
interpolowanej i interpolującej
N=2
N=10
N=50
62.2512
13.0767
N=5
N=50
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.
-10
0
10
20
30
40
50
60
70
0
10
20
30
40
50
60
Norma 1
Norma 2