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=[4404400016] , ATb=[4416].

Gaussova eliminacija na [ATA|ATb] pa da [110100110000].
Sledi, da je splošna rešitev x=[x21,x2,1]T, kjer je x2 poljubno realno število. Pravokotna projekcija b na C(A) je neodvisna od x2: b1=Ax=[3311].
 

Sistem Ax=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; b1=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λ4044λ00016λ|=(16λ)(8λ)λ.

Lastne vrednosti ATA so torej λ1=16, λ2=8 in λ3=0. Matrika S je torej S=[λ1000λ2000λ3]=[4000220000].
 Pripadajoče lastne vektorje dobimo kot (neničelne) rešitve homogenih sistemov (ATAλiI)v=0, ti so v1=[001],v2=[110],v3=[110].
Prvi je že normiran, druga dva pa ne, zato ju normiramo, preden jih vpišemo v matriko V: V=[v1,12v2,12v3]=12[011011200].
Poiskati moramo še matriko U. Iz A=USVT sledi AV=US. Iščemo katerokoli ortogonalno matriko U, da velja AV=[220220220220]=U[4000220000]=US.
Prva dva stolpca U sta torej povsem določena, tretjega pa lahko izberemo skoraj poljubno - matrika U mora biti ortogonalna. Dobimo (npr.) U=12[112112110110].
Ničelne singularne vrednosti lahko zanemarimo, saj nič ne prispevajo k matriki A. Če jih, dobimo ti. kompaktni oz. tanki singularni razcep matrike A, A=USVT, kjer je U=12[11111111],S=[40022],V=12[010120].
(Iz razcepa torej izpustimo vse ničelne singularne vrednosti ter pripadajoče leve in desne singularne vektorje.)

(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+=S1 in A+=VS1UT=18[111111111111].

Od tod dobimo A+b=12[112].
To pa je točno tista rešitev x iz (b) dela naloge, ki ima najmanjšo normo. (Preveri to!) 

Ker ima matrika A poln stolpčni rang, lahko njen Moore-Penroseov posplošeni inverz izračunamo po formuli A+=(ATA)1AT. Dobimo A+=18[22221111].

Velja seveda A+b=[1,1]T, kar je ravno rešitev sistema Ax=b v smislu linearne metode najmanjših kvadratov, ki smo jo poiskali v (a) delu naloge.

(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.

Zadnja sprememba: nedelja, 10. marec 2024, 20.55