background image

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ą. 

 

 

background image

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'

);

 

 

 

 

background image

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 

background image

 
 

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