∑ ∑ - cjmat

Transkrypt

∑ ∑ - cjmat
Janusz Chojnacki
Instytut Techniki
Kolegium Karkonoskie
Metody Numeryczne
Laboratorium 7
Aproksymacja Średniokwadratowa
Podstawy teoretyczne
Załóżmy, że chcemy znaleźć postać funkcji liniowej dla danego zbioru danych
(tabela7.1)
Wykres takiej funkcji nazywamy prostą regresji.
Tabela 7.1
i
1
2
3
4
5
6
x(i)
0.1
0.4
0.5
0.7
0.7
0.9
y(i)
0.61
0.92
0.99
1.52
1.47
2.03
Niech wzór funkcji na przykład ma postać g ( x) = c1 x + c2 , gdzie współczynniki c1 , c2 są
poszukiwanymi liczbami.
Ponieważ liczba punktów ( xi , yi ) w tabeli jest większa od dwóch - poszukiwana prosta
nie może ,, przechodzić” przez każdy punkt.
Zadanie liniowej aproksymacji średniokwadratowej polega na minimalizacji sumy
kwadratów tzw. residuów czyli różnic
ri = yi − g ( xi ) = yi − (c1 x + c2 ), i = 1, 2,..., N
Oznaczmy tą sumę przez R. Mamy więc
N
N
i =1
i =1
R (c1 , c2 ) = ∑ ri 2 = ∑ ( yi − c1 xi − c2 ) 2
Minimum funkcji R (c1 , c2 ) może być osiągnięte w punktach zerowania się pochodnych
cząstkowych odpowiednio względem zmiennych c1 , c2 .
N
Rc'1 (c1 , c2 ) = −2∑ xi ( yi − c1 xi − c2 ) = 0
i =1
(7.1)
N
R (c1 , c2 ) = −2∑ ( yi − c1 xi − c2 ) = 0
'
c2
i =1
Układ (7.1) możemy zapisać w postaci
N
N
N
c1 ∑ xi2 + c2 ∑ xi = ∑ xi yi
i =1
i =1
N
N
N
i =1
i =1
i =1
i =1
(7.2)
c1 ∑ xi + c2 ∑1 = ∑ yi
Wprowadzając oznaczenia
N
a11 = ∑ xi2 ,
i =1
N
N
a12 = a21 = ∑ xi ,
a22 = ∑1 = N ,
i =1
i =1
układ (7.2) możemy zapisać w postaci
 a11
a
 21
a12 
a22 
 c1   z1 
c  =  z 
 2  2
(7.3)
Zadanie liniowej aproksymacji średniokwadratowej sprowadza się
układu równań (7.3).
do rozwiązania
W praktyce mamy jeszcze inny sposób znajdowania współczynników poszukiwanej
funkcji liniowej , rozpatrując tzw. układ nadokreślony :
c1 xi + c2 = yi , i = 1, 2,..., N .
lub postaci macierzowej
Ac = y
(7.4)
Mnożąc równanie macierzowe (7.4) lewostronnie przez macierz transponowaną AT
otrzymujemy
skąd
AT Ac = AT y
(7.5)
c = ( AT A) −1 AT y
(7.6)
Rozwiązanie (7.6) w Octave otrzymujemy za pomocą wewnętrznej
instrukcji ,, \”
c = ( A' * A) \ ( A' * y )
Układy nadokreślone w Octave możemy rozwiązywać używając także ,,\”.
c = A\ y
lub
wygodnych instrukcji
polyfit ( x, y,1)
polyfit(x,y,n) ( dla wielomianu stopnia n )
Nieliniowa aproksymacja średniokwadratowa
Często, zwłaszcza w Ekonometrii zachodzi potrzeba aproksymacji danych za pomocą
funkcji nieliniowych na przykład potęgowych ( funkcji typu Cobba-Douglasa):
g ( x ) = β xα
(7.7)
W tym przypadku równanie (7.7) logarytmujemy- sprowadzając do równania liniowego
log( g ( x)) = α log( x) + log( β )
(7.8)
Wprowadzając oznaczenia
G = log( g );
c1 = α ;
c2 = log( β );
X = log( x)
z (7.8) otrzymujemy
przy pomocy
G = c1 X + c2 .
Równanie to rozwiązujemy w Octave
polyfit(log(x),log(y),1).
Zadanie 0
Znajdź funkcje w sensie: liniowej, kwadratowej i nieliniowej ( potęgowej i exponent)
aproksymacji średniokwadratowej dla danych w tabeli 7.1.
Zadanie 1
Rozwiąż zadania 2 i 3 z instrukcji laboratoryjnej 6, stosując aproksymację
średniokwadratową. Wyciągnij odpowiednie wnioski. Którą z metod uzyskujesz
dokładniejsze wyniki i dlaczego? Odpowiedź uzasadnij.
Zadanie 2
Rozwiąż
zadanie
indywidualne z interpolacji splajnami
aproksymacją
średniokwadratową. Wyciągnij odpowiednie wnioski. Którą z metod uzyskujesz
dokładniejsze wyniki i dlaczego? Odpowiedź uzasadnij.
Zadanie 3
Ogólne zużycie wody w USA w bilionach galonów na dzień przedstawia tabela:
Rok
1930
1940
1950
1960
1970
Zużycie
wody
110.2
137.4
202.6
322.7
411.1
Stosując nieliniową aproksymację średniokwadratową za pomocą funkcji
f ( x) = β exp(α x) - oblicz zużycie wody w latach 1935, 1945,1955, 1965.
1 galon USA = 3.78541 dm3 .