Metody Numeryczne Wykład 7 Aproksymacja Aproksymacja na dyskretnym zbiorze punktów
Dany jest zbiór punktów {(xi, yi)}mi=0, należy znaleźć funkcj¸e v(x), która ”przybliża”te punkty. Jak wprzypadku interpolacji zakładamy że funkcja ta ma postać
v(x) = c0φ0+ c1φ1+ . . . + cnφn=
n
X
j=0
cjφj(x)
Zbiór {φj(x)}nj=0 jest zbiorem funkcji bazowych - jest wi¸ec liniowo niezależny. Poszu- kujemy nieznanych współczynników cj, j = 0, . . . , n. Różnica mi¸edzy interpolacj¸a a aproksymacj¸a pollega na tym, że w przypadku interpolacji zakładaliśmy równość m = n.
Teraz możemy założyć, że n < m. Innymi słowy liczba punktów pochodz¸acych z analizy danych może przewyższać liczb¸e funkcji bazowych. Przypomnijmy z algebry liniowej, że norm¸e euklidesow¸a k k2 wektora x definiujemy jako
kxk2 =
√ xTx =
v u u t
m
X
i=1
x2i
Aproksymacja w sensie metody najmniejszych kwadratów
Jest to najprostszy, a zarazem najpi¸ekniejszy matematycznie rodzaj aproksymacji.
Definiujemy współczynniki ai,j = φj(xi) dla j = 0, 1, . . . , n, i = 0, 1, . . . , m.
Wówczas
v(xi) =
n
X
j=0
cjφj(xi) =
n
X
j=0
cjai,j.
Zadanie najmiejszych kwadratów polega znalezieniu współczynników cj, które minimali- zuj¸a funkcj¸e
v u u t
m
X
j=0
yi−
n
X
j=0
ai,jcj
!2
co możemy zapisać wektorowo
mincψ(c), gdzie ψ(c) = ky − Ack22
Warunkiem koniecznym istnienia minimum tej funkcji jest zerowanie si¸e pochodnych rz¸edu pierwszego:
ψ|k(c) = 0, k = 0, 1, . . . , n
Chc¸ac być ścisłym matematycznie należałoby wykazać, że macierz pochodnych cz¸askowych rz¸edu drugiego (Hesjan) φ|k|l(c), k, l = 0, 1, 2 . . . , n jest macierz¸a dodatnio określon¸a.
Wówczas na wektorze c istnieje minimum lokalne funkcji φ.
Prosz¸e sprawdzić, że macierz φ|k|l(c) jest macierz¸a dodatnio określon¸a.
Ponieważ
ψ(c) = krk2 =
m
X
i=0
yi −
n
X
j=0
ai,jcj
!2
, wi¸ec
ψ|k(c) = 2
m
X
i=0
yi−
n
X
j=0
ai,jcj(−ai,k)
!
= 0, dla k = 0, 1, . . . , n Układ ten to możemy zapisać w postaci
m
X
i=0
ai,k
n
X
j=0
ai,jcj =
m
X
i=0
ai,kyi, dla k = 0, 1, . . . , n.
lub w postaci macierzowej
ATAc = ATy.
Jest to tak zwany układ równań normalnych . Układ ten możemy zapisać w postaci:
Bc = b, gdzie B = ATA, b = ATy
Zauważmy, że macierz B = ATA jest macierz symetryczn¸a, dodatnio określon¸a tzn. dla każdego niezerowego wektora x
xTBx = xT(ATA)x = (Ax)T(Ax) = kAxk22 > 0 Przykład (Regresja liniowa )
Poszukujemy funkcji v(x) aproksymuj¸acej zbiór danych punktów w postaci linii prostej
v(x) = c0φ0(x) + c1φ1(x) = c0+ c1x,
W tym przypadku n = 1, funkcjami bazowymi s¸a jednomian stały φ0(x) = 1,i jednomian liniowy φ1(x) = x. Obliczamy wartości współczynników ci, i = 0, 1 za pomoc¸a układu równań normalnych.
Macierz układu B = ATA ma postać
B0,0 B0,1 B1,0 B1,1
gdzie B0,0 =Pm
i=0φ0(xi)φ0(xi) = m + 1;
B0,1 =Pm
i=0φ0(xi)φ1(xi) =Pm i=0xi; B1,0 =Pm
i=0φ1(xi)φ0(xi) =Pm
i=0xi = B0,1; B1,1 =Pm
i=0φ1(xi)φ1(xi) =Pm i=0x2i;
Wektor kolumnowy niewiadomych współczynników c c = c0
c1
Wektor kolumnowy wyrazów wolnych b = ATy.
b = b0 b1
gdzie b0 =Pm
0 yiφ0(xi) = Pm i=0yi
b1 =Pm
0 yiφ1(xi) = Pm i=0xiyi
St¸ad otrzymujemy nast¸epuj¸acy układ równań dla zadania regresji linniowej:
m + 1 Pm i=0xi Pm
i=0xi Pm i=0x2i
c1 c2
=
Pm i=0yi Pm
i=0xiyi
Nie b¸edziemy wypisywali jawnych wzorów na nieznane współczynniki ci, i = 0, 1. Po- każemy na przykład dla danych (xi, yi) : (0.0, 0.1), (1.0, 0.9), (2.0, 2.0), w jaki sposób
konstruuje si¸e ten układ.
m = 2, m + 1 = 3, P3
i=0xi = 0.0 + 1.0 + 2.0 = 3.0, Pm
i=0yi = 0.1 + 0.9 + 2.0 = 3.0, Pm
i=1x2i = 0.02+ 1.02+ 2.02 = 5, Pm
i=0xiyi = 0.0 · 0.1 + 1.0 · 0.9 + 2.0 · 2.0 = 4.9.
St¸ad otrzymujemy układ
3.0 3.0 3.0 5.0
c0 c1
3.0 4.9
Rozwi¸azuj¸ac go w OCTAVE:
» A = [3 3; 3 5];
» b = [3 4.9]0;
» c = A\b Otrzymujemy c0 = 0.05 c1 = 0.95.
Prost¸a regresji dla tych danych jest prosta o równaniu y = 0.05 + 0.95x.
Zajmiemy si¸e teraz zadaniem najmniejszych kwadratów w OCTAVE.
Standardow¸a metod¸a aproksymacji w OCTAVE jest aproksymacja metod¸a najmniejszych kwadratów wielomianami wybranego stopnia n.
Polecenie
a = polyf it(x, y, n)
znajduje wektor a współczynników wielomianu stopnia n najlepiej dopasowanego w sen- sie aproksymacji średniokwadratowej do danych wektorów x i y.
Wartość wielomianu aproksymuj¸acego w dowolnym punkcie x0 można wyznaczyć, korzy- staj¸ac z polecenia OCTAVE polyval(a, x0).
Funkcje te wykorzystamy do rozwi¸azania zadań z listy 3 na laboratorium 4, teraz napi- szemy script f.m w OCTAVE do rozwi¸azywania układów równań normalnych o nazwie np. mnk.m od metody najmniejszych kwadratów.
f unction c = mnk(x, y, n) x = x0;
y = y0;
m = size(x, 1);
A = ones(m, n + 1);
f or j = 1 : n
A(1 : m, j + 1) = A(1 : m, j). ∗ x;
end
% Układ równań normalnych B = A ∗ A0;
b = A0∗ y;
c = B\b;
Interpretacja geometryczna metody najmniejszych kwadratów (patrz rysunek)
Rysunek 1: Metoda najmniejszych kwadratów