선형대수(Linear Algebra)

8-6. 행렬벡터 곱으로 정사영 표현하기

frcn 2023. 3. 30. 10:07
반응형

(1) 단위벡터를 활용한 정사영 연산 간략화

 

이전 글에서 직선직선 위의 벡터 v, 임의의 벡터 x가 있을 때, 벡터 x를 정사영한 위치벡터를 구하는 방법을 알아봤다.

 

정사영 proj는 Rⁿ에서 Rⁿ으로 변환한다.

 

proj(x) = {(x·v) / (v·v)} v

 

v·v = ||v||² (자기 자신과의 내적은 길이의 제곱)으로 표현할 수 있기 때문에,

 

proj(x) = {(x·v) / ||v||²} v 로 표현할 수도 있다.

 

길이가 1이라면 계산이 간단해지기 때문에, 길이가 1인 벡터(단위벡터)를 활용해서 정사영 계산을 좀 더 간단하게 해보자.

 

단위벡터를 구하는 방법은 벡터를 벡터의 길이로 나누면 된다.

 

예를 들면, v = [2 1] 이라면 길이인 √5로 나눈 [2/√5 1/√5]가 단위벡터 u가 된다.

 

proj(x)

 

= {(x·u) / ||u||²} u

= (x·u) u

 

처럼 간단하게 표현할 수 있다.

 

 

 

(2) 정사영은 선형변환인가?

 

projection은 선형변환일까?

 

덧셈에 닫혀있는지와 스칼라곱에 닫혀있는지 알아보면 알 수 있다.

 

1. 덧셈 

proj(a+b)

= ((a+b) · u) u

= (a·u + b·u) u

= (a·u)u + (b·u)u

= proj(a) + proj(b)

 

벡터의 합의 투영과 벡터의 투영의 합이 같다. 따라서, 닫혀있다.

 

2. 스칼라 곱

proj(ca)

= (ca · u) u

= c(a · u) u

= c proj(a)

 

벡터의 곱의 투영이 벡터의 투영의 곱과 같다. 따라서, 닫혀있다.

 

투영이 선형변환이라는 것은 proj(x) = Ax 와 같이 행렬변환으로 표현할 수 있다는 뜻이다.

 

 

(3) 정사영의 행렬변환 표현

앞에서 정사영이 Ax와 같은 형태로 표현될 수 있다고 했다.

 

따라서, proj(x) = Ax = (x·u) u 이다.

 

A를 구한다면 쉽게 투영할 수 있다.

 

n차원에 대해서 할 수도 있지만, 간단하게 proj가 R² -> R² 일 때를 가정하고 A를 구해보자.

 

u = [u1, u2] (투영될 직선 위에 존재하는 벡터의 단위행렬)

 

A는 단위행렬의 열에 변환을 적용한 형태로 바꿔서 표현할 수 있다.

 

x = [1 0; 0 1] [x1 x2] 의 형태로 표현할 수 있기 때문에,

 

Ax = (x·u) u = [ ([1 0]·u) u, ([0 1]·u) u ] [x1 x2]= [ u1 u, u2 u] [x1 x2]= [ u1 [u1 u2], u2 [u1 u2] ] [x1 x2]= [ u1² u2u1; u1 u2 u2²] [x1 x2]

 

A = [ u1² u2u1; u1 u2 u2²]

 

 

 

실제 예시를 들어보자.

 

v = [2 1] 

x = [x1 x2] 이라면,

 

u = [2/√5 1/√5]

A = [4/5 2/5 ; 2/5 1/5]

 

x가 v를 포함하는 원점을 지나는 직선 L에 투영되면, [4/5 2/5 ; 2/5 1/5]x 가 된다.

 

*** 만약에 L이 원점을 안 지난다면, 선형변환이 되지 않기 때문에 이 같은 연산은 성립하지 않는다.

 

 

행렬벡터의 곱으로 표현하니, 투영의 연산이 엄청나게 빨라졌다.

 

 

 

반응형

'선형대수(Linear Algebra)' 카테고리의 다른 글

9-2. 행렬곱  (0) 2023.04.01
9-1. 선형변환의 합성(1)  (0) 2023.04.01
8-5. 정사영(Projection)  (0) 2023.03.29
8-4. 단위벡터(Unit Vector)  (0) 2023.03.28
8-3. 선형변환(R3에서의 회전)  (0) 2023.03.27