POLITECHNIKA WROCŁAWSKA
ZAKŁAD AUTOMATYKI |
Skład grupy:
1. Anna Knap 170739
|
Wydział: Elektryczny Rok studiów: 3 Rok Akademicki : 2010/2011 Grupa: Termin: Wtorek, 07:30 |
|
METODY NUMERYCZNE |
|||
Data wykonania ćwiczenia: 15.03.2011 |
Nr ćwiczenia: 1 Temat: Interpolacja funkcji dyskretnej. |
||
Data oddania sprawozdania: 22.03.2011 |
|
||
Prowadzący: Mgr inż. Łukasz Staszewski |
|
Cel ćwiczenia: Zapoznanie się ze sposobami interpolacji funkcji przedstawionej w postaci próbek.
Przebieg ćwiczenia:
1. Dokonanie interpolacji z gotowych funkcji Matlaba, oraz z otrzymanego m-pliku:
M-plik:
%% definiowanie tabelki clc;clear all;close all; T=0.012; t=0:T:7; k=0:7; y= [-2 -1 0.5 1.6 1.0 0.2 -0.6 -0.8];
%% interpolacje: y1=INTERP1(k,y,t,'linear'); y2=INTERP1(k,y,t,'cubic'); y3=INTERP1(k,y,t,'spline');
%% %interpolacja 3-krokowa: l=1; m=0; P=1:(max(k)/T)+1; % prelokacja zmiennej P 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
%% %kreslenie wykresow plot(k,y,'*black') axis([0 7 -2 2]); hold on;grid on; plot(t,P,'magenta');
plot(t,y1,'r') plot(t,y2,'g') plot(t,y3,'b') hold on;grid on;
%% %opis wykresów title('Interpolacja 3 metodami'); xlabel('próbki'); ylabel('Amplituda'); legend('probki','3-krokowa','linear','cubic','spline') |
[n1,m1]=size(P);%wszystkich interpolacji P1=P(:,1:m1-2); );%zmniejszenie wektora o punkty, które nie były in terpolowane %zmniejszenie pozostalych wektorow t1=t(:,1:m1-2); ); y1a=y1(:,1:m1-2); ); y2a=y2(:,1:m1-2); ); y3a=y3(:,1:m1-2); );
%% %kreslenie wykresow plot(k,y,'*black') axis([0 7 -2 2]); hold on;grid on; plot(t1,P1,'magenta'); plot(t1,y1a,'r') plot(t1,y2a,'g') plot(t1,y3a,'b') hold on;grid on;
%% %opis wykresów title('Interpolacja 3 metodami'); xlabel('próbki'); ylabel('Amplituda'); legend('probki','3-krokowa','linear','cubic','spline')
|
Aby wykresy zostały wykreślone poprawnie, musiałam pominąć 2 ostatnie punkty interpolacji 3-krokowej przy rysowaniu wykresu, inaczej 2 ostatnie próbki przyjmowały wartości rzędu 583.
Wykreślona charakterystyka:
2. Porównanie, która z funkcji Matlaba najbardziej odpowiada interpolacji 3-krokowej:
a) Graficznie (typ `line' można od razu odrzucić, więc zamieściłam tylko pozostałe):
Można zaobserwować, że funkcja `spline' jest najbliższa naszej interpolacji.
b) Wyliczanie błędu przez porównanie maksymalnej różnicy między funkcjami:
Dopisane do poprzedniego m-pliku:
%%liczenie maksymalnego błędu
A=max(abs(P1-y2a));
B=max(abs(P1-y3a));
if A>B
disp('Interpolacja 3-krokowa jest najbardziej przyblizona przez interpolacje, z użyciem opcji "spline" ')
else
disp('Interpolacja 3-krokowa jest najbardziej przyblizona przez interpolacje, z użyciem opcji "cubic" ')
end
Odpowiedź Matlaba:
Interpolacja 3-krokowa jest najbardziej przyblizona przez interpolacje, z użyciem opcji "spline"
c) Wykreślenie charakterystyk różnic, aby sprawdzić, czy funkcja `cubic' jednorazowo wykazała, większy błąd, czy utrzymywał się on cały czas.
Wnioski:
Interpolacja 3-krokowa nie działa na 2 ostatnich elementach i należy je pominąć
Interpolację 3-krokową, dla moich parametrów najlepiej przybliża interpolacja typu spline, maksymalna wartość różnicy jest mniejsza niż dla `cubic' a na wykresie widać, że utrzymywała się na niższym poziomie
Gotowe funkcje matlaba działają o wiele szybciej niż nasz program
Interpolacja typu `line' najgorzej przybliża funkcję dyskretną