Metoda nejmenˇ s´ıch ˇ ctverc˚ u ´ Uvod Metodu nejmenˇs´ıch ˇctverc˚ u pouˇz´ıv´ame, chceme-li namˇeˇren´ ymi (nebo jinak z´ıskan´ ymi) body proloˇzit kˇrivku, napˇr. pˇr´ımku. Tedy hled´ame takov´a re´aln´a ˇc´ısla a, b, aby graf funkce f (x) = ax + b nejl´epe proch´azel mezi dan´ ymi N body o souˇradnic´ıch (xi , yi ), kde i = 1, · · · , N . Poˇzadujeme, aby proloˇzen´e hodnoty f (xi ) = axi + b byly bl´ızk´e namˇeˇren´ ym hodnot´am yi . Tedy, aby souˇcet druh´ ych mocnin (ˇcili ˇctverc˚ u, odtud n´azev metody) odchylek proloˇzen´ ych hodnot od namˇeˇren´ ych hodnot byl co moˇzn´a nejmenˇs´ı. To znamen´a, aby funkce S(a, b) =
N X
(axi + b − yi )2
i=1
nab´ yvala minima. To nastane, budou-li obˇe jej´ı parci´aln´ı derivace nulov´e N
∂S X = 2a(axi + b − yi ) ∂a i=1 N
∂S X = 2(axi + b − yi ). ∂b i=1 Contents
First
Last
Prev
Next
Back
Close
Quit
Odtud dostaneme soustavu dvou rovnic pro nezn´am´e parametry a, b: a¯ x + b = y¯ 2 ¯ ax + b¯ x = xy, ¯ kde pruh znaˇc´ı pr˚ umˇern´e hodnoty N 1 X x¯ = xi N i=1 N 1 X y¯ = yi N i=1 N 1 X 2 2 ¯ x = x N i=1 i N 1 X xy ¯ = xi yi . N i=1
Mal´ y pˇ r´ıklad Napˇr. pro tˇri body (0, 0),
(1, 2),
(2, 3)
si sestav´ıme tabulku
Contents
First
Last
Prev
Next
Back
Close
Quit
x y xy x2 0 0 0 0 1 2 2 1 2 3 6 4 3 5 8 5 kde v posledn´ım ˇra´dku jsou souˇcty hodnot z pˇr´ısluˇsn´eho sloupeˇcku, coˇz jsou pr˚ umˇern´e hodnoty vyn´asoben´e poˇctem bod˚ u N = 3. Z n´ı sestav´ıme soustavu rovnic 3a + 3b = 5 5a + 3b = 8 (1) a jej´ım ˇreˇsen´ım jsou hledan´e parametry 3 2 1 b= . 6 a=
Takˇze hledan´a pˇr´ımka m´a rovnici 3 1 y = x+ . 2 6
Pouˇ zit´ı syst´ emu Maple A jak to lze spoˇc´ıst pomoc´ı syst´emu Maple? M˚ uˇzeme pouˇz´ıt pˇr´ıkaz leastsquare. Ten se nach´az´ı v bal´ıku stats v podbal´ıku fit. Spolu s pˇr´ıkazem leastsquare zad´ame jeˇstˇe ˇctyˇri upˇresnˇen´ı: Contents
First
Last
Prev
Next
Back
Close
Quit
• seznam promˇenn´ ych x, y, • rovnici funkce, jej´ıˇz graf prokl´ad´ame, • seznam parametr˚ u a, b, • namˇeˇren´a data jako seznam dvou seznam˚ u ˇc´ısel. Takˇze zad´ame tyto dva ˇr´adky: > with(stats): > fit[leastsquare[[x,y],y=a*x+b,{a,b}]]([[0,1,2],[0,2,3]]); 3x 1 y= + 2 6 Je povzbuzuj´ıc´ı, ˇze jsme obdrˇzeli stejn´ y v´ ysledek, jako pˇri ruˇcn´ım v´ ypoˇctu.
Predikce olympijsk´ ych v´ ysledk˚ u Pod´ıvejme se na pouˇzit´ı t´eto metody pro re´aln´a data. Jako pˇr´ıklad uvaˇzujme olympijsk´e v´ ysledky ve skoku o tyˇci v jednotliv´ ych letech (jak je uv´ad´ı World Almanac). Protoˇze je ˇc´ısel v´ıce, pˇriprav´ıme si je ´ nejprve do dvou seznam˚ u, kter´e pojmenujeme rok a vyska. Udaje o v´ yˇsce pot´e pˇrepoˇc´ıt´ame z palc˚ u na metry a v´ ysledek si pojmenujeme vyskam. To lze zadat takto: > rok:=[1896,1900,1904,1908,1912,1920,1924, > 1928,1932,1936,1948,1952,1956,1960,1964, > 1968,1972,1976,1980,1984,1988,1992]: > vyska:=[130,130,137.75,146,155.5,161,155.5, > 165.25,169.75,171.25,169.25,179,179.5,185,200.75, > 212.75,216.5,216.5,227.5,226.25,237.25,228.25]: Contents
First
Last
Prev
Next
Back
Close
Quit
vyskam:=0.0254 * vyska: Nejdˇr´ıve si data prohl´edneme. Pro vykreslen´ı grafu si z nich pˇriprav´ıme seznam dvojic pˇr´ıkazem > body:=convert(linalg[transpose]([rok,vyskam]),listlist): Samotn´ y graf pak vytvoˇr´ıme takto: > with(plots): > obr1:=listplot(body, style=POINT): A takto si jej prohl´edneme > display(obr1); >
6
5.5
5
4.5
4
3.5
1900
1920
1940
1960
Contents
1980
First
Last
Prev
Next
Back
Close
Quit
Nyn´ı pˇr´ıkazem leastsquare proloˇz´ıme pˇr´ımku > primka:=fit[leastsquare[[x,y],y=a*x+b,{a,b}]]([rok,vyskam]); primka := y = 0.02727079203 x − 48.43532721 Tu si lze tak´e prohl´ednout pˇr´ıkazem > obr2:=plot(rhs(primka),x=1896..2004): > display(obr2);
6
5.5
5
4.5
4
3.5
1900
1920
1940
1960
1980
2000
x
Contents
First
Last
Prev
Next
Back
Close
Quit
Zaj´ımavˇejˇs´ı je ale obr´azek, ve kter´em jsou namˇeˇren´a data souˇcasnˇe s proloˇzenou pˇr´ımkou. Ten vytvoˇr´ıme takto: > display({obr1,obr2});
6
5.5
5
4.5
4
3.5
1900
1920
1940
1960
1980
2000
x
M´ame-li takto vytvoˇren model (tak se ˇr´ık´a matematick´emu popisu experiment´aln´ıch dat), m˚ uˇzeme se pokusit ˇcinit pˇredpovˇedi. Budou-li se shodovat se skuteˇcnost´ı, bude to zn´amka, ˇze n´aˇs model je uˇziteˇcn´ y. V naˇsem pˇr´ıpadˇe se m˚ uˇzeme pokusit pˇredpovˇedˇet rekord ve skoku o tyˇci na letn´ıch olympijsk´ ych hr´ach v roce 2004 v Ath´en´ach: Contents
First
Last
Prev
Next
Back
Close
Quit
>
eval(rhs(primka),x=2004);
6.21534002 Podle naˇseho modelu by to mˇelo b´ yt pˇribliˇznˇe 6,22 m. Je samozˇrejm´e, ˇze od tohoto modelu nelze oˇcek´avat z´azraky. Napˇr. r˚ ust atletick´ ych v´ ykon˚ u nebude line´arn´ı s ˇcasem. Na druhou stranu u ˇrady pˇr´ırodn´ıch i technick´ ych proces˚ u lze nal´ezt ˇcasto pˇrekvapivˇe dobr´e modely pr´avˇe t´ımto postupem.
Pˇ r´ıklad:
Proloˇzte metodou nejmenˇs´ıch ˇctverc˚ u pˇr´ımku body, jejichˇz souˇradnice jsou uloˇzeny na disku v souboru uschovna. ˇ sen´ı: Reˇ Soubor uschovna zat´ım nem´ame, proto si jej vytvoˇr´ıme. Nejdˇr´ıve si pˇriprav´ıme x-ov´e s y-ov´e souˇradnice bod˚ u, napˇr. > xd:=[1,2,8,9]; xd := [1, 2, 8, 9] > yd:=[5,4,3,0]; yd := [5, 4, 3, 0] Tato data uloˇz´ıme do souboru uschovna pˇr´ıkazem save > save xd,yd,uschovna; Nyn´ı jsou data uloˇzena na disku poˇc´ıtaˇce. Pˇr´ıkazem restart uvedeme syst´em Maple do stavu, v jak´em je po spuˇstˇen´ı, tedy do stavu, kdy data nejsou uloˇzena v operaˇcn´ı pamˇeti syst´emu Maple. T´ım napodob´ıme situaci, kdy data vznikla dˇr´ıve, nez´avisle na naˇs´ı souˇcasn´e pr´aci. > restart; Pˇresvˇedˇc´ıme se, ˇze promˇenn´a xd neobsahuje ˇz´adn´a data Contents
First
Last
Prev
Next
Back
Close
Quit
>
xd;
xd Nyn´ı pˇr´ıkazem read naˇcteme data uloˇzen´a v textov´e podobˇe v souboru na disku > read uschovna; xd := [1, 2, 8, 9] yd := [5, 4, 3, 0] Snadno se pˇresvˇedˇc´ıme, ˇze promˇenn´a xd (a podobnˇe i promˇenn´a yd) nyn´ı obsahuje spr´avn´a data > xd; [1, 2, 8, 9] Nyn´ı naˇcteme bal´ık stats > with(stats): a pˇr´ıkazem leastsquare proloˇz´ıme pˇr´ımku > fit[leastsquare[[x,y], y=a*x+b, {a,b}]] ([xd,yd]); 23 x 53 y=− + 50 10
Contents
First
Last
Prev
Next
Back
Close
Quit