Tutorial_MATLAB_04_3.pdf

(201 KB) Pobierz
Laboratorium POK
Materiały do Laboratorium Informatyki
Rok akademicki: 2007/08
Semestr: letni
MATLAB – cz. 4.3 – Regresja
Wykonanie następującego skryptu:
clear all;
t=[0 .3 .8 1.1 1.6 2.3]';
y=[0.5 0.82 1.14 1.25 1.35 1.40]’;
/UWAGA: Wektory są transponowane/
plot(t,y,'o');
grid on;
hold on;
spowoduje wyświetlenie takiego wykresu:
1.4
1.3
1.2
1.1
1
0.9
0.8
0.7
0.6
0.5
0
0.5
1
1.5
2
2.5
Dane przedstawione na wykresie mogę pochodzić np. z pomiarów. Chcemy znaleźć funkcję
która najlepiej będzie modelowała wyniki pomiarów.
Regresja wielomianowa
Na podstawie wykresu można przypuszczać, że dane pomiarowe mogą być opisane
następującym modelem:
y
=
a
+
a
t
+
a
t
2
0
1
2
Nieznane parametry a 0 , a 1 oraz a 2 mogą być wyznaczone metodą najmniejszych kwadratów,
która minimalizuje sumę kwadratów różnic pomiędzy modelami a danymi. W naszym
przypadku mamy sześć równań i trzy niewiadome:
y
1
t
t
2
1
y
1
t
t
2
2
a
0
y
1
t
t
2
3
=
×
a
y
1
t
t
2
1
4
a
y
1
t
t
2
2
5
y
1
t
t
2
6
Opracował: dr inż. Witold Nocoń na podstawie podręcznika MATLAB – User Guide 6.
77078828.001.png
Materiały do Laboratorium Informatyki
Rok akademicki: 2007/08
Semestr: letni
Równania te reprezentowane są przez macierz o rozmiarze 6x3:
X =
1.0000 0 0
1.0000 0.3000 0.0900
1.0000 0.8000 0.6400
1.0000 1.1000 1.2100
1.0000 1.6000 2.5600
1.0000 2.3000 5.2900
Znając zarówno macierz X jaki i wektor y, możemy obliczyć wektor parametrów a w
następujący sposób:
a=X\y
a =
0.5318
0.9191
-0.2387
A więc wielomian drugiego stopnia, który będzie naszym modelem na następującą postać:
y
=
0
5318
+
0
919
t
0
2387
t
2
A więc po wykonaniu następujących operacji:
T=(0:0.1:2.5)';
Y=[ones(size(T)) T T.^2]*a;
plot(T,Y,'-');
Otrzymujemy następujący wykres:
1.5
1.4
1.3
1.2
1.1
1
0.9
0.8
0.7
0.6
0.5
0
0.5
1
1.5
2
2.5
Widzimy, że funkcja ta nie aproksymuje danych pomiarowych idealnie.
Opracował: dr inż. Witold Nocoń na podstawie podręcznika MATLAB – User Guide 6.
77078828.002.png
Materiały do Laboratorium Informatyki
Rok akademicki: 2007/08
Semestr: letni
Regresja liniowa względem parametrów
Zamiast wielomianu, możemy wypróbować inną funkcję która jest liniowa względem
parametrów . Np.:
y
=
a
+
a
e
+
t
a
te
t
0
1
2
Analogicznie do poprzedniego przypadku, obliczymy:
X1=[ones(size(t)) exp(-t) t.*exp(-t)];
a1=X1\y
a1 =
1.3974
-0.8988
0.4097
A więc nasz model będzie miał następującą postać:
y
=
1
3974
0
8988
e
+
t
0
4097
te
t
Analogicznie do poprzedniego przypadku pokażmy jak model ten pasuje do punktów
pomiarowych:
T1=(0:0.1:2.5)';
Y1=[ones(size(T1)) exp(-T1) T1.*exp(-T1)]*a1;
plot(T1,Y1, 'r-' );
Co daje następujący wynik:
1.6
1.4
1.2
1
0.8
0.6
0.4
0
0.5
1
1.5
2
2.5
Opracował: dr inż. Witold Nocoń na podstawie podręcznika MATLAB – User Guide 6.
77078828.003.png 77078828.004.png
Zgłoś jeśli naruszono regulamin