n-벡터는 크기와 방향을 가진 물리량 v=(v1,v2,⋯,vn) v의 크기 : ∣∣v∣∣=v12+v22+⋯+vn2 v의 방향 : ∣∣v∣∣1v
두 벡터 u와 v에 대한 내적 u⋅v=∣∣u∣∣∣∣v∣∣cosθ u⋅v=u1v1+u2v2+⋯unvn
두 벡터 u,v 간의 내적이 0이면 두 벡터는 직교 u⋅v=0⇔u⊥v
두 벡터 u,a가 있을 때, 벡터 u를 a 위에 투영한 벡터를 projau라고 하면,
projau=(∣∣a∣∣u⋅a)(길이)(∣∣a∣∣1a)(방향)=(∣∣a∣∣2u⋅a)a(기저a에대한좌표값)a
projau 길이 = ∣∣u∣∣cosθ=∣∣a∣∣u⋅a ( ∵u⋅a=∣∣u∣∣∣∣a∣∣cosθ )
projau 방향은 a와 방향이 같고 길이가 1이므로 ∣∣a∣∣1a
벡터 u를 a 위에 투영하고 남은 보완 벡터(complemetn vector)는 u− projau
두 벡터 u,a가 있을 때, 투영과 보완의 개념을 이용해 직교분할할 수 있다.
projau⊥(u - projau) u= projau+(u− projau)
직교행렬(orthogonal matrix)
주어진 행렬의 모든 열벡터가 서로 직교하는 행렬 [1−242]⎣⎢⎡22621−1−47−1⎦⎥⎤
정규직교행렬(orthonormal matrix)
주어진 행렬이 직교행렬이고 모든 열벡터의 크기가 1인 행렬 [51−525251]⎣⎢⎢⎡1111111136261−61−664667−661⎦⎥⎥⎤
선형시스템 Ax=b에서 행렬 A가 직교행렬이면, 해 x는 역행렬 A−1의 계산 없이 다음과 같이 구할 수 있다. x의 i-번째 요소는 투영으로 계산할 수 있다. 벡터 b를 행렬 A의 각 열벡터 ai에 투영한 연산 projaib로부터 xi=∣∣ai∣∣2b⋅ai를 계산할 수 있다. x의 i-번째 요소와 j-번째 요소의 계산은 독립적이므로 x의 계산은 병렬처리 가능하다.
만약 행렬 A가 정규직교행렬이면 내적을 통해 계산할 수 있다.
벡터 b를 행렬 A의 각 열벡터 ai에 투영한 연산 projaib로부터 xi=b⋅ai를 계산할 수 있다.
QR 분해 A=QR A를 정규직교행렬과 나머지를 분해하는 것 Ax=b⇒(QR)x=b⇒Q(Rx)=b⇒Qy=b
1. 내적으로 y를 구한다. Qy=b
2. 후방대치법으로 x를 구한다. Rx=y
Q : 행렬 A에서 정규직교성을 추출한 행렬 R : 행렬 A에서 정규직교성 추출 후 남은 상삼각행렬
선형시스템의 해를 구할 때, 정규직교행렬 Q를 이용한 부분은 병렬처리로 빨리 계산할 수 있다. 그러나 R를 이용한 계산 부분은 병렬처리할 수 없다.
QR 분해 vs LU 분해 LU 분해의 경우, 선형시스템을 풀 때 병렬처리 할 수 없다. QR 분해의 경우, Q 행렬이 꽉찬 구조를 가진 행렬이므로 메모리 사용량이 많다.