POLITECHNIKA WROCŁAWSKA ZAKŁAD AUTOMATYKI |
Więckowski Bartosz 179725 | Wydział: Elektryczny Rok studiów: 3 Rok Akademicki : 2011/2012 Termin: Wtorek, 13:15. |
---|---|---|
Metody numeryczne | ||
Data wykonania ćwiczenia: 06.03.2012 |
Nr ćwiczenia: 3 Temat: Interpolacja funkcji dyskretnej |
|
Data oddania sprawozdania:13.03.2012 |
||
Prowadzący:Mgr inż. Łukasz Staszewski |
I. Cel ćwiczenia.
Zapoznanie się z algorytmem interpolacji funkcji dyskretnej. Wykreślenie w Matlab`ie wykresów funkcji ciągłej, które są odtworzeniem funkcji dyskretnej. Do tego celu zostały wykorzystane trzy metody interpolacji linear, cubic, spline (używane wraz z biblioteczną funkcję Matlaba interp1) oraz program podany przez Prowadzącego będący kolejną metodą interpolacji.
II. Przebieg ćwiczenia.
Zastosowanie interpolacji linear, cubic, spline oraz programu realizującego interpolację 3 – punktową dla danych zadanych przez Prowadzącego.
Dane:
k | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|---|---|
y(k) | -2.4 | -1.6 | 0.5 | 1.6 | 1.0 | 0.4 | -0.6 | -0.9 |
Wykres 1. Interpolacja funkcji jednej zmiennej wykonana czterema metodami.
Krótka legenda do wykresu:
Linia gruba – interpolacja wykonana za pomocą programu.
Linia kreskowana – interpolacja wykonana funkcją spline.
Linia kropkowana – interpolacja wykonana funkcją linear.
Linia cienka, ciągła – interpolacja wykonana funkcją cubic.
‘o’ – węzły interpolacji.
Kod z m-pliku wykorzystanego w tym zadaniu.
%% Interpolacje
k=0:1:7; %(k,y) - współrzędne węzłów interpolacji
y=[-2.4 -1.6 0.5 1.6 1.0 0.4 -0.6 -0.9];
T=0.005;
m=0;
l=1;
xi=0:T:7;%(xi,yi) – współrzędne punktów w których
dokonywana jest interpolacja
yii=interp1(k,y,xi,'linear');
yiii=interp1(k,y,xi,'spline');
yiiii=interp1(k,y,xi,'cubic');
P=1:(max(k)/T)+1;
t=0:T:7;
plot(k,y,'o',xi,yii,'r:')
hold on
plot(k,y,'o',xi,yiii,'g--')
plot(k,y,'o',xi,yiiii,'b')
grid on
title('Interpolacja funkcji jednej zmiennej')
xlabel('Zmienna k (próbki)/ t - czas')
ylabel('Wartość y')
grid on
%% Interpolacja 3 punktowa
for i = 1:length(y)-2
d=m:T:2;
for h=1:length(d)
P(l)=0.5*(2*y(i)-d(h)*(3*y(i)-4*y(i+1)+y(i+2))+(d(h)^2)*(y(i)-2*y(i+1)+y(i+2)));
l=l+1;
end
m=1+T;
end
% przedstawienie wyniku
plot(t,P,'LineWidth',2)
Efektem działania tego programu jest wykreślenie Wykresu 1.
Wnioski:
Interpolacja ma na celu wyznaczenie wartości funkcji pomiędzy węzłami interpolacji. Do tego celu skorzystałem z narzędzi typu linear – interpolacja liniowa, cubic – interpolacja wielomianami trzeciego rzędu oraz spline - interpolacja funkcjami sklejanymi trzeciego stopnia. Najdokładniejsze wydają się być interpolacje cubic i spline ponieważ interpolacja liniowa jest sztywnym połączeniem punktów. Moim zdaniem najdokładniejsza jest funkcja spline. Funkcja cubic jest za bardzo zaokrąglona a interpolacja 3-punktowa jest pomiędzy nimi.