본문 바로가기
수치해석

불완전한 시스템

by aqua_marri 2024. 1. 10.

 
⦁ 펜로즈 특성 확인

A = np.array([[-85, -55, -115],
              [-35, 97, -167],
              [79, 56, 102],
              [63, 57, 69],
              [45, -8, 97.5]])
              
# 특이값 분해
U, D, Vt = np.linalg.svd(A, full_matrices=True)
V = Vt.T
Ut = U.T

# 재구성 확인 A = U*D*Vt
Dmat = np.zeros(A.shape, dtype=complex)
Dmat[:D.shape[0], :D.shape[0]]=np.diag(D)
np.allclose(A, np.dot(U, np.dot(Dmat, Vt)))

# 유사역행렬 D+
Dp = np.linalg.pinv(Dmat)

# 유사역행렬 A+
Ap = np.linalg.pinv(A)

np.allclose(Ap, np.dot(V, np.dot(Dp, Ut)))

# 펜로즈 특성 확인 
# 1
np.allclose(A, np.dot(A, np.dot(Ap, A)))

# 2
np.allclose(Ap, np.dot(Ap, np.dot(A, Ap)))

# 3
np.allclose(np.dot(A, Ap), np.dot(A, Ap).T)

# 4
np.allclose(np.dot(Ap, A), np.dot(Ap, A).T)

'수치해석' 카테고리의 다른 글

선탐색 - 최소브래킷법, 황금분할탐색법, 피보나치탐색법  (0) 2024.01.10
단일함수 해석  (0) 2024.01.10
체비셰프 다항식  (0) 2024.01.10
비선형최소제곱법  (0) 2024.01.10
선형최소제곱법  (0) 2024.01.09