노션 기록
벡터에 대한 고찰
고등 교과과정부터 시작하기
n-벡터는 크기와 방향을 가진 물리량으로 다음과 같이 표현될 수 있습니다
좌표계 없이 표현
- v : 화살표로 표현
- v의 크기 : 화살표의 길이 측정
- v의 방향 : 화살표의 방향 측정
좌표계를 도입하여 표현
- v=(v1,v2,⋯,vn)
- v의 크기 : ∥v∥=v12+v22+⋯+vn2
- v의 방향 : ∥v∥1v
벡터의 내적(Inner product)
두 벡터 u와 v에 대한 내적(inner product 혹은 dot product)는 다음과 같이 정의된다.
좌표계 없이 표현
두 n-벡터의 길이와 두 벡터 간의 사이각 θ을 통해 다음과 같이 정의된다
u⋅v=∥u∥∥v∥cosθ
좌표계를 도입하여 표현
u=(u1,u2,⋯,un), v=(v1,v2,⋯,vn)의 좌표값을 통해 다음과 같이 계산된다
u⋅v=u1v1+u2v2+⋯+unvn
두 벡터 u,v간의 내적이 0이면 두 벡터는 직교(orthogonal)이다
u⋅v=0⟺u⊥v
직교의 물리적 의미
u⊥v일 때, u 방향으로의 전진은 v 방향에서 전혀 측정되지 않는다. 그 반대도 마찬가지이다.
** 고교 과정에서 배운 xy-좌표계나 xyz-좌표계가 직교좌표계였음을 상기하도록 하자
서로가 독립적이다!
벡터의 투영(Projection)
두 벡터 u,a가 있을 때, 벡터 u를 a위에 투영한 벡터를 projau 라 하고 다음과 같이 구한다
projau=(∥a∥u⋅a)(∥a∥1∥a∥)=(∥a∥2u⋅a)a
-
길이
-
투영한 벡터 projau의 길이는 ∥u∥cosθ
-
u⋅a=∥u∥∥a∥cosθ 이므로,
-
∥u∥cosθ=∥a∥u⋅a
-
방향
-
투영한 벡터 projau의 방향은 a의 방향과 일치하므로 a의 방향을 구한다
-
즉, ∥a∥1∥a∥
스칼라와 벡터를 분리해서 적으면, (∥a∥2u⋅a)a 가 되고, 스칼라 값은 벡터 a에 대한 스케일 값이 된다.
벡터 u를 a위에 투영하고 남은 보완 벡터(complement vector)는 u−projau 이다
중요한 점은 투영한 벡터와 보완벡터가 서로 직교한다는 것임!!
즉, 투영을 통해 두 벡터를 직교분할 할 수 있음!
벡터의 직교분해(Orthogonal Decomposition)
두 벡터 u,a가 있을 때, 투영과 보완의 개념을 이용해 직교분할 할 수 있다
projau⊥(u−projau)u=projau+(u−projau)
직교행렬(Orthogonal Matrix)
직교좌표계에 대한 행렬 표현
직교행렬(Orthogonal Matrix)이란?
행렬은 좌표계라는 의미를 이미 배웠다.
즉, 행렬은 각 열벡터가 기저(basis)를 이루는 좌표계(coordinate system)이다
직교행렬(orthogonal matrix)
주어진 행렬의 모든 열벡터가 서로 직교한다면(내적 = 0), 이 행렬을 직교행렬이라 한다
직교행렬은 직교좌표계를 의미한다
[1−242]⎣⎢⎡22621−1−47−1⎦⎥⎤
정규직교행렬(orthonormal matrix)
주어진 행렬이 직교행렬이고 모든 열벡터의 크기가 1이라면 이 행렬을 정규직교행렬이라 한다
정규직교행렬은 정규직교좌표계를 의미한다
[51−525251]⎣⎢⎢⎡1111111136261−61−664667−661⎦⎥⎥⎤
정규직교행렬을 회전행렬(rotation matrix) 이라고도 함
(x, y축을 회전시켜 놓은 것으로 생각할 수 있기 때문)
직교행렬(Orthogonal Matrix)을 이용한 선형시스템
선형시스템 Ax=b에서 행렬 A가 직교행렬(orthogonal matrix)이면, 해(solution) x는 역행렬 A−1의 계산 없이 다음과 같이 구할 수 있다
정규직교행렬(Orthonormal Matrix)을 이용한 선형시스템
선형시스템 Ax=b에서 행렬 A가 정규직교행렬(orthonormal matrix)이면, 해(solution) x는 역행렬 A−1의 계산 없이 다음과 같이 구할 수 있다
-
x의 i-번째 요소는 내적(inner product)으로 계산할 수 있다.
-
x의 i-번째 요소와 j-번째 요소의 계산은 독립적이다.
즉, x의 계산은 병렬처리 가능하다
QR 분해 : A = QR
주어진 행렬에서 정규직교행렬 추출
행렬분해(matrix decomposition)의 의미
주어진 행렬을 행렬분해된 상태로 가지고 있으면 여러모로 계산이 편한 경우가 많습니다
다음은 대표적인 행렬분해입니다
- LU분해 (LU decomposition)
- QR분해 (QR decomposition)
- 특이값 분해(SVD, Sigular Value Decomposition)
QR분해 (QR decomposition)
QR분해는 주어진 행렬을 아래의 형태를 가지는 두 행렬의 곱으로 나누는 행렬분해입니다
행렬 Q와 R은 그 특성에 따라 다음과 같이 불립니다
- Q : 정규직교행렬(orthonormal matrix)
- R : 상삼각행렬(upper traingular matrix)
주어진 행렬 A가 QR분해되어 있으면 무엇이 장점일까요?
QR분해를 이용해 Ax=b 문제를 아래와 같이 나타내면,
Ax=b⇒(QR)x=b⇒Q(Rx)=b⇒Qy=b,(단,Rx=y)
선형시스템을 다음과 같이 두 단계로 간단히 해결할 수 있음을 알 수 있습니다
QR분해 (QR decomposition)의 의미
QR분해는 그람-슈미트 과정(Gram-Schmidt process)을 행렬로 코드화 한 것입니다
엄밀하게 말하자면,
- Q : 행렬 A에서 정규직교성을 추출한 행렬
- R : 행렬 A에서 정규직교성 추출 후 남은(residual) 상삼각행렬(upper traingular matrix)
여기서는 QR분해를 유도하는 수학적인 내용, 즉 그람-슈미트 과정(Gram-Schmidt process)은 다루지 않겠습니다. 다만, QR분해가 주어진 행렬에서 정규직교성을 추출하여 계산의 편의를 도모한다는 점을 기억하기 바랍니다.
QR분해 (QR decomposition)의 활용
QR분해는 다음의 이유로 활용됩니다.
-
빠른 계산
- 선형시스템 Ax=b의 해를 구할 때, 정규직교행렬(orthonormal matrix) Q를 이용한 계산 부분은 병렬처리로 빨리 계산할 수 있습니다.
- 그러나, R을 이용한 계산 부분은 병렬처리 할 수 없습니다
-
b가 자주 업데이트 되는 경우
-
선형시스템 Ax=b에서 행렬 A는 고정되어 있고 b가 자주 변하는 문제가 종종 있습니다.
이런 경우, 행렬 A를 미리 QR로 분해해 둔다면, b가 업데이트 될 때마다 선형시스템의 해 x를 실시간으로 구할 수 있습니다
QR 분해 vs. LU 분해
- LU 분해의 경우, 선형시스템을 풀 때 병렬처리 할 수 없습니다
- QR 분해의 경우, Q 행렬이 꽉찬 구조를 가진 행렬이므로 메모리 사용량이 많습니다