POLITECHNIKA WROCŁAWSKA
ZAKŁAD AUTOMATYKIi STEROWANIA w ENERGETYCE
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.
22.03.2011
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;
%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')
%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); );
plot(t1,P1,'magenta');
plot(t1,y1a,'r')
plot(t1,y2a,'g')
plot(t1,y3a,'b')
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" ')
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ą
Kony777