선형대수(Linear Algebra)

17-3. 정규직교기저 활용(정사영 계산)

frcn 2023. 6. 10. 21:24
반응형

(1) 정규직교기저로 정사영 계산하기

 

저번 글에서 정규직교기저가 좋은 좌표계, 즉 좌표를 쉽게 알 수 있는 좌표계를 만드는 것을 보았다.

 

정규직교기저를 활용하면 유용한 다른 이유들에 대해서 알아보자.

 

어떤 부분공간 V가 Rn의 부분공간이고, B = {v1, v2, ..., vk}라는 V의 정규직교집합 B가 있다.

 

x ∈ Rn 이면, x = v + w = projvx + w 와 같이 표현할 수 있었다.

 

이 때, v ∈ V 이고 w ∈ V⊥ 이다. (x는 V 상에 존재하는지 알 수 없다.)

 

기저 벡터들을 열로 가지고 있는 행렬 A가 있다고 하자.

 

A = [v1, v2, ..., vk] 행렬이라면, x를 부분공간 V에 정사영한 벡터를 찾기 위해서

 

projVx = A(ATA)-1ATx 라는 식을 계산해야 했다. (그림에서 실수로 A라고 썼다. AT가 맞음)

 

계산이 복잡하기 때문에, 정규직교집합을 활용하면 더 단순화될 수 있는지 알아보자.

 

벡터 v는 부분공간의 원소이므로 기저벡터들의 일차결합으로 나타낼 수 있다.

 

그래서 x = c1v1 + c2v2 + ... + ckvk + w 로 나타낼 수 있다.

 

이 때, 양변에 vi로 내적하면 어떻게 될까?

 

양변에 vi를 내적해주면,

 

vi · x = c1v1 ·vi + c2v2 ·vi + ... + civi ·vi + ... + ckvk ·vi + vi ·w

 

v들은 서로 직교하기 때문에 내적값이 0이고, 자기자신과의 내적은 1이다. (w도 직교한다.)

 

따라서, 

 

vi · x = ci

 

x가 V의 원소라면 ci들이 x의 좌표가 되지만, 여기서는 x가 V의 원소라고 가정하지 않았다.

 

그래서, x를 V에 투영한 값을 찾으려면, ci를 각각의 기저벡터들과 곱하는 것과 같다.

 

ci들의 값은 기저벡터와 벡터 x를 내적한 값이다. (이전 글에서 설명)

 

그래서 projVx = (v1·x)v1 + (v2·x)v2 + ... + (vk·x)vk

 

x를 어떤 직선 L 위에 투영할 때, L은 1의 길이를 지니는 어떤 단위벡터의 생성이 된다.

 

t는 어떤 실수이고, L = t*u로 표현할 수 있다.

 

부분공간의 정규직교기저를 다룰 때, Rn 내의 어떤 벡터를 부분공간에 투영하는 것이고, 이는 각 벡터들에 의해 생성되는 직선위로의 투영들을 찾는 것과 같다.

 

따라서, 개념적으로 x · v1에 v1을 곱하고, x · v2에 v2를 곱하고, k까지 해나가는 것과 같다.

 

projvx = (x · u)u 라고 표현할 수 있다.

 

이런 방법은 A(ATA)-1ATx로 계산하는 것보다 훨씬 간단하다.

 

 

개념적인 이야기는 너무 추상적이니, projVx = A(ATA)-1ATx 를 좀 더 단순화해서 식을 정규직교기저를 활용하는 식을 구해보자.

 

 projVx = A(ATA)-1ATx 에서 A = [v1, v2, ..., vk]라고 했다.

 

그러면 ATA는 [v1; v2; ...; vk] [v1, v2, ..., vk] = Ik 이다.

 

왜냐하면 (1,1)은 자기자신과의 내적이므로 1이고, (1, 2) (1, 3)은 v1 · v2, v1· v3와 같기 때문에 모두 0이 되기 때문이다.

 

이를 활용하면,

 

projVx = AIkATx = AATx 이다.

 

행렬이 되게 간단해진 것을 볼 수 있다.

 

여전히 행렬 곱셈을 해야하지만, 행렬의 전치를 찾는 것은 간단하며, 역행렬같은 복잡한 연산은 모두 사라졌다.

 

x를 V에 투영하는 것은 A와 AT의 곱인데, A는 열벡터들이 부분공간 V의 기저벡터인 행렬이다.

 

 

반응형