Rešitve 1. naloge, 3. teden
1. naloga
(a) Ker je rang razširjeme matrike sistema [A|b] enak 3, rang A pa enak 2, sistem Ax=b nima rešitev. Pravokotno projekcijo b na C(A) bomo dobili tako, da poiščemo rešitev x v smislu najmanjših kvadratov za Ax=b, potem je b1=Ax. Rešitev x po metodi najmanjših kvadratov najlažje poiščemo kot rešitev normalnega sistema ATAx=ATb. V našem primeru je ATA=[4−40−4400016] , ATb=[−4416].
Sistem A′x=b′ prav tako nima rešitev, rešitev pripadajočega normalnega sistema pa je x=[−1,1]T. Pripadajoča pravokotna projekcija je enaka kot prej; b′1=b1, kar bi lahko opazili hitreje, saj sta stolpčna prostora matrik A in A′ enaka.
(b) Poiskali bomo t.i. ekonomični singularni razcep A=USVT, v katerem je S kvadratna diagonalna matrika s singularnimi vrednostmi na diagonali, ena od ortogonalnih matrik U in V pa je pravokotna. Iz A=USVT sledi ATA=VS2VT (in tudi AAT=US2UT). (Zakaj?) To pomeni, da so kvadrati singularnih vrednosti matrike A ravno lastne vrednosti matrike ATA, tj. λi=σ2i za lastno vrednost λi matrike ATA in singularno vrednost σi matrike A, stolpci matrike V pa so ravno normirani lastni vektorji matrike ATA. Poiščimo najprej lastne vrednosti matrike ATA, te so ničle karakterističnega polinoma det(ATA−λI)=|4−λ−40−44−λ00016−λ|=−(16−λ)(8−λ)λ.
(c) Iz singularnega razcepa A=USVT Moore-Penroseov posplošeni inverz izračunamo po formuli A+=VS+UT, kjer so na diagonali matrike S+ vrednosti 1/σi, če je σi>0, in ničle za vsako ničelno singularno vrednost. V resnici lahko vedno uporabimo kar tanki SVD za A, tedaj je S′+=S′−1 in A+=V′S′−1U′T=18[−111−11−1−111−11−1].
Ker ima matrika A′ poln stolpčni rang, lahko njen Moore-Penroseov posplošeni inverz izračunamo po formuli A′+=(A′TA′)−1A′T. Dobimo A′+=18[−222−21−1−11].
(d) Najprej shranimo matriko A in vektor b:
octave:1> A = [-1 1 2; 1 -1 -2; 1 -1 2; -1 1 -2]
octave:2> b = [3; -3; 2; 0]
Klic
octave:3> [U, S, V] = svd(A)
poišče polni singularni razcep matrike A. Ekonomični SVD dobimo z:
octave:4> [U, S, V] = svd(A, "econ")
Če smo pozorni, opazimo, da je tretja singularna vrednost zelo majhna (reda velikosti strojne natančnosti), ni pa 0. Če bi naivno zaupali formuli, bi za Moore-Penroseov posplošeni inverz dobili
octave:5> Aplus = V*inv(S)*U'
kar je seveda daleč od našega rezultata. Singularne vrednosti, ki so le skoraj 0 zaradi zaokrožitvenih napak pri računih v plavajoči vejici, moramo interpretirati kot 0. Klic
octave:6> Aplus = pinv(A)
to upošteva in vrne enak rezultat kot smo ga dobili zgoraj.