전체 목차 · 이전: Lecture 2 · 다음: Lecture 4
책과 강의
쪽수는 인쇄쪽수이며, 해당 절은 제공된 스캔본의 PDF 22–25번째 페이지에 걸쳐 있습니다. 강의 제목의 Q ′ Q' Q ′ 는 실수 행렬의 전치 Q T Q^T Q T 입니다. 복소수로 확장할 때에는 켤레전치가 필요합니다.
좋은 기저를 선택하면 좌표 계산이 쉬워집니다. 정규직교 기저에서는 좌표를 내적으로 구하고, 길이를 좌표 제곱의 합으로 계산할 수 있습니다. 이 성질이 QR, 최소제곱, 푸리에 변환, SVD를 연결합니다.
1. 직교와 정규직교를 구별하기
실수 벡터 u , v u,v u , v 가 직교한다는 것은 u T v = 0 u^Tv=0 u T v = 0 이라는 뜻입니다. 정규직교 벡터 집합은 서로 직교하면서 각각 길이가 1입니다.
q i T q j = { 1 i = j , 0 i ≠ j . q_i^Tq_j=\begin{cases}1&i=j,\\0&i\ne j.\end{cases}
q i T q j = { 1 0 i = j , i = j .
길이가 2인 두 수직 벡터는 직교하지만 정규직교는 아닙니다. 영벡터는 모든 벡터와 직교하지만 정규직교 집합에는 넣을 수 없습니다.
피타고라스 정리도 내적에서 나옵니다. u T v = 0 u^Tv=0 u T v = 0 이면
∥ u + v ∥ 2 2 = ∥ u ∥ 2 2 + 2 u T v + ∥ v ∥ 2 2 = ∥ u ∥ 2 2 + ∥ v ∥ 2 2 . \|u+v\|_2^2=\|u\|_2^2+2u^Tv+\|v\|_2^2
=\|u\|_2^2+\|v\|_2^2.
∥ u + v ∥ 2 2 = ∥ u ∥ 2 2 + 2 u T v + ∥ v ∥ 2 2 = ∥ u ∥ 2 2 + ∥ v ∥ 2 2 .
영이 아닌 실수 벡터 사이의 각도는 cos θ = u T v / ( ∥ u ∥ 2 ∥ v ∥ 2 ) \cos\theta=u^Tv/(\|u\|_2\|v\|_2) cos θ = u T v / ( ∥ u ∥ 2 ∥ v ∥ 2 ) 로 읽습니다.
2. 정규직교 열을 모으면 QᵀQ = I
Q = [ q 1 ⋯ q r ] ∈ R m × r Q=[q_1\ \cdots\ q_r]\in\mathbb R^{m\times r} Q = [ q 1 ⋯ q r ] ∈ R m × r 라 하겠습니다. Q T Q Q^TQ Q T Q 의 ( i , j ) (i,j) ( i , j ) 성분은 q i T q j q_i^Tq_j q i T q j 이므로
Q T Q = I r . \boxed{Q^TQ=I_r}.
Q T Q = I r .
이 식에는 두 가지 경우가 있습니다.
Q의 크기
성립하는 식
QQᵀ의 의미
m = r m=r m = r , 정사각형
Q − 1 = Q T Q^{-1}=Q^T Q − 1 = Q T , Q Q T = I m QQ^T=I_m Q Q T = I m
전체 공간의 항등변환
m > r m>r m > r , 열이 더 적음
Q T Q = I r Q^TQ=I_r Q T Q = I r
Q의 열공간으로 보내는 정사영
보통 직교행렬 이라는 이름은 정사각형 경우에 사용합니다. 열이 정규직교인 직사각형 행렬에는 왼쪽 역행렬 Q T Q^T Q T 가 있지만 양쪽 역행렬은 없습니다.
직접 구성한 예제는
q 1 = 1 2 [ 1 1 0 ] , q 2 = [ 0 0 1 ] , Q = [ 1 / 2 0 1 / 2 0 0 1 ] . q_1=\frac1{\sqrt2}\begin{bmatrix}1\\1\\0\end{bmatrix},\quad
q_2=\begin{bmatrix}0\\0\\1\end{bmatrix},\quad
Q=\begin{bmatrix}1/\sqrt2&0\\1/\sqrt2&0\\0&1\end{bmatrix}.
q 1 = 2 1 ⎣ ⎡ 1 1 0 ⎦ ⎤ , q 2 = ⎣ ⎡ 0 0 1 ⎦ ⎤ , Q = ⎣ ⎡ 1 / 2 1 / 2 0 0 0 1 ⎦ ⎤ .
이때 Q T Q = I 2 Q^TQ=I_2 Q T Q = I 2 이지만
Q Q T = [ 1 / 2 1 / 2 0 1 / 2 1 / 2 0 0 0 1 ] ≠ I 3 . QQ^T=\begin{bmatrix}1/2&1/2&0\\1/2&1/2&0\\0&0&1\end{bmatrix}\ne I_3.
Q Q T = ⎣ ⎡ 1 / 2 1 / 2 0 1 / 2 1 / 2 0 0 0 1 ⎦ ⎤ = I 3 .
3. 길이와 내적을 보존한다
x , y ∈ R r x,y\in\mathbb R^r x , y ∈ R r 에 대해
( Q x ) T ( Q y ) = x T Q T Q y = x T y . (Qx)^T(Qy)=x^TQ^TQy=x^Ty.
( Q x ) T ( Q y ) = x T Q T Q y = x T y .
따라서 ∥ Q x ∥ 2 = ∥ x ∥ 2 \|Qx\|_2=\|x\|_2 ∥ Q x ∥ 2 = ∥ x ∥ 2 이고, 영이 아닌 벡터 사이의 각도도 보존됩니다. 직사각형 Q Q Q 도 자신의 입력 공간에서는 길이를 보존합니다. 반대로 Q T Q^T Q T 는 임의의 R m \mathbb R^m R m 벡터를 줄일 수 있습니다. 열공간 밖의 성분을 버리기 때문입니다.
정사각 직교행렬에서는 det ( Q ) 2 = det ( Q T Q ) = 1 \det(Q)^2=\det(Q^TQ)=1 det ( Q ) 2 = det ( Q T Q ) = 1 이므로 행렬식은 + 1 +1 + 1 또는 − 1 -1 − 1 입니다. 직교행렬을 곱해도 직교행렬입니다.
( Q 1 Q 2 ) T ( Q 1 Q 2 ) = Q 2 T Q 1 T Q 1 Q 2 = I . (Q_1Q_2)^T(Q_1Q_2)=Q_2^TQ_1^TQ_1Q_2=I.
( Q 1 Q 2 ) T ( Q 1 Q 2 ) = Q 2 T Q 1 T Q 1 Q 2 = I .
길이 보존은 수치 계산에서 유리하지만, 유한 정밀도 연산의 반올림이나 표현 범위 문제까지 사라진다는 뜻은 아닙니다.
4. 정규직교 좌표와 정사영
b b b 가 Q Q Q 의 열공간 안에 있으면 b = Q c b=Qc b = Q c 이고
c = Q T b , c i = q i T b . c=Q^Tb,\qquad c_i=q_i^Tb.
c = Q T b , c i = q i T b .
일반적인 b ∈ R m b\in\mathbb R^m b ∈ R m 에서는 이 좌표로 원래 벡터를 완전히 복원하지 못할 수 있습니다. 대신 가장 가까운 열공간의 벡터
p = Q Q T b , e = b − p p=QQ^Tb,\qquad e=b-p
p = Q Q T b , e = b − p
를 얻습니다. Q T e = Q T b − Q T Q Q T b = 0 Q^Te=Q^Tb-Q^TQQ^Tb=0 Q T e = Q T b − Q T Q Q T b = 0 이므로 오차는 열공간 전체와 직교합니다.
위 예제에서 b = ( 2 , 0 , 3 ) T b=(2,0,3)^T b = ( 2 , 0 , 3 ) T 라면
Q T b = ( 2 , 3 ) T , p = ( 1 , 1 , 3 ) T , e = ( 1 , − 1 , 0 ) T . Q^Tb=(\sqrt2,3)^T,\quad p=(1,1,3)^T,\quad e=(1,-1,0)^T.
Q T b = ( 2 , 3 ) T , p = ( 1 , 1 , 3 ) T , e = ( 1 , − 1 , 0 ) T .
∥ b ∥ 2 2 = 13 \|b\|_2^2=13 ∥ b ∥ 2 2 = 1 3 , ∥ p ∥ 2 2 = 11 \|p\|_2^2=11 ∥ p ∥ 2 2 = 1 1 , ∥ e ∥ 2 2 = 2 \|e\|_2^2=2 ∥ e ∥ 2 2 = 2 로 피타고라스 정리도 확인됩니다.
가장 가깝다는 사실도 증명할 수 있습니다. 임의의 Q c Qc Q c 에 대해
∥ b − Q c ∥ 2 2 = ∥ e ∥ 2 2 + ∥ p − Q c ∥ 2 2 ≥ ∥ e ∥ 2 2 . \|b-Qc\|_2^2=\|e\|_2^2+\|p-Qc\|_2^2\ge\|e\|_2^2.
∥ b − Q c ∥ 2 2 = ∥ e ∥ 2 2 + ∥ p − Q c ∥ 2 2 ≥ ∥ e ∥ 2 2 .
서로 직교하는 두 성분으로 나누었기 때문입니다. 최소값은 c = Q T b c=Q^Tb c = Q T b 에서 얻습니다.
정사영 행렬 P = Q Q T P=QQ^T P = Q Q T 는
P T = P , P 2 = Q Q T Q Q T = P P^T=P,\qquad P^2=QQ^TQQ^T=P
P T = P , P 2 = Q Q T Q Q T = P
를 만족합니다. 한 번 투영한 결과를 다시 투영해도 바뀌지 않습니다. P P P 가 일반적으로 직교행렬인 것은 아닙니다. 투영에서 버린 성분은 되돌릴 수 없습니다.
5. Gram–Schmidt에서 QR로
독립인 두 열 a 1 , a 2 a_1,a_2 a 1 , a 2 를 정규직교화하려면 첫 방향을 정규화하고, 둘째 열에서 그 방향의 성분을 뺍니다.
q 1 = a 1 ∥ a 1 ∥ 2 , w 2 = a 2 − q 1 ( q 1 T a 2 ) , q 2 = w 2 ∥ w 2 ∥ 2 . q_1=\frac{a_1}{\|a_1\|_2},\quad
w_2=a_2-q_1(q_1^Ta_2),\quad
q_2=\frac{w_2}{\|w_2\|_2}.
q 1 = ∥ a 1 ∥ 2 a 1 , w 2 = a 2 − q 1 ( q 1 T a 2 ) , q 2 = ∥ w 2 ∥ 2 w 2 .
예를 들어
a 1 = [ 1 1 0 ] , a 2 = [ 1 1 2 ] a_1=\begin{bmatrix}1\\1\\0\end{bmatrix},\qquad
a_2=\begin{bmatrix}1\\1\\2\end{bmatrix}
a 1 = ⎣ ⎡ 1 1 0 ⎦ ⎤ , a 2 = ⎣ ⎡ 1 1 2 ⎦ ⎤
이면 q 1 q_1 q 1 은 위 예제와 같고, q 1 T a 2 = 2 q_1^Ta_2=\sqrt2 q 1 T a 2 = 2 , w 2 = ( 0 , 0 , 2 ) T w_2=(0,0,2)^T w 2 = ( 0 , 0 , 2 ) T , q 2 = ( 0 , 0 , 1 ) T q_2=(0,0,1)^T q 2 = ( 0 , 0 , 1 ) T 입니다. 따라서
[ a 1 a 2 ] = Q [ 2 2 0 2 ] ⏟ R . [a_1\ a_2]
=Q\underbrace{\begin{bmatrix}\sqrt2&\sqrt2\\0&2\end{bmatrix}}_R.
[ a 1 a 2 ] = Q R [ 2 0 2 2 ] .
일반적인 j j j 번째 단계는
w j = a j − ∑ i < j q i ( q i T a j ) , r i j = q i T a j ( i < j ) , r j j = ∥ w j ∥ 2 . w_j=a_j-\sum_{i<j}q_i(q_i^Ta_j),\qquad
r_{ij}=q_i^Ta_j\ (i<j),\qquad r_{jj}=\|w_j\|_2.
w j = a j − i < j ∑ q i ( q i T a j ) , r i j = q i T a j ( i < j ) , r j j = ∥ w j ∥ 2 .
w j = 0 w_j=0 w j = 0 이면 현재 열이 앞선 열들의 선형결합이므로 그대로 나눌 수 없습니다. 앞선 열만으로 이미 그 방향을 표현하고 있다는 신호입니다. 실제 계산에서는 거의 종속인 열에 주의해야 하며, 수정 Gram–Schmidt나 Householder QR 같은 방법으로 오차를 다룹니다.
6. 네 부분공간을 정사영으로 읽기
Lecture 2 의 관계를 다시 쓰면
R n = C ( A T ) ⊕ N ( A ) , R m = C ( A ) ⊕ N ( A T ) . \mathbb R^n=\mathcal C(A^T)\oplus\mathcal N(A),\qquad
\mathbb R^m=\mathcal C(A)\oplus\mathcal N(A^T).
R n = C ( A T ) ⊕ N ( A ) , R m = C ( A ) ⊕ N ( A T ) .
⊕ \oplus ⊕ 는 두 공간의 벡터를 더하는 표현이 유일하다는 뜻이며, 여기서는 두 공간이 서로 직교하기도 합니다. 행공간의 정규직교 기저를 V r V_r V r , 열공간의 정규직교 기저를 U r U_r U r 라고 쓰면
x r o w = V r V r T x , x n u l l = ( I − V r V r T ) x . x_{\rm row}=V_rV_r^Tx,\qquad
x_{\rm null}=(I-V_rV_r^T)x.
x r o w = V r V r T x , x n u l l = ( I − V r V r T ) x .
출력 쪽에서는 U r U r T b U_rU_r^Tb U r U r T b 와 ( I − U r U r T ) b (I-U_rU_r^T)b ( I − U r U r T ) b 로 나눕니다. 뒤의 성분이 0이어야 A x = b Ax=b A x = b 를 정확하게 풀 수 있습니다. Lecture 6 의 SVD는 이 두 정규직교 기저를 함께 제공합니다.
7. 회전과 반사
평면에서 각도 θ \theta θ 만큼 회전하는 행렬은
R θ = [ cos θ − sin θ sin θ cos θ ] . R_\theta=\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}.
R θ = [ cos θ sin θ − sin θ cos θ ] .
R θ T R θ = I R_\theta^TR_\theta=I R θ T R θ = I , det ( R θ ) = 1 \det(R_\theta)=1 det ( R θ ) = 1 입니다. 반면 diag ( 1 , − 1 ) \operatorname{diag}(1,-1) d i a g ( 1 , − 1 ) 은 x x x 축에 대한 반사이며 행렬식은 − 1 -1 − 1 입니다.
단위벡터 u u u 가 주어지면 Householder 반사 는
H = I − 2 u u T H=I-2uu^T
H = I − 2 u u T
입니다. H u = − u Hu=-u H u = − u 이고 u T z = 0 u^Tz=0 u T z = 0 인 모든 z z z 에는 H z = z Hz=z H z = z 입니다. 즉 u u u 에 수직인 초평면을 기준으로 반사합니다.
H T H = H 2 = I − 4 u u T + 4 u ( u T u ) u T = I . H^TH=H^2=I-4uu^T+4u(u^Tu)u^T=I.
H T H = H 2 = I − 4 u u T + 4 u ( u T u ) u T = I .
이러한 반사를 차례로 적용하면 벡터의 특정 성분을 0으로 만들 수 있어 QR 계산에도 쓰입니다.
8. Hadamard와 Haar: 평균과 차이를 분리하기
가장 작은 Hadamard 행렬을 정규화하면
Q H = 1 2 [ 1 1 1 − 1 ] . Q_H=\frac1{\sqrt2}\begin{bmatrix}1&1\\1&-1\end{bmatrix}.
Q H = 2 1 [ 1 1 1 − 1 ] .
Q H T x Q_H^Tx Q H T x 의 두 성분은 ( x 1 + x 2 ) / 2 (x_1+x_2)/\sqrt2 ( x 1 + x 2 ) / 2 , ( x 1 − x 2 ) / 2 (x_1-x_2)/\sqrt2 ( x 1 − x 2 ) / 2 입니다. 두 값을 평균 방향과 차이 방향으로 바꿔 표현하면서 길이를 보존합니다.
정규화 전 행렬이 H n T H n = n I H_n^TH_n=nI H n T H n = n I 를 만족하면
H 2 n = [ H n H n H n − H n ] H_{2n}=\begin{bmatrix}H_n&H_n\\H_n&-H_n\end{bmatrix}
H 2 n = [ H n H n H n − H n ]
도 H 2 n T H 2 n = 2 n I H_{2n}^TH_{2n}=2nI H 2 n T H 2 n = 2 n I 를 만족합니다. 이 구성으로 n = 2 k n=2^k n = 2 k 인 크기를 만들고 n \sqrt n n 으로 나누면 직교행렬이 됩니다.
길이 4인 신호에는 다음 정규직교 Haar 기저를 사용할 수 있습니다.
Q W = [ 1 / 2 1 / 2 1 / 2 0 1 / 2 1 / 2 − 1 / 2 0 1 / 2 − 1 / 2 0 1 / 2 1 / 2 − 1 / 2 0 − 1 / 2 ] . Q_W=\begin{bmatrix}
1/2&1/2&1/\sqrt2&0\\
1/2&1/2&-1/\sqrt2&0\\
1/2&-1/2&0&1/\sqrt2\\
1/2&-1/2&0&-1/\sqrt2
\end{bmatrix}.
Q W = ⎣ ⎢ ⎢ ⎡ 1 / 2 1 / 2 1 / 2 1 / 2 1 / 2 1 / 2 − 1 / 2 − 1 / 2 1 / 2 − 1 / 2 0 0 0 0 1 / 2 − 1 / 2 ⎦ ⎥ ⎥ ⎤ .
첫 열은 전체 평균, 둘째 열은 앞·뒤 절반의 차이, 나머지는 각 절반 안의 세부 차이를 나타냅니다. 정규화 전 열의 길이가 2 , 2 , 2 , 2 2,2,\sqrt2,\sqrt2 2 , 2 , 2 , 2 로 다르므로 모든 열을 같은 수로 나누면 안 됩니다.
9. Fourier 기저에서는 켤레전치를 쓴다
복소수에서는 z T z z^Tz z T z 가 길이의 제곱이 아닙니다. 예를 들어 z = ( 1 , i ) T z=(1,i)^T z = ( 1 , i ) T 이면 z T z = 0 z^Tz=0 z T z = 0 이지만 z z z 는 영벡터가 아닙니다. 올바른 내적은
z ∗ w = ∑ j z j ‾ w j , z ∗ z = ∑ j ∣ z j ∣ 2 . z^*w=\sum_j\overline{z_j}w_j,\qquad z^*z=\sum_j|z_j|^2.
z ∗ w = j ∑ z j w j , z ∗ z = j ∑ ∣ z j ∣ 2 .
∗ * ∗ 는 켤레전치를 나타냅니다. 복소수에서 직교행렬에 대응하는 유니터리 행렬 은 F ∗ F = I F^*F=I F ∗ F = I 를 만족합니다.
j , k = 0 , … , n − 1 j,k=0,\ldots,n-1 j , k = 0 , … , n − 1 에 대해
F j k = 1 n ω j k , ω = e 2 π i / n F_{jk}=\frac1{\sqrt n}\omega^{jk},\qquad
\omega=e^{2\pi i/n}
F j k = n 1 ω j k , ω = e 2 π i / n
로 정하면
( F ∗ F ) k ℓ = 1 n ∑ j = 0 n − 1 ω j ( ℓ − k ) = { 1 k = ℓ , 0 k ≠ ℓ . (F^*F)_{k\ell}=\frac1n\sum_{j=0}^{n-1}\omega^{j(\ell-k)}
=\begin{cases}1&k=\ell,\\0&k\ne\ell.\end{cases}
( F ∗ F ) k ℓ = n 1 j = 0 ∑ n − 1 ω j ( ℓ − k ) = { 1 0 k = ℓ , k = ℓ .
다른 주파수의 열이 직교하는 이유는 등비급수의 합이 0이기 때문입니다. 부호를 반대로 정의하는 DFT 관례도 있으며, 이 글의 정의에서는 분석 변환이 F ∗ F^* F ∗ , 복원이 F F F 입니다.
순환 이동 P ( x 0 , x 1 , … , x n − 1 ) T = ( x 1 , … , x n − 1 , x 0 ) T P(x_0,x_1,\ldots,x_{n-1})^T=(x_1,\ldots,x_{n-1},x_0)^T P ( x 0 , x 1 , … , x n − 1 ) T = ( x 1 , … , x n − 1 , x 0 ) T 에 대해 F F F 의 k k k 번째 열 f k f_k f k 는 P f k = ω k f k Pf_k=\omega^k f_k P f k = ω k f k 를 만족합니다. 즉 Fourier 기저는 순환 이동의 고유벡터입니다. 실수 직교행렬도 고유값과 고유벡터를 표현할 때 복소수가 필요할 수 있습니다.
10. 지정 문제 풀이 — I.5의 2, 4, 6번
2번: 이미 있는 방향을 빼기
단위벡터 u u u 에 대해 w = v − u ( u T v ) w=v-u(u^Tv) w = v − u ( u T v ) 라 놓으면
u T w = u T v − ( u T u ) ( u T v ) = 0. u^Tw=u^Tv-(u^Tu)(u^Tv)=0.
u T w = u T v − ( u T u ) ( u T v ) = 0 .
이것이 Gram–Schmidt의 핵심입니다. v v v 도 단위벡터라면 ∥ w ∥ 2 2 = 1 − ( u T v ) 2 \|w\|_2^2=1-(u^Tv)^2 ∥ w ∥ 2 2 = 1 − ( u T v ) 2 입니다. 단, u , v u,v u , v 가 평행하면 w = 0 w=0 w = 0 이므로 새로운 정규직교 벡터를 얻을 수 없습니다.
4번: 내적 보존에서 길이와 각도 보존까지
Q T Q = I Q^TQ=I Q T Q = I 이면 ( Q x ) T ( Q y ) = x T y (Qx)^T(Qy)=x^Ty ( Q x ) T ( Q y ) = x T y 입니다. y = x y=x y = x 를 대입하면 길이가 보존되고, 내적을 두 길이의 곱으로 나누면 영이 아닌 두 벡터 사이의 각도도 보존됩니다. 이 증명에는 Q Q T = I QQ^T=I Q Q T = I 가 필요하지 않으므로 정규직교 열을 가진 직사각형 Q Q Q 에도 적용됩니다.
6번: 순환 순열행렬의 역행렬
P = [ 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 ] . P=\begin{bmatrix}0&1&0&0\\0&0&1&0\\0&0&0&1\\1&0&0&0\end{bmatrix}.
P = ⎣ ⎢ ⎢ ⎡ 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 ⎦ ⎥ ⎥ ⎤ .
각 열은 서로 다른 표준기저 벡터이므로 P T P = I P^TP=I P T P = I 이고 P − 1 = P T P^{-1}=P^T P − 1 = P T 입니다. P P P 는 한 칸 순환 이동, P T P^T P T 는 반대 방향 한 칸 이동입니다. 네 번 이동하면 제자리이므로 P 4 = I P^4=I P 4 = I 도 성립합니다.
11. NumPy로 확인하기
import numpy as npQ = np.array([[1 / np.sqrt(2 ), 0. ], [1 / np.sqrt(2 ), 0. ], [0. , 1. ]]) b = np.array([2. , 0. , 3. ]) P = Q @ Q.T projection = P @ b residual = b - projection assert np.allclose(Q.T @ Q, np.eye(2 ))assert not np.allclose(P, np.eye(3 ))assert np.allclose(P @ P, P)assert np.allclose(projection, [1. , 1. , 3. ])assert np.allclose(Q.T @ residual, 0 )assert np.isclose(b @ b, projection @ projection + residual @ residual)A = np.array([[1. , 1. ], [1. , 1. ], [0. , 2. ]]) R = np.array([[np.sqrt(2 ), np.sqrt(2 )], [0. , 2. ]]) assert np.allclose(A, Q @ R)Haar = np.array([[.5 , .5 , 1 / np.sqrt(2 ), 0. ], [.5 , .5 , -1 / np.sqrt(2 ), 0. ], [.5 , -.5 , 0. , 1 / np.sqrt(2 )], [.5 , -.5 , 0. , -1 / np.sqrt(2 )]]) assert np.allclose(Haar.T @ Haar, np.eye(4 ))n = 4 k = np.arange(n) F = np.exp(2j * np.pi * np.outer(k, k) / n) / np.sqrt(n) shift = np.roll(np.eye(n), -1 , axis=0 ) assert np.allclose(F.conj().T @ F, np.eye(n))assert np.allclose(shift @ F, F @ np.diag(np.exp(2j * np.pi * k / n)))print ("Orthogonality, projection, QR, Haar, and Fourier checks passed." )
12. 복습 질문
Q T Q = I Q^TQ=I Q T Q = I 로부터 Q Q T = I QQ^T=I Q Q T = I 를 결론 내려면 어떤 조건이 더 필요한가?
정사영 오차가 열공간과 직교하면 왜 거리가 최소가 되는가?
Gram–Schmidt에서 정규화할 벡터가 0이 되는 것은 어떤 의미인가?
Householder 반사에서 바뀌는 방향과 그대로인 방향은 무엇인가?
Fourier 행렬에서 전치 대신 켤레전치를 사용해야 하는 이유는 무엇인가?
참고 자료
Gilbert Strang, Linear Algebra and Learning from Data , 2019. Part I, I.5, pp. 29–35 . 저자 공식 교재 페이지 .
MIT OpenCourseWare, 18.065, Spring 2018. Lecture 3 , 공식 강의 전사문 .
MIT OpenCourseWare, 읽기 목록 , 전체 문제집 . 지정 문제: I.5의 2, 4, 6번 .
이전: Lecture 2 · 전체 목차 · 다음: Lecture 4