Problem Solving2010. 3. 4. 21:59

SVD


Ax=0 을 SVD를 이용하여 푸는 방법

우선 SVD란 matrix factorization으로 (M*N) matrix A를 아래와 같이 3개의 matrix의 곱으로 분해하는 것이다.


이제 SVD를 이용하여 Ax=0의 해를 구해 보면


이해를 돕기 위해 Matlab으로 한번 계산해 보았다.

A= [1,2,3,4,5;6,7,8,9,10;11,12,13,14,15]

A =

     1     2     3     4     5
     6     7     8     9    10
    11    12    13    14    15

>> [U,D,V]=svd(A)

U =

   -0.2017    0.8903    0.4082
   -0.5168    0.2573   -0.8165
   -0.8320   -0.3757    0.4082


D =

   35.1272         0         0         0         0
         0    2.4654         0         0         0
         0         0    0.0000         0         0


V =

   -0.3546   -0.6887   -0.5163   -0.0873    0.3548
   -0.3987   -0.3756    0.8226    0.1167    0.0983
   -0.4428   -0.0624   -0.0914   -0.3993   -0.7951
   -0.4870    0.2507   -0.2200    0.7977   -0.1237
   -0.5311    0.5638    0.0050   -0.4278    0.4658

>> U*U'

ans =

    1.0000    0.0000    0.0000
    0.0000    1.0000    0.0000
    0.0000    0.0000    1.0000

>> V*V'

ans =

    1.0000    0.0000    0.0000   -0.0000   -0.0000
    0.0000    1.0000   -0.0000    0.0000    0.0000
    0.0000   -0.0000    1.0000    0.0000    0.0000
   -0.0000    0.0000    0.0000    1.0000   -0.0000
   -0.0000    0.0000    0.0000   -0.0000    1.0000

>> x = V(:,5)

x =

    0.3548
    0.0983
   -0.7951
   -0.1237
    0.4658

>> solution = A*x

solution =

  1.0e-014 *

    0.0500
    0.1193
    0.1887

0은 아니지만 거의 0에 가까운 해를 구할 수 있다.

from GJS

Posted by rohs