본문 바로가기
개발 (AI)/선형대수

[행렬] 하우스홀더행렬

by 진현개발일기 2023. 5. 29.

■ 개념

하우스 홀더 행렬(Householder Matrix)은 어떤 행렬을 다른 형태로 변환할 때 사용하는 행렬 중 하나이다.

정사각행렬(n*n)이며 모든열이 정규 직교한다고 한다. 정규 직교는 나중에 배울 예정

 

■ 공식

 

위 공식을 따른다.

H는 하우스 홀더를 뜻하고  V는 벡터이다. T 수식은 전치이다.

vvT벡터의 외적이고 vTv벡터의 내적이다. I는 앞서 배운 단위 행렬(주대각원소가 1이고 나머지 0)이다.

 

1 0 2 3으로 구성된 벡터를 예로 계산해봤다. 먼저 벡터의 내적과 외적을 먼저 구해주고

 

앞서 구한 것들을 이용해 '단위행렬 - [(2 * 외적) / 내적]' 을 계산 해보면 아래 값이 나왔다.

 

■ 파이썬

내적과 외적을 구하는 함수

 

위 순서대로 계산기를 돌려보면 수치가 같다는 것을 확인했다.

 

(다른 예제)

임의의 숫자를 가진 다른 벡터로 먼저 손으로 계산 해보고 파이썬으로 증명해봤다.

V = 2, 0, 4, 6으로 계산해봤다

아 잠만 그냥 맘 가는대로 2 0 4 6 한거였는데 1, 0, 2, 3의 2를 곱한거다;; 그래서 결과값은 똑같았다.

 

 

(다른 예제)

 2 2 4 6의 벡터로 계산해봤다.

 

▼ 13/15 

 

▼ -2/15

▼ -4/15

▼ -6/15

▼ 2/15

▼ -12/15

 

▼ -3/15 (or -1/5)

근삿값으로 -0.199....는 맞는 값

위 값들을 보면 정확한 수치가 나온 것을 확인할 수 있다.

■ 넘파이

 

넘파이에선 내적, 외적을 구해주지만 하우스홀더를  바로 구해주는 함수가 따로 없어서 계산해줘야한다

 

 

 

▼ 2,2,4,6 벡터로 한 결과

 

'개발 (AI) > 선형대수' 카테고리의 다른 글

[행렬] 이중대각행렬  (0) 2023.05.29
[행렬] 토플리츠행렬  (0) 2023.05.28
[행렬] 삼각행렬  (0) 2023.05.28
[행렬] 영 행렬  (0) 2023.05.07
[행렬] 단위 행렬  (0) 2023.05.07