Približné riešenie - metóda najmenších štvorcov

Moderators: Martin Sleziak, Ludovit_Balko, Martin Niepel, Tibor Macko

Post Reply
Martin Sleziak
Posts: 5817
Joined: Mon Jan 02, 2012 5:25 pm

Približné riešenie - metóda najmenších štvorcov

Post by Martin Sleziak »

Vráťme sa ešte k tomuto typu úloh, ktorý sme robili na cvičení.

Vyskúšajme takýto problém.

Úloha. Nájdite približné riešenie X=(x1x2) sústavy Ax=B pre
A=(12120325)b=(3142).


Je to Exercise 6.5.3 z Lay: Linear Algebra and Its Applications (4th Edition).
Martin Sleziak
Posts: 5817
Joined: Mon Jan 02, 2012 5:25 pm

Re: Približné riešenie - metóda najmenších štvorcov

Post by Martin Sleziak »

Najbližší bod

Pre ľubovoľné X je výraz tvaru AX stĺpcový vektor, ktorý je lineárnou kombináciou stĺpcov matice A. Ak nevieme nijakou lineárnou kombináciou dostať vektor b, chceli by sme aspoň nájsť nejaký bod ˆb, ktorý je k nemu najbližší. To je vlastne kolmý priemet vektora b=(3,1,4,2) do podpriestoru [(1,1,0,2),(2,2,3,5)].

To vieme urobiť viacerými spôsobmi.
Napríklad ak by sa nám podarilo nájsť ortogonálnu bázu v1=(1,1,0,2), v2=(1,1,1,1) a z nej ortonormálnu bázu u1=16(1,1,0,2), u2=12(1,1,1,1), tak vieme vypočítať maticu projekcie
P=112(55315531333311311)
Spoiler:
P=16(1102110200002204)+14(1111111111111111)=112(55315531333311311)
Kolmý priemet potom môžeme vypočítať ako bP=(2,2,1,1).
Spoiler:
112(3,1,4,2)(55315531333311311)=112(24,24,12,12)=(2,2,1,1)
Ešte treba vyriešiť príslušnú sústavu
(122122031251)(10430113000000)
Spoiler:
(122122031251) (1220000113251) (10430113000251) (10430113000000)
Dostali sme približné riešenie (43,13).
Martin Sleziak
Posts: 5817
Joined: Mon Jan 02, 2012 5:25 pm

Re: Približné riešenie - metóda najmenších štvorcov

Post by Martin Sleziak »

Násobenie transponovanou maticou

Približné riešenie môžeme hľadať tak, že riešime sústavu ATAx=ATb.

Prečo to funguje?
Dôkaz môžete nájsť v Lay: Linear Algebra and Its Applications. (Vo Fourth Edition je to Theorem 6.5.13, v iných vydaniach sa možno môže číslovanie trochu líšiť.)
Skúsim k tomu ale stručne niečo povedať aj tu.
My chceme nájsť riešenie Ax=ˆb, kde ˆb je ortogonálny priemet do priestoru generovaného stĺpcami matice A.
To špeciálne znamená, že bˆb má byť kolmé na stĺpce matice A. Túto podmienku môžeme ekvivalentne prepísať ako AT(bˆb)=0.
Teda dostávame ATˆb=ATb.
Ak teda pre nejaké x má platiť Ax=ˆb, tak skutočne musí platiť aj rovnosť
ATAx=ATˆb=ATb.

Vidíme, že hľadané x skutočne vyhovuje sústave, ktorú sme uviedli vyššie. Na dokončenie dôkazu by sme mali ukázať aj obrátenú implikáciu - ak x vyhovuje tejto sústave, tak je to naozaj približné riešenie. (Zdôvodniť sa to dá do istej miery podobne - treba si uvedomiť čo nám táto rovnica hovorí o kolmosti vektora Axb na stĺpcový priestor matice A.)

Riešenie

V našom prípade dostaneme
ATA=(11022235)(12120325)=(66642)ATb=(11022235)(3142)=(66)


Riešením sústavy, ktorú sme takto získali, dostaneme
(6666426)(111171)(111062)(1110113)(10430113)
Približné riešenie sústavy je teda x1=43, x2=13.
Martin Sleziak
Posts: 5817
Joined: Mon Jan 02, 2012 5:25 pm

Re: Približné riešenie - metóda najmenších štvorcov

Post by Martin Sleziak »

Derivácie

Skúsme sa pozrieť na túto úlohu ako na minimalizáciu vhodnej funkcie a využiť to, že aby sa niekde nadobudlo minimum, tak nutne musia byť nulové parciálne derivácie: viewtopic.php?t=1428

Chceme minimalizovať funkciu g(x1,x2)=|AXB|2.
g(x1,x2)=(a11x1+a12x2b1)2+(a21x1+a22x2b2)2+(a31x1+a32x2b3)2g(x1,x2)x1=2a11(a11x1+a12x2b1)+2a21(a21x1+a22x2b2)+2a31(a31x1+a32x2b3)g(x1,x2)x2=2a12(a11x1+a12x2b1)+2a22(a21x1+a22x2b2)+2a32(a31x1+a32x2b3)

Po úprave dostaneme
(a211+a221+a231)x1+(a11a12+a21a22+a31a32)x2=a11b1+a21b2+a31b3(a11a12+a21a22+a31a32)x1+(a221+a222+a232)x2=a12b1+a22b2+a32b3


To isté zapísané inak - označme si a1=(a11,a21) a a2=(a12,a22). (T.j. zobrali sme stĺpce matice A.) Potom dostaneme:
g(x1,x2)=x1a1+x2a2b,x1a1+x2a2b=x21|a1|2+2x1x2a1,a2+x22|a1|2x1a1,bx2a2,b+|b|2

Pre parciálne derivácie potom dostaneme:
g(x1,x2)x1=2(|a1|2x1+a1,a2x2a1,b)g(x1,x2)x2=2(a1,a2x1+|a2|2x2a2,b)

čo nám dá sústavu
|a1|2x1+a1,a2x2=a1,ba1,a2x1+|a2|2x2=a2,b

Je to presne tá istá sústava, ktorú sme dostali pri predošlom postupe. (Stačí si uvedomiť že v ATA a v ATb skutočne vycházajú práve takéto skalárne súčiny.)

Konkrétne pre zadanú maticu máte a1=(1,1,0,2), a2=(2,2,3,5) a b=(3,1,4,2), čiže dostanete:
a1,a1=6
a1,a2=6
a2,a2=42
a1,b=6
a2,b=6
Z toho vyjde sústava:
(6666426)
Post Reply