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