[2주차 Day3] 07강: 벡터와 직교분해

pengu·2021년 5월 4일
0

KDT 배움기록

목록 보기
8/12
post-thumbnail

노션 기록

벡터에 대한 고찰

고등 교과과정부터 시작하기


nn-벡터는 크기와 방향을 가진 물리량으로 다음과 같이 표현될 수 있습니다

좌표계 없이 표현

  • v\bf v : 화살표로 표현
  • v\bf v의 크기 : 화살표의 길이 측정
  • v\bf v의 방향 : 화살표의 방향 측정

좌표계를 도입하여 표현

  • v=(v1,v2,,vn){\bf v} = (v_1, v_2, \cdots, v_n)
  • v\bf v의 크기 : v=v12+v22++vn2\Vert{\bf v}\Vert = \sqrt{v^2_1+v^2_2+\cdots+v^2_n}
  • v\bf v의 방향 : 1vv{1\over\Vert{\bf v}\Vert}\bf v



벡터의 내적(Inner product)


두 벡터 u\bf uv\bf v에 대한 내적(inner product 혹은 dot product)는 다음과 같이 정의된다.


좌표계 없이 표현

nn-벡터의 길이와 두 벡터 간의 사이각 θ\theta을 통해 다음과 같이 정의된다

uv=uvcosθ{\bf u \cdot v = \Vert u\Vert \Vert v\Vert} \cos\theta


좌표계를 도입하여 표현

u=(u1,u2,,un){\bf u} = (u_1, u_2, \cdots, u_n), v=(v1,v2,,vn){\bf v} = (v_1, v_2, \cdots, v_n)의 좌표값을 통해 다음과 같이 계산된다

uv=u1v1+u2v2++unvn{\bf u \cdot v} = u_1v_1 + u_2v_2 + \cdots + u_nv_n

두 벡터 u,v\bf u, \bf v간의 내적이 0이면 두 벡터는 직교(orthogonal)이다

uv=0uv{\bf u \cdot v}=0 \quad \Longleftrightarrow \quad {\bf u \bot v}

직교의 물리적 의미

uv{\bf u \bot v}일 때, u{\bf u} 방향으로의 전진은 v{\bf v} 방향에서 전혀 측정되지 않는다. 그 반대도 마찬가지이다.

** 고교 과정에서 배운 xyxy-좌표계나 xyzxyz-좌표계가 직교좌표계였음을 상기하도록 하자
서로가 독립적이다!



벡터의 투영(Projection)


두 벡터 u,a\bf u, a가 있을 때, 벡터 u\bf ua\bf a위에 투영한 벡터를 projau\rm proj\bf_a u 라 하고 다음과 같이 구한다

projau=(uaa)(1aa)=(uaa2)a\rm proj \bf_a u \quad = \quad \bf\left( {u \cdot a \over \Vert a \Vert}\right) \quad \left({1 \over \Vert a \Vert} \Vert a \Vert \right) \quad = \quad \left({u \cdot a \over \Vert a \Vert^2} \right)a
  • 길이

    • 투영한 벡터 projau\rm proj\bf_a u의 길이는 ucosθ\bf \Vert u \Vert\cos\theta

    • ua=uacosθ{\bf u \cdot a = \Vert u\Vert \Vert a\Vert} \cos\theta 이므로,

    • ucosθ=uaa\bf \Vert u \Vert\cos\theta = {\bf u \cdot a \over \Vert a\Vert}

  • 방향

    • 투영한 벡터 projau\rm proj\bf_a u의 방향은 a의 방향과 일치하므로 a의 방향을 구한다

    • 즉, 1aa\bf{ 1 \over \Vert a \Vert} \Vert a \Vert


스칼라와 벡터를 분리해서 적으면, (uaa2)a\bf \left({u \cdot a \over \Vert a \Vert^2} \right)a 가 되고, 스칼라 값은 벡터 a\bf a에 대한 스케일 값이 된다.

벡터 u\bf ua\bf a위에 투영하고 남은 보완 벡터(complement vector)는 uprojau\bf u - \rm proj\bf _a u 이다

중요한 점은 투영한 벡터와 보완벡터가 서로 직교한다는 것임!!
즉, 투영을 통해 두 벡터를 직교분할 할 수 있음!



벡터의 직교분해(Orthogonal Decomposition)


두 벡터 u,a\bf u, a가 있을 때, 투영과 보완의 개념을 이용해 직교분할 할 수 있다

projau(uprojau)u=projau+(uprojau){\rm proj\bf _a u \quad \bot \quad(\bf u - \rm proj\bf _a u)} \\ \bf u = \rm proj\bf _a u+(\bf u - \rm proj\bf _a u)



직교행렬(Orthogonal Matrix)

직교좌표계에 대한 행렬 표현

직교행렬(Orthogonal Matrix)이란?


행렬은 좌표계라는 의미를 이미 배웠다.

즉, 행렬은 각 열벡터가 기저(basis)를 이루는 좌표계(coordinate system)이다


직교행렬(orthogonal matrix)

주어진 행렬의 모든 열벡터가 서로 직교한다면(내적 = 0), 이 행렬을 직교행렬이라 한다

직교행렬은 직교좌표계를 의미한다

[1422][224217611]\begin{bmatrix} 1&4\\-2&2 \end{bmatrix} \quad \begin{bmatrix} 2&2&-4\\2&1&7\\6&-1&-1 \end{bmatrix}

정규직교행렬(orthonormal matrix)

주어진 행렬이 직교행렬이고 모든 열벡터의 크기가 1이라면 이 행렬을 정규직교행렬이라 한다

정규직교행렬은 정규직교좌표계를 의미한다

[15252515][111264661111676631116166]\begin{bmatrix} {1\over\sqrt 5}&{2\over\sqrt 5}\\-{2\over\sqrt 5}&{1\over\sqrt 5} \end{bmatrix} \quad \begin{bmatrix} {1\over\sqrt 11}&{2\over\sqrt 6}&-{4\over\sqrt 66}\\ {1\over\sqrt 11}&{1\over\sqrt 6}&{7\over\sqrt 66}\\ {3\over\sqrt 11}&-{1\over\sqrt 6}&-{1\over\sqrt 66} \end{bmatrix}

정규직교행렬을 회전행렬(rotation matrix) 이라고도 함
(x, y축을 회전시켜 놓은 것으로 생각할 수 있기 때문)



직교행렬(Orthogonal Matrix)을 이용한 선형시스템


선형시스템 Ax=bA\bf x= b에서 행렬 AA가 직교행렬(orthogonal matrix)이면, 해(solution) x\bf x역행렬 A1A^{-1}의 계산 없이 다음과 같이 구할 수 있다

  • x\bf xii-번째 요소는 투영(projection)으로 계산할 수 있다.

    • 즉, 벡터 b\bf b를 행렬 AA의 각 열벡터 ai{\bf a}_i에 투영한 연산 projaib{\rm proj} {\bf a}_i \bf b로부터 xi=baiai2x_i = {{\bf b \cdot a}_i\over \Vert{\bf a}_i \Vert ^2}임을 계산할 수 있다.
  • x\bf xii-번째 요소와 jj-번째 요소의 계산은 독립적이다.

    • 즉, x\bf x의 계산은 병렬처리 가능하다



정규직교행렬(Orthonormal Matrix)을 이용한 선형시스템


선형시스템 Ax=bA\bf x= b에서 행렬 AA가 정규직교행렬(orthonormal matrix)이면, 해(solution) x\bf x역행렬 A1A^{-1}의 계산 없이 다음과 같이 구할 수 있다

  • x\bf xii-번째 요소는 내적(inner product)으로 계산할 수 있다.

    • 정규직교행렬은 열벡터의 크기가 1이므로!

    • 즉, 벡터 b\bf b를 행렬 AA의 각 열벡터 ai{\bf a}_i에 투영한 연산 projaib{\rm proj} {\bf a}_i \bf b로부터 xi=baix_i = {\bf b \cdot a}_i임을 계산할 수 있다.

  • x\bf xii-번째 요소와 jj-번째 요소의 계산은 독립적이다.

    즉, x\bf x의 계산은 병렬처리 가능하다




QR 분해 : A = QR

주어진 행렬에서 정규직교행렬 추출

행렬분해(matrix decomposition)의 의미

주어진 행렬을 행렬분해된 상태로 가지고 있으면 여러모로 계산이 편한 경우가 많습니다

다음은 대표적인 행렬분해입니다

  • LULU분해 (LULU decomposition)
  • QRQR분해 (QRQR decomposition)
  • 특이값 분해(SVD, Sigular Value Decomposition)


QR분해 (QR decomposition)

QRQR분해는 주어진 행렬을 아래의 형태를 가지는 두 행렬의 곱으로 나누는 행렬분해입니다

행렬 QQRR은 그 특성에 따라 다음과 같이 불립니다

  • QQ : 정규직교행렬(orthonormal matrix)
  • RR : 상삼각행렬(upper traingular matrix)


주어진 행렬 AAQRQR분해되어 있으면 무엇이 장점일까요?

QRQR분해를 이용해 Ax=bA \bf x = b 문제를 아래와 같이 나타내면,

Ax=b(QR)x=bQ(Rx)=bQy=b,(,Rx=y)\begin{aligned} A{\bf x = b} &\Rightarrow (QR){\bf x = b} \Rightarrow Q(R{\bf x) = b}\\ &\Rightarrow Q{\bf y = b}, (단, R{\bf x = y}) \end{aligned}

선형시스템을 다음과 같이 두 단계로 간단히 해결할 수 있음을 알 수 있습니다




QR분해 (QR decomposition)의 의미


QRQR분해는 그람-슈미트 과정(Gram-Schmidt process)을 행렬로 코드화 한 것입니다

엄밀하게 말하자면,

  • QQ : 행렬 AA에서 정규직교성을 추출한 행렬
  • RR : 행렬 AA에서 정규직교성 추출 후 남은(residual) 상삼각행렬(upper traingular matrix)

여기서는 QRQR분해를 유도하는 수학적인 내용, 즉 그람-슈미트 과정(Gram-Schmidt process)은 다루지 않겠습니다. 다만, QRQR분해가 주어진 행렬에서 정규직교성을 추출하여 계산의 편의를 도모한다는 점을 기억하기 바랍니다.



QR분해 (QR decomposition)의 활용


QRQR분해는 다음의 이유로 활용됩니다.

  • 빠른 계산

    • 선형시스템 Ax=bA\bf x = b의 해를 구할 때, 정규직교행렬(orthonormal matrix) QQ를 이용한 계산 부분은 병렬처리로 빨리 계산할 수 있습니다.
    • 그러나, RR을 이용한 계산 부분은 병렬처리 할 수 없습니다
  • b\bf b가 자주 업데이트 되는 경우

    • 선형시스템 Ax=bA\bf x = b에서 행렬 AA는 고정되어 있고 b\bf b가 자주 변하는 문제가 종종 있습니다.

      이런 경우, 행렬 AA를 미리 QRQR로 분해해 둔다면, b\bf b가 업데이트 될 때마다 선형시스템의 해 x\bf x를 실시간으로 구할 수 있습니다


QRQR 분해 vs. LULU 분해

  • LULU 분해의 경우, 선형시스템을 풀 때 병렬처리 할 수 없습니다
  • QRQR 분해의 경우, QQ 행렬이 꽉찬 구조를 가진 행렬이므로 메모리 사용량이 많습니다
profile
꾸준하게

0개의 댓글