Difference between revisions of "Definition:벡터의 직교와 사영"

From Beloveds
 
(98 intermediate revisions by the same user not shown)
Line 1: Line 1:
두 벡터 a, b가 피타고라스의 정리 a2+b2=ab2를 만족할 때 '''orthogonal'''(직교)이라 하고 ab라 쓴다. a2=ia2i=aTa이므로 두 벡터가 직교할 조건은 2iaibi=0이다. 여기에서 좌변의 aTb를 두 벡터의 '''dot product'''(점곱) 또는 '''scalar product'''라 하며 이는 inner product를 이룬다. 그렇다면 두 벡터 a, b에 대해서 비율 aTb/aTaaTbaTbaTaaTa=0이므로 a(baTbaTaa)를 만족시킨다. 즉 aTbaTaaca들 가운데 b에 가장 가까운 벡터이다. 이를 ba로의 '''projection'''(사영)이라 하고 projab라 쓴다.
+
두 벡터 a, b가 피타고라스의 정리 a2+b2=ab2를 만족할 때 '''orthogonal'''(직교)이라 하고 ab라 쓴다. a2=ia2i=aTa이므로 두 벡터가 직교할 조건은 2iaibi=0이다. 여기에서 좌변의 aTb를 두 벡터의 '''dot product'''(점곱) 또는 '''scalar product'''라 하며 이는 inner product를 이룬다. 그렇다면 두 벡터 a, b에 대해서 비율 $a^Tb/(a^Ta)\displaystyle a^Tb-\frac{a^Tb}{a^Ta}a^Ta=0\displaystyle a \perp \left(b-\frac{a^Tb}{a^Ta}a\right).\displaystyle \frac{a^Tb}{a^Ta}acab.baprojection()\operatorname{proj}_a b$라 쓴다. Rn의 두 벡터 a, b의 사잇각 θprojab=(bcosθ)a를 만족하므로 aTb=abcosθ이다.<ref>https://en.wikipedia.org/wiki/Direction_cosine</ref>
  
 
[(aTb)a]i=a1b1ai++anbnai[(aaT)b]i=(aia1aia2aian)b=aia1b1++aianbn가 같으므로 a로의 projection은 outer product<ref>https://en.wikipedia.org/wiki/Outer_product</ref>를 하여 벡터 b에 작용하는 연산자로 볼 수 있다:
 
[(aTb)a]i=a1b1ai++anbnai[(aaT)b]i=(aia1aia2aian)b=aia1b1++aianbn가 같으므로 a로의 projection은 outer product<ref>https://en.wikipedia.org/wiki/Outer_product</ref>를 하여 벡터 b에 작용하는 연산자로 볼 수 있다:
 
: aaTaTa=1a2[a1a1a1a2a1ana2a1a2a2a2anana1ana2anan]
 
: aaTaTa=1a2[a1a1a1a2a1ana2a1a2a2a2anana1ana2anan]
이러한 행렬을 '''projection matrix'''(사영 행렬)라 한다. 사영 행렬 P에 대해서 PT=P이고 P2=P이다.
+
이 행렬은 열 공간이 ca들이므로 rank가 1이다. 또한 다음이 성립한다.
 +
* PT=P이다. 따라서 행 공간과 열 공간이 같아 null space가 a에 직교한다.<ref>https://math.stackexchange.com/questions/456354/why-is-a-projection-matrix-symmetric</ref>
 +
* P2=P이다. $P^2_{ij}=a_i(a^Ta)a_j/(a^Ta)=P_{ij}$로 보일 수 있다.
 +
 
 +
PT=P이고 P2=P인 모든 행렬은 rank가 무엇이든 (bPb)TPx=bT(IP)TPx=bT(PP2)x=0이므로 PbbP의 column space로의 '''orthogonal projection'''(정 사영)이다. PT=P가 아니어도 P를 '''projection matrix'''(사영 행렬)라 한다.<ref>http://optics.szfki.kfki.hu/~psinko/alj/menu/04/nummod/Projection_Matrices.pdf</ref>
  
 
== Cauchy–Schwarz inequality ==
 
== Cauchy–Schwarz inequality ==
부등식 bprojab20baTbaTaa2=(bTaTbaTaaT)(baTbaTaa)=bTb2(aTbaTa)(aTb)+(aTbaTa)2(aTa)=(bTb)(aTa)(aTb)20로 전개할 수 있다. 이를 '''Cauchy–Schwarz inequality'''(코시-슈바르츠 부등식)라 한다.
+
부등식 bprojab20다음과 같이 전개할 수 있다:
 +
: $\displaystyle \left\|b-\frac{a^Tb}{a^Ta}a\right\|^2=\left(b^T-\frac{a^Tb}{a^Ta}a^T\right)\left(b-\frac{a^Tb}{a^Ta}a\right)=b^Tb-2\left(\frac{a^Tb}{a^Ta}\right)(a^Tb)+\left(\frac{a^Tb}{a^Ta}\right)^2(a^Ta)=\frac{(b^Tb)(a^Ta)-(a^Tb)^2}{a^Ta}\geq 0$
 +
이 결과 ab|aTb|'''Cauchy–Schwarz inequality'''(코시-슈바르츠 부등식)라 한다. 확률 변수 X, Y로 나타낼 때 Var(X)Var(Y)Cov(X, Y)2이며 X, Y의 내적을 E[XY]라 정의할 때 E[X2]E[Y2]E[XY]2이다.<ref>https://en.wikipedia.org/wiki/H%C3%B6lder%27s_inequality</ref>
 +
 
 +
* Rn의 두 벡터의 사잇각 θ에 대해서 Cauchy–Schwarz inequality는 |cosθ|1이라는 뜻이다. 부등식의 등호는 두 벡터가 평행할 때 성립한다.
 +
* 벡터 a=(x, y), b=(y, x)에 대해서 x2+y2|2xy|이다. forward–backward induction을 쓰면 산술-기하 평균 부등식을 얻는다.<ref>https://math.stackexchange.com/questions/2520981/is-there-a-proof-of-the-am-gm-inequality-via-cauchys-inequality-or-vice-versa?noredirect=1&lq=1</ref>
 +
* 실수 a1, a2, a3에 대해서 (a21+a22+a23)(a22+a23+a21)(a1a2+a2a3+a3a1)2이므로 양의 실수 a1, a2, a3에 대해서 (a1+a2+a3)23(a1a2+a2a3+a3a1)이다.
 +
* 양의 실수 a1, , an, b1, , bn에 대해서 ia2iai+bii(ai+bi)(iai)2이므로 iai=ibi일 때 ia2iai+bi12iai이다.
 +
* 실수 a1, , an과 양의 실수 b1, , bn에 대해서 (b1+b2)(a21b1+a22b2)(a1+a2)2이므로 ia2ibi(iai)2ibi이다. 따라서 1b+c+1c+a+1a+b92(a+b+c)이다.<ref>https://en.wikipedia.org/wiki/Nesbitt%27s_inequality</ref>
 +
* XT=X이고 PT=P이면 Y=iP일 때 YT=P이므로 XψYψ+YψXψ|ψTXYψψTYXψ|=|ψTXPψψTPXψ|이다. momentum operator P는 단위를 맞추도록 가 있고 PT=P가 되도록 i도 있는 differential operator이다.<ref>https://physics.stackexchange.com/questions/16678/if-all-the-eigenvalues-of-an-operator-are-real-is-the-operator-hermitian</ref> XPPX=iI이므로 ψ2=ψT1i(XPPX)ψ=1i(ψTXPψψTPXψ)이다. 따라서 XψψPψψ2이며 이를 '''uncertainty principle'''(불확정성 원리)이라고 한다.
 +
 
 +
== 전치 행렬 ==
 +
* Ax, y=x, ATy이다. 내적이 주어지면 이를 A의 transpose AT의 정의로 삼을 수 있다.
 +
* (AB)T=BTAT이다. A(Bx), y=Bx, ATy=x, BT(ATy)로 보일 수 있다.
 +
* AT=A, BT=B이면 (AB)T=AB일 때 AB=(AB)T=BTAT=BA이고 AB=BA일 때 (AB)T=BTAT=BA=AB이다.<ref>https://en.wikipedia.org/wiki/Commuting_matrices</ref>
 +
* (AT)1=(A1)T이다. AT(A1)T=(A1A)T=I=(AA1)T=(A1)TAT로 보일 수 있다.
 +
* ATAx=0이면 Ax=0이다. ATAx=0이면 xTATAx=0에서 (Ax)TAx=Ax2=0으로 보일 수 있다. 이는 AT의 null space와 A의 column space가 직교 여공간이기 때문이다. 따라서 A의 각 열이 독립이면 Ax=0일 때 x=0이므로 (ATA)1이 존재한다. 마찬가지로 AATx=0이면 ATx=0이고, A의 각 행이 독립이면 ATx=0일 때 x=0이므로 (AAT)1이 존재한다. 이는 Ax=b의 해 x가 row space의 원소일 때 xA의 row들의 linear combination으로 나타내어 AATx=b를 만족시키는 ATx=x로 쓰면 해 x가 존재하는데, 그러한 x가 유일하다는 뜻이다.
 +
* (ATA)T=ATA이고 (AAT)T=AAT이다.
 +
* AAT=ATA이면<ref>https://en.wikipedia.org/wiki/Normal_matrix</ref> 모든 x에 대해서 Ax=ATx이다. Ax2=(Ax)T(Ax)=xTATAx, ATx2=(ATx)T(ATx)=xTAATx로 보일 수 있다.
  
삼각 함수의 덧셈 정리 또는 law of cosines를 이용하여 두 벡터의 사잇각 $\theta$에 대해서 $a^Tb=\|a\|\|b\|\cos\theta$를 얻을 수 있다.<ref>https://en.wikipedia.org/wiki/Direction_cosine</ref> 즉 내적이 $0$보다 크면 $|\theta|<\pi/2$이고, 내적이 0보다 작으면 $|\theta|>\pi/2$이다. 이에 따라 Cauchy–Schwarz inequality는 $|\cos\theta|\leq 1$과 같으므로 부등식의 등호는 두 벡터가 평행할 때 성립한다.
+
== 직교 행렬 ==
 +
0이 아닌 n개의 벡터 vi가 각각 나머지 n1개의 벡터와 모두 직교할 때, 벡터들의 일차 결합과 $v_i$를 내적하면 $v_i^Tv_i0v_i=0$인 경우밖에 없다. 따라서 $n$개의 벡터가 서로 직교하면 linear independent이다. 직교하는 $n$개의 벡터들이 일차 결합하여 공간의 모든 벡터를 유도할 수 있을 때 '''orthogonal basis'''(직교 기저)라 하고, $\|v_i\|=1$이면 '''orthonormal basis'''(정규 직교 기저)라 한다. $v_1, \cdots,\ v_nx$를 다음과 같이 나타낼 수 있다:
 +
: $x=v_1^Txv_1+v_2^Txv_2+\cdots+v_n^Txv_n$
  
== 직교군 ==
+
정규 직교 기저의 각 벡터가 각 열을 이루는 '''정사각 행렬'''을 '''orthogonal matrix'''(직교 행렬) 또는 '''orthonormal matrix'''라 한다. 어떤 벡터들이 정규 직교라는 것은 각 원소 vi
0이 아닌 n개의 벡터 vi각각 나머지 $n-1$개의 벡터와 모두 직교할 때, 벡터들의 일차 결합과 $v_i$를 내적하면 $v_i^Tv_i$ 항만 남으므로 일차 결합이 $0$인 경우는 $v_i=0$인 경우밖에 없다. 따라서 $n$개의 벡터가 서로 직교하면 linear independent이다. 직교하는 $n$개의 벡터들의 일차 결합으로 공간의 모든 벡터를 유도할 수 있으면 '''orthogonal basis'''(직교 기저)라 하고, 각 $\|v_i\|=1$이면 '''orthonormal basis'''(정규 직교 기저)라 한다. 정규 직교 기저의 각 벡터가 각 열을 이루는 행렬을 '''orthogonal matrix'''(직교 행렬) 또는 '''orthonormal matrix'''라 하며 n×n 직교 행렬들은 '''orthogonal group'''(직교군)을 이루어 O(n)라 쓴다. R2에서 orthogonal matrix는 회전 행렬들이다:
+
: $v_i^Tv_j=\begin{cases} 0 \quad (i\neq j)\\ 1 \quad (i=j)\end{cases}$
 +
를 만족한다는 뜻이므로 orthogonal matrix $Q$에 대해서 $Q^TQ=I$이다. 따라서 정사각 행렬 $Q$의 각 열이 정규 직교이면 $Q^{-1}=Q^T$이므로 각 행도 정규 직교이다. $Q_1,\ Q_2(Q_1Q_2)^{-1}=(Q_1Q_2)^T$이므로 $Q_1Q_2$직교 행렬이다. 또한 $|\det Q|=1$이고 $(Qa)^T(Qb)=a^TbQ$는 벡터의 길이, 내적, 각도를 보존시킨다. n×n 직교 행렬들은 '''orthogonal group'''(직교군) $\mathsf{O}(n)$을 이룬다. R2에서 회전 행렬들
 
: v1=(cosθ, sinθ), v2=(sinθ, cosθ)
 
: v1=(cosθ, sinθ), v2=(sinθ, cosθ)
직교 행렬 $QQ^{-1}=Q^T$이다.
+
과 permutation matrix들은 orthogonal matrix이다.
 +
 
 +
=== QR 분해 ===
 +
일차 독립인 n개의 벡터 vi를 정규 직교인 n개의 벡터 qi로 만들고자 하면 $q_1=v_1/\|v_1\|$에 대해서 q2=(v2qT1v2q1)/v2qT1v2q1라 하고 또 q3=(v3qT1v3q1qT2v3q2)/v3qT1v3q1qT2v3q2, 와 같이 n단계를 반복할 수 있다. 여기에서 qTivqi=qiprojqiv=projqiv이며 이렇게 각 열이 qi인 행렬 $QGramSchmidtprocess().t_i=v_i-q_1^Tv_iq_1-\cdots-q_{i-1}^Tv_iq_{i-1}\|t_i\|q_i=t_i\|t_i\|=q_i^Tt_i\|t_i\|=q_i^Tv_i.nv_iq_1,\ \cdots,\ q_i$들의 일차 결합으로 쓸 수 있다:
 +
: vi=qT1viq1+qT2viq2++qTiviqi
 +
따라서 m개의 열들 vi가 일차 독립인 n×m 행렬은 n×m 행렬과 m×m 행렬의 곱이다.
 +
: $\displaystyle \begin{bmatrix} v_1 & v_2 & \cdots & v_m\end{bmatrix}=
 +
[q1q2qm]
[qT1v1qT1v2qT1vm0qT2v2qT2vm00qTmvm]
$
 +
이를 A=QR처럼 쓰며 '''QR decomposition'''(QR 분해)라고 한다. R은 upper triangular matrix이고 $n=mQorthogonalmatrix.\mathsf{GF}(2)$에서는 Gram–Schmidt process를 쓸 수 없다.<ref>https://math.stackexchange.com/questions/1346664/how-to-find-orthogonal-vectors-in-gf2, https://math.stackexchange.com/questions/2888728/factorization-of-matrices-over-gf2</ref> semisimple Lie group에서는 Iwasawa decomposition을 할 수 있다.<ref>https://en.wikipedia.org/wiki/Iwasawa_decomposition</ref>
 +
 
 +
=== 함수 근사 ===
 +
함수 공간에서 두 벡터의 내적을 두 함수의 적당한 곱의 동일한 구간에서의 적분으로 정의할 수 있다. enxi들은 L2([π, π])에서 orthonormal basis를 이루므로 Fourier series는 어떤 함수를 각 기저에 사영하여 그 합으로 근사할 수 있다. 그러나 다항식 $x^n,\ x^{n-1},\ \cdots,\ 1x^2,\ x,\ 1.[0,\ 1]Hilbertmatrix<ref>https://en.wikipedia.org/wiki/Hilbertmatrix</ref>.[-1,\ 1]$에서의 적분을 내적으로 정의할 때 1x는 직교하므로 Gram–Schmidt process를 쓰면 x21, x21, 11x, x2x, xx=x213을 기저의 세 번째 벡터로 삼을 수 있다. 서로 직교하도록 차수를 따라서 이어지는 이러한 다항식들을 '''Legendre polynomials'''(르장드르 다항식)라고 한다.<ref>https://en.wikipedia.org/wiki/Classical_orthogonal_polynomials</ref>
  
 
== 직교 여공간 ==
 
== 직교 여공간 ==
두 공간의 모든 벡터가 서로 직교할 때 두 공간이 직교한다고 하면 행렬 A의 null space의 원소는 Ax=0행과 직교하므로 A의 행 공간과 null space는 직교하는 두 공간이고, 마찬가지로 열 공간과 left null space는 직교하는 두 공간이다. 식으로 나타내면 Ax=b, ATx=b
+
두 공간의 모든 벡터가 서로 직교할 때 두 공간이 직교한다고 하자. 행렬 A의 null space의 원소는 Ax=0모든 행과 직교하므로 A의 행 공간과 null space는 직교하는 두 공간이고, 마찬가지로 A열 공간과 left null space는 직교하는 두 공간이다. 식으로 나타내면 Ax=b, ATx=b
 
: $\displaystyle \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23}\end{bmatrix}
 
: $\displaystyle \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23}\end{bmatrix}
 
[x1x2x3]
=[b1b2]
,\ [a11a21a12a22a13a23]
 
[x1x2x3]
=[b1b2]
,\ [a11a21a12a22a13a23]
 
[x1x2]
=[b1b2b3]
$
 
[x1x2]
=[b1b2b3]
$
일 때 $(x'_1[A]_1+x'_2[A]_2)^T=A^Tx'=[b']^1rowspaceA^Tx'nullspacex(A^Tx')^Tx=x'^TAx0$이다. Ax=b의 해가 존재한다는 것은 b가 열 공간의 원소라는 뜻이고, 이는 b가 left null space에 직교한다는 뜻이다. 따라서 xTA=0일 때 xTb=0이어야 한다.
+
일 때 $x'_1([A]_1)^T+x'_2([A]_2)^T=A^Tx'=[b']^1$이므로 Arow space에 속하는 모든 열벡터 ATx에 대해서 Anull space의 원소 x와의 내적 (ATx)Tx=xTAx는 항상 0이다.
  
한편 null space는 Ax=0의 해들을 모두 모은 것이므로 row space의 각 원소에 직교하는 모든 벡터를 모은 것이기도 하다. 이러한 관계를 '''orthogonal complement'''(직교 여공간)라 하며 내적 공간 V의 부분 공간 W의 직교 여공간을 W와 같이 쓴다. $V=\R^n$에서 $(W^{\perp})^{\perp}=W$이므로 $\dim W+\dim W^{\perp}=\dim V$이다.
+
Anull space는 Ax=0의 해들을 모두 모은 것이므로 Arow space의 각 원소에 직교하는 모든 벡터를 모은 것이기도 하다. 이러한 관계를 '''orthogonal complement'''(직교 여공간)라 하고, 내적 공간 V의 부분 공간 W의 직교 여공간을 W와 같이 쓴다. 행렬 $AA:\R^m\to \R^n$로 주어지면 $\R^mrm-rnullspace,\R^nrn-rleftnullspace.Ax=bb$가 $A$의 column space에 없다는 뜻이므로 $A^Tx'=0b$와 직교하지 않는 해를 가진다.<ref>https://en.wikipedia.org/wiki/Fredholm_alternative</ref>
  
 
== 최소 제곱법 ==
 
== 최소 제곱법 ==
 +
독립인 식이 미지수보다 더 많아서 해가 없는 경우에는 오차가 가장 적은 해를 구하는 방법을 생각해 볼 수 있다. 독립인 식이 여러 개이고 미지수가 한 개일 때, 해가 존재하려면 0=bax이어야 하는데 이 조건과의 오차 i(biaix)2를 최소화하는 xxab에 가장 가깝게 만들어야 한다. 즉 그러한 해는 ˆx=aTb/(aTa)이다. a가 영벡터이면 ˆx를 정할 수 없지만 pseudoinverse는 0T=0이다.<ref>https://www.omnicalculator.com/math/pseudoinverse</ref>
 +
 +
이러한 '''least squares''' 방법을 미지수가 여러 개일 때로 일반화하려면 A의 열 공간에 속하는 점 Ax들 가운데 b에 가장 가까운, 즉 오차 bAx를 최소화하는 벡터 ˆx를 찾아야 한다. n차원에서의 직교와 사영을 정의했기 때문에 직관을 따라서, 그러한 ˆxbAˆxA의 열 공간에 수직으로 만든다고 생각할 수 있다. 따라서 bAˆxA의 left null space에 속하고 AT(bAˆx)=0이다. 이를 '''normal equations'''(정규 방정식) 또는 '''ordinary least squares'''라고 한다.<ref>https://en.wikipedia.org/wiki/Non-linear_least_squares</ref> 여기에서 ˆx=(ATA)1ATb을 얻는다. A=QR로 분해할 수 있으면 ATA=RTR이므로 bAx를 최소화하는 벡터는 ˆx=R1QTb이다.
 +
 +
* bTxTAT를 최소화하는 벡터 xTbTxTAT(bTxTAT)A=0을 만족시킨다. 따라서 xT=bTA(ATA)1이다.
 +
* bATx를 최소화하는 벡터 xbATxA(bATx)=0을 만족시킨다. 따라서 x=(AAT)1Ab이다.
 +
* bTxTA를 최소화하는 벡터 xTbTxTA(bTxTA)AT=0을 만족시킨다. 따라서 xT=bTAT(AAT)1이다.
 +
 +
b의, A의 column space Ax로의 projection은 A(ATA)1ATb이다. A의 열들이 정규 직교이면 이는 AATb이며, A가 정사각 행렬이 아닐 때 b가 아니다.
 +
 +
=== overdetermined system ===
 +
n개의 직선 y=aix+bi이 만나는 점 (x, y)를 구하는 연립일차방정식은
 +
: $\displaystyle \begin{bmatrix} 1 & -a_1 \\ \vdots & \vdots \\ 1 & -a_n\end{bmatrix}
 +
[yx]
=[b1bn]
$
 +
이다. 여기에 least squares를 쓰면 bi(yaix)의 제곱의 합을 최소화하는 점 (ˆx, ˆy)를 구할 수 있다. a축과 b축으로 이루어진 좌표 평면을 생각하였을 때 이 해는 b=ˆxa+ˆy 위의 점 (ai, ˆxai+ˆy)에서, 점 (ai, bi)까지의 거리들에 대해서 제곱의 합을 최소화한다. 따라서 직선 y=ˆxx+ˆy는 평면 위의 n개의 점 (ai, bi)들의 분포를 설명하는 직선으로 쓸 수도 있다.
 +
 +
=== weighted least squares ===
 +
더 좋은 데이터를 더 중요하게 다루고 싶을 때에는 각 bi에 가중치 w2i를 부여하여 오차 iw2i(bix)2를 최소화하는 weighted average를 쓸 수 있다. 가중치를 부여하는 행렬 W를 곱하여 WAx=Wb에 least squares를 쓰면 ˆx=(ATWTWA)1ATWTWb이다. 여기에서 두 벡터 x, y의 내적을 yTWTWx라 정의할 때 ˆxbAˆxA의 열 공간에 수직으로 만든다. 즉 W가 직교 행렬이면 내적은 변하지 않는다. WTW로 적당한 것은 covariance matrix의 역행렬이다.<ref>https://en.wikipedia.org/wiki/Inverse-variance_weighting</ref>
 +
 +
=== 유사 역행렬 ===
 +
AA1A=A이면 generalized inverse라 하고<ref>https://en.wikipedia.org/wiki/Generalized_inverse</ref> 여기에 A1AA1=A1이면 reflexive generalized inverse, 여기에 A1A, AA1가 대칭 행렬이면 pseudoinverse 또는 '''Moore–Penrose inverse'''이다. generalized inverse와 다르게<ref>https://math.stackexchange.com/questions/4539974/generalized-inverse-in-terms-of-projection-matrices</ref> pseudoinverse가 유일하게 존재한다.<ref>https://math.stackexchange.com/questions/3057644/why-svd-is-not-unique-but-the-moore-penrose-pseudo-inverse-is-unique</ref> 최소 제곱법은 n×m 행렬 A의 left inverse가 (ATA)1AT이고 right inverse가 AT(AAT)1라는 것을 알려 준다.<ref>https://en.wikipedia.org/wiki/Matrix_norm</ref> A1Am×m 행렬, AA1n×n 행렬이다. 각 특이값 σi의 역수들이 대각 성분을 이루는 m×n 행렬 Σ+에 대해서 A1=VΣ+UT이다.<ref>https://math.stackexchange.com/questions/544809/how-can-we-derive-the-pseudo-inverse-of-a-matrix-from-its-singular-value-decompo, https://math.stackexchange.com/questions/1537880/what-forms-does-the-moore-penrose-inverse-take-under-systems-with-full-rank-ful</ref>
  
 
== 이산 푸리에 변환 ==
 
== 이산 푸리에 변환 ==
 +
주기가 2π인 함수 f의 푸리에 급수 f(x)=nZcnenxi는 시간 x에 대해서 진폭 f(x)를 주파수 n에 대응하는 함수 enxi로의 사영들의 합으로 근사한 것이다. 각 사영의 계수는 cn=12πππf(x)enxidx이다. 주기를 없애면 f(x)=cξe2πξxidξ는 시간 x에 대해서 진폭 f(x)를 연속적인 주파수 ξ에 대응하는 함수 e2πξxi로의 사영들의 적분으로 근사한 것이다. 각 사영의 계수는 cξ=f(x)e2πξxidx이다. time domain을 쓰는 f(x)에서 frequency domain을 쓰는 새로운 함수 ˆf(ξ)=cξ를 얻는 변환을 '''Fourier transform'''이라고 한다.
 +
 +
유한 개의 f(0), f(1), , f(n1)로부터 이산적인 해 ˆf(0), ˆf(1), , ˆf(n1)를 구하기 위해서 '''discrete Fourier transform'''과 inverse transform을 f(a)=1nbˆf(b)e2πbai/nˆf(b)=af(a)e2πbai/n로 정의할 수 있다. 행렬로 쓰면 다음과 같다:
 +
: $\displaystyle \begin{bmatrix} 1 & 1 & 1 & \cdots & 1 \\ 1 & e^{2\pi i/n} & e^{2\pi 2i/n} & \cdots & e^{2\pi (n-1)i/n} \\  1 & e^{2\pi 2i/n} & e^{2\pi 4i/n} & \cdots & e^{2\pi (n-1)2i/n} \\ \vdots & \vdots & \vdots & \ddots & \vdots \\  1 & e^{2\pi (n-1)i/n} & e^{2\pi 2(n-1)i/n} & \cdots & e^{2\pi (n-1)(n-1)i/n} \end{bmatrix}
 +
[ˆf(0)ˆf(1)ˆf(2)ˆf(n1)]
=[nf(0)nf(1)nf(2)nf(n1)]
$
 +
xn=1의 해는 e2πi/n=cos2πn+isin2πn의 거듭제곱들이다. Vieta's formulas에 따라서 이들의 합은 0이다. 그러므로 Fourier transform 행렬과 inverse transform 행렬을 곱하면 대각 성분이 아닌 것들은 1+e2πki/n+e2π2ki/n++e2π(n1)ki/n=0이다.
 +
 +
복소 내적에 대해서 Fourier transform 행렬의 column들은 서로 직교한다. 이 column들은 다음과 같은 cyclic permutation matrix의 고유벡터이다:
 +
: P=[010000101000], k0I+k1P+k2P2+kn1Pn1=[k0k1k2kn1kn1k0k1kn2k1k2k3k0]
 +
오른쪽 행렬을 '''circulant matrix'''(순환 행렬)라 하며 이는 k0, k1, , kn1과의 discrete circular convolution이다.
 +
 +
=== 빠른 푸리에 변환 ===
 +
n×n Fourier transform 행렬 A에 대해서 Ax=bn/2×n/2 Fourier transform 행렬 An/2에 대해서 An/2xeven=bevenAn/2xodd=bodd로부터 계산할 수 있으면 연산 비용을 n2에서 n2log2n으로 줄일 수 있다. 여기에서 xeven는 각 성분이 ˆf(0), ˆf(2), , ˆf(n2)인 벡터이다.
 +
: $\displaystyle \begin{split} nf(a)=\sum_{b} \hat{f}(b) e^{2\pi bai/n}&=\sum_{b<n/2} \hat{f}(2b)e^{2\pi 2bai/n}+\sum_{b<n/2} \hat{f}(2b+1)e^{2\pi (2b+1)ai/n}
 +
\\ &= \sum_{b<n/2} (x_{\mathrm{even}})_be^{2\pi bai/(n/2)}+e^{2\pi ai/n}\sum_{b<n/2} (x_{\mathrm{odd}})_be^{2\pi bai/(n/2)}
 +
\\ &= b_{\mathrm{even}}+e^{2\pi ai/n}b_{\mathrm{odd}}\end{split}$
 +
nf(a)beven+e2πai/nbodd이고 nf(a+n/2)bevene2πai/nbodd이다. 이 radix-2 '''fast Fourier transform, FFT'''를 이용하여 '''Cooley–Tukey algorithm'''을 구현할 수 있다. n=4일 때
 +
: [11111i1i11111i1i][ˆf(0)ˆf(1)ˆf(2)ˆf(3)]=[111×11×111i×1i×1111×11×111i×1i×1][ˆf(0)ˆf(2)ˆf(1)ˆf(3)]=[1010010i1010010i][1100110000110011][ˆf(0)ˆf(2)ˆf(1)ˆf(3)]
 +
이고 [1111]2×2 Fourier transform 행렬이다. 순서를 바꾼 각 ˆf(b)에 두 번째 행렬 An/2가 작용하고 첫 번째 행렬이 beven+e2πai/nbodd를 대응시킨다. n/2×n/2 행렬로 이어지는 각 단계에서 e2πai/nbodd의 연산 비용은 n/2이 된다.
  
 
== 참고 자료 ==
 
== 참고 자료 ==
 
<references />
 
<references />
 
* Gilbert Strang. Linear Algebra and Its Applications.
 
* Gilbert Strang. Linear Algebra and Its Applications.
 +
 +
[[Category:Mathematics]]

Latest revision as of 16:09, 18 July 2023

두 벡터 a, b가 피타고라스의 정리 a2+b2=ab2를 만족할 때 orthogonal(직교)이라 하고 ab라 쓴다. a2=ia2i=aTa이므로 두 벡터가 직교할 조건은 2iaibi=0이다. 여기에서 좌변의 aTb를 두 벡터의 dot product(점곱) 또는 scalar product라 하며 이는 inner product를 이룬다. 그렇다면 두 벡터 a, b에 대해서 비율 aTb/(aTa)aTbaTbaTaaTa=0이므로 a(baTbaTaa)를 만족시킨다. 즉 aTbaTaaca들 가운데 b에 가장 가까운 벡터이다. 이를 ba로의 projection(사영)이라 하고 projab라 쓴다. Rn의 두 벡터 a, b의 사잇각 θprojab=(bcosθ)a를 만족하므로 aTb=abcosθ이다.[1]

[(aTb)a]i=a1b1ai++anbnai[(aaT)b]i=(aia1aia2aian)b=aia1b1++aianbn가 같으므로 a로의 projection은 outer product[2]를 하여 벡터 b에 작용하는 연산자로 볼 수 있다:

aaTaTa=1a2[a1a1a1a2a1ana2a1a2a2a2anana1ana2anan]

이 행렬은 열 공간이 ca들이므로 rank가 1이다. 또한 다음이 성립한다.

  • PT=P이다. 따라서 행 공간과 열 공간이 같아 null space가 a에 직교한다.[3]
  • P2=P이다. P2ij=ai(aTa)aj/(aTa)=Pij로 보일 수 있다.

PT=P이고 P2=P인 모든 행렬은 rank가 무엇이든 (bPb)TPx=bT(IP)TPx=bT(PP2)x=0이므로 PbbP의 column space로의 orthogonal projection(정 사영)이다. PT=P가 아니어도 Pprojection matrix(사영 행렬)라 한다.[4]

Cauchy–Schwarz inequality

부등식 bprojab20은 다음과 같이 전개할 수 있다:

baTbaTaa2=(bTaTbaTaaT)(baTbaTaa)=bTb2(aTbaTa)(aTb)+(aTbaTa)2(aTa)=(bTb)(aTa)(aTb)2aTa0

이 결과 ab|aTb|Cauchy–Schwarz inequality(코시-슈바르츠 부등식)라 한다. 확률 변수 X, Y로 나타낼 때 Var(X)Var(Y)Cov(X, Y)2이며 X, Y의 내적을 E[XY]라 정의할 때 E[X2]E[Y2]E[XY]2이다.[5]

  • Rn의 두 벡터의 사잇각 θ에 대해서 Cauchy–Schwarz inequality는 |cosθ|1이라는 뜻이다. 부등식의 등호는 두 벡터가 평행할 때 성립한다.
  • 벡터 a=(x, y), b=(y, x)에 대해서 x2+y2|2xy|이다. forward–backward induction을 쓰면 산술-기하 평균 부등식을 얻는다.[6]
  • 실수 a1, a2, a3에 대해서 (a21+a22+a23)(a22+a23+a21)(a1a2+a2a3+a3a1)2이므로 양의 실수 a1, a2, a3에 대해서 (a1+a2+a3)23(a1a2+a2a3+a3a1)이다.
  • 양의 실수 a1, , an, b1, , bn에 대해서 ia2iai+bii(ai+bi)(iai)2이므로 iai=ibi일 때 ia2iai+bi12iai이다.
  • 실수 a1, , an과 양의 실수 b1, , bn에 대해서 (b1+b2)(a21b1+a22b2)(a1+a2)2이므로 ia2ibi(iai)2ibi이다. 따라서 1b+c+1c+a+1a+b92(a+b+c)이다.[7]
  • XT=X이고 PT=P이면 Y=iP일 때 YT=P이므로 XψYψ+YψXψ|ψTXYψψTYXψ|=|ψTXPψψTPXψ|이다. momentum operator P는 단위를 맞추도록 가 있고 PT=P가 되도록 i도 있는 differential operator이다.[8] XPPX=iI이므로 ψ2=ψT1i(XPPX)ψ=1i(ψTXPψψTPXψ)이다. 따라서 XψψPψψ2이며 이를 uncertainty principle(불확정성 원리)이라고 한다.

전치 행렬

  • Ax, y=x, ATy이다. 내적이 주어지면 이를 A의 transpose AT의 정의로 삼을 수 있다.
  • (AB)T=BTAT이다. A(Bx), y=Bx, ATy=x, BT(ATy)로 보일 수 있다.
  • AT=A, BT=B이면 (AB)T=AB일 때 AB=(AB)T=BTAT=BA이고 AB=BA일 때 (AB)T=BTAT=BA=AB이다.[9]
  • (AT)1=(A1)T이다. AT(A1)T=(A1A)T=I=(AA1)T=(A1)TAT로 보일 수 있다.
  • ATAx=0이면 Ax=0이다. ATAx=0이면 xTATAx=0에서 (Ax)TAx=Ax2=0으로 보일 수 있다. 이는 AT의 null space와 A의 column space가 직교 여공간이기 때문이다. 따라서 A의 각 열이 독립이면 Ax=0일 때 x=0이므로 (ATA)1이 존재한다. 마찬가지로 AATx=0이면 ATx=0이고, A의 각 행이 독립이면 ATx=0일 때 x=0이므로 (AAT)1이 존재한다. 이는 Ax=b의 해 x가 row space의 원소일 때 xA의 row들의 linear combination으로 나타내어 AATx=b를 만족시키는 ATx=x로 쓰면 해 x가 존재하는데, 그러한 x가 유일하다는 뜻이다.
  • (ATA)T=ATA이고 (AAT)T=AAT이다.
  • AAT=ATA이면[10] 모든 x에 대해서 Ax=ATx이다. Ax2=(Ax)T(Ax)=xTATAx, ATx2=(ATx)T(ATx)=xTAATx로 보일 수 있다.

직교 행렬

0이 아닌 n개의 벡터 vi가 각각 나머지 n1개의 벡터와 모두 직교할 때, 벡터들의 일차 결합과 vi를 내적하면 vTivi 항만 남으므로 일차 결합이 0인 경우는 vi=0인 경우밖에 없다. 따라서 n개의 벡터가 서로 직교하면 linear independent이다. 직교하는 n개의 벡터들이 일차 결합하여 공간의 모든 벡터를 유도할 수 있을 때 orthogonal basis(직교 기저)라 하고, 각 vi=1이면 orthonormal basis(정규 직교 기저)라 한다. v1,, vn이 정규 직교 기저이면 모든 벡터 x를 다음과 같이 나타낼 수 있다:

x=vT1xv1+vT2xv2++vTnxvn

정규 직교 기저의 각 벡터가 각 열을 이루는 정사각 행렬orthogonal matrix(직교 행렬) 또는 orthonormal matrix라 한다. 어떤 벡터들이 정규 직교라는 것은 각 원소 vi

vTivj={0(ij)1(i=j)

를 만족한다는 뜻이므로 orthogonal matrix Q에 대해서 QTQ=I이다. 따라서 정사각 행렬 Q의 각 열이 정규 직교이면 Q1=QT이므로 각 행도 정규 직교이다. Q1, Q2가 직교 행렬이면 (Q1Q2)1=(Q1Q2)T이므로 Q1Q2도 직교 행렬이다. 또한 |detQ|=1이고 (Qa)T(Qb)=aTb이므로 함수 Q는 벡터의 길이, 내적, 각도를 보존시킨다. n×n 직교 행렬들은 orthogonal group(직교군) O(n)을 이룬다. R2에서 회전 행렬들

v1=(cosθ, sinθ), v2=(sinθ, cosθ)

과 permutation matrix들은 orthogonal matrix이다.

QR 분해

일차 독립인 n개의 벡터 vi를 정규 직교인 n개의 벡터 qi로 만들고자 하면 q1=v1/v1에 대해서 q2=(v2qT1v2q1)/v2qT1v2q1라 하고 또 q3=(v3qT1v3q1qT2v3q2)/v3qT1v3q1qT2v3q2, 와 같이 n단계를 반복할 수 있다. 여기에서 qTivqi=qiprojqiv=projqiv이며 이렇게 각 열이 qi인 행렬 Q를 얻는 방법을 Gram–Schmidt process(그람-슈미트 과정)라고 한다. ti=viqT1viq1qTi1viqi1라 할 때 tiqi=ti에서 ti=qTiti이므로 전개하면 ti=qTivi이다. 이제 n개의 벡터 viq1, , qi들의 일차 결합으로 쓸 수 있다:

vi=qT1viq1+qT2viq2++qTiviqi

따라서 m개의 열들 vi가 일차 독립인 n×m 행렬은 n×m 행렬과 m×m 행렬의 곱이다.

[v1v2vm]=[q1q2qm][qT1v1qT1v2qT1vm0qT2v2qT2vm00qTmvm]

이를 A=QR처럼 쓰며 QR decomposition(QR 분해)라고 한다. R은 upper triangular matrix이고 n=m일 때 Q는 orthogonal matrix이다. GF(2)에서는 Gram–Schmidt process를 쓸 수 없다.[11] semisimple Lie group에서는 Iwasawa decomposition을 할 수 있다.[12]

함수 근사

함수 공간에서 두 벡터의 내적을 두 함수의 적당한 곱의 동일한 구간에서의 적분으로 정의할 수 있다. enxi들은 L2([π, π])에서 orthonormal basis를 이루므로 Fourier series는 어떤 함수를 각 기저에 사영하여 그 합으로 근사할 수 있다. 그러나 다항식 xn, xn1, , 1들은 함수 공간에서 서로 직교하지 않으므로 예를 들어 어떤 함수를 x2, x, 1에 사영하여 그 합으로 다항식 근사할 수 없다. [0, 1]에서의 적분을 내적으로 정의하여 최소 제곱법을 사용하려면 Hilbert matrix[13]의 역행렬을 곱해야 하지만 효율적이지 못하다. [1, 1]에서의 적분을 내적으로 정의할 때 1x는 직교하므로 Gram–Schmidt process를 쓰면 x21, x21, 11x, x2x, xx=x213을 기저의 세 번째 벡터로 삼을 수 있다. 서로 직교하도록 차수를 따라서 이어지는 이러한 다항식들을 Legendre polynomials(르장드르 다항식)라고 한다.[14]

직교 여공간

두 공간의 모든 벡터가 서로 직교할 때 두 공간이 직교한다고 하자. 행렬 A의 null space의 원소는 Ax=0의 모든 행과 직교하므로 A의 행 공간과 null space는 직교하는 두 공간이고, 마찬가지로 A의 열 공간과 left null space는 직교하는 두 공간이다. 식으로 나타내면 Ax=b, ATx=b

[a11a12a13a21a22a23][x1x2x3]=[b1b2], [a11a21a12a22a13a23][x1x2]=[b1b2b3]

일 때 x1([A]1)T+x2([A]2)T=ATx=[b]1이므로 A의 row space에 속하는 모든 열벡터 ATx에 대해서 A의 null space의 원소 x와의 내적 (ATx)Tx=xTAx는 항상 0이다.

A의 null space는 Ax=0의 해들을 모두 모은 것이므로 A의 row space의 각 원소에 직교하는 모든 벡터를 모은 것이기도 하다. 이러한 관계를 orthogonal complement(직교 여공간)라 하고, 내적 공간 V의 부분 공간 W의 직교 여공간을 W와 같이 쓴다. 행렬 A가 예를 들어 A:RmRn로 주어지면 Rm의 모든 벡터는 r차원의 행 공간과 그에 직교하는 mr차원의 null space로 분해할 수 있고, Rn의 모든 벡터는 r차원의 열 공간과 그에 직교하는 nr차원의 left null space로 분해할 수 있다. 따라서 Ax=b가 해를 가지지 않으면 bA의 column space에 없다는 뜻이므로 ATx=0b와 직교하지 않는 해를 가진다.[15]

최소 제곱법

독립인 식이 미지수보다 더 많아서 해가 없는 경우에는 오차가 가장 적은 해를 구하는 방법을 생각해 볼 수 있다. 독립인 식이 여러 개이고 미지수가 한 개일 때, 해가 존재하려면 0=bax이어야 하는데 이 조건과의 오차 i(biaix)2를 최소화하는 xxab에 가장 가깝게 만들어야 한다. 즉 그러한 해는 ˆx=aTb/(aTa)이다. a가 영벡터이면 ˆx를 정할 수 없지만 pseudoinverse는 0T=0이다.[16]

이러한 least squares 방법을 미지수가 여러 개일 때로 일반화하려면 A의 열 공간에 속하는 점 Ax들 가운데 b에 가장 가까운, 즉 오차 bAx를 최소화하는 벡터 ˆx를 찾아야 한다. n차원에서의 직교와 사영을 정의했기 때문에 직관을 따라서, 그러한 ˆxbAˆxA의 열 공간에 수직으로 만든다고 생각할 수 있다. 따라서 bAˆxA의 left null space에 속하고 AT(bAˆx)=0이다. 이를 normal equations(정규 방정식) 또는 ordinary least squares라고 한다.[17] 여기에서 ˆx=(ATA)1ATb을 얻는다. A=QR로 분해할 수 있으면 ATA=RTR이므로 bAx를 최소화하는 벡터는 ˆx=R1QTb이다.

  • bTxTAT를 최소화하는 벡터 xTbTxTAT(bTxTAT)A=0을 만족시킨다. 따라서 xT=bTA(ATA)1이다.
  • bATx를 최소화하는 벡터 xbATxA(bATx)=0을 만족시킨다. 따라서 x=(AAT)1Ab이다.
  • bTxTA를 최소화하는 벡터 xTbTxTA(bTxTA)AT=0을 만족시킨다. 따라서 xT=bTAT(AAT)1이다.

b의, A의 column space Ax로의 projection은 A(ATA)1ATb이다. A의 열들이 정규 직교이면 이는 AATb이며, A가 정사각 행렬이 아닐 때 b가 아니다.

overdetermined system

n개의 직선 y=aix+bi이 만나는 점 (x, y)를 구하는 연립일차방정식은

[1a11an][yx]=[b1bn]

이다. 여기에 least squares를 쓰면 bi(yaix)의 제곱의 합을 최소화하는 점 (ˆx, ˆy)를 구할 수 있다. a축과 b축으로 이루어진 좌표 평면을 생각하였을 때 이 해는 b=ˆxa+ˆy 위의 점 (ai, ˆxai+ˆy)에서, 점 (ai, bi)까지의 거리들에 대해서 제곱의 합을 최소화한다. 따라서 직선 y=ˆxx+ˆy는 평면 위의 n개의 점 (ai, bi)들의 분포를 설명하는 직선으로 쓸 수도 있다.

weighted least squares

더 좋은 데이터를 더 중요하게 다루고 싶을 때에는 각 bi에 가중치 w2i를 부여하여 오차 iw2i(bix)2를 최소화하는 weighted average를 쓸 수 있다. 가중치를 부여하는 행렬 W를 곱하여 WAx=Wb에 least squares를 쓰면 ˆx=(ATWTWA)1ATWTWb이다. 여기에서 두 벡터 x, y의 내적을 yTWTWx라 정의할 때 ˆxbAˆxA의 열 공간에 수직으로 만든다. 즉 W가 직교 행렬이면 내적은 변하지 않는다. WTW로 적당한 것은 covariance matrix의 역행렬이다.[18]

유사 역행렬

AA1A=A이면 generalized inverse라 하고[19] 여기에 A1AA1=A1이면 reflexive generalized inverse, 여기에 A1A, AA1가 대칭 행렬이면 pseudoinverse 또는 Moore–Penrose inverse이다. generalized inverse와 다르게[20] pseudoinverse가 유일하게 존재한다.[21] 최소 제곱법은 n×m 행렬 A의 left inverse가 (ATA)1AT이고 right inverse가 AT(AAT)1라는 것을 알려 준다.[22] A1Am×m 행렬, AA1n×n 행렬이다. 각 특이값 σi의 역수들이 대각 성분을 이루는 m×n 행렬 Σ+에 대해서 A1=VΣ+UT이다.[23]

이산 푸리에 변환

주기가 2π인 함수 f의 푸리에 급수 f(x)=nZcnenxi는 시간 x에 대해서 진폭 f(x)를 주파수 n에 대응하는 함수 enxi로의 사영들의 합으로 근사한 것이다. 각 사영의 계수는 cn=12πππf(x)enxidx이다. 주기를 없애면 f(x)=cξe2πξxidξ는 시간 x에 대해서 진폭 f(x)를 연속적인 주파수 ξ에 대응하는 함수 e2πξxi로의 사영들의 적분으로 근사한 것이다. 각 사영의 계수는 cξ=f(x)e2πξxidx이다. time domain을 쓰는 f(x)에서 frequency domain을 쓰는 새로운 함수 ˆf(ξ)=cξ를 얻는 변환을 Fourier transform이라고 한다.

유한 개의 f(0), f(1), , f(n1)로부터 이산적인 해 ˆf(0), ˆf(1), , ˆf(n1)를 구하기 위해서 discrete Fourier transform과 inverse transform을 f(a)=1nbˆf(b)e2πbai/nˆf(b)=af(a)e2πbai/n로 정의할 수 있다. 행렬로 쓰면 다음과 같다:

[11111e2πi/ne2π2i/ne2π(n1)i/n1e2π2i/ne2π4i/ne2π(n1)2i/n1e2π(n1)i/ne2π2(n1)i/ne2π(n1)(n1)i/n][ˆf(0)ˆf(1)ˆf(2)ˆf(n1)]=[nf(0)nf(1)nf(2)nf(n1)]

xn=1의 해는 e2πi/n=cos2πn+isin2πn의 거듭제곱들이다. Vieta's formulas에 따라서 이들의 합은 0이다. 그러므로 Fourier transform 행렬과 inverse transform 행렬을 곱하면 대각 성분이 아닌 것들은 1+e2πki/n+e2π2ki/n++e2π(n1)ki/n=0이다.

복소 내적에 대해서 Fourier transform 행렬의 column들은 서로 직교한다. 이 column들은 다음과 같은 cyclic permutation matrix의 고유벡터이다:

P=[010000101000], k0I+k1P+k2P2+kn1Pn1=[k0k1k2kn1kn1k0k1kn2k1k2k3k0]

오른쪽 행렬을 circulant matrix(순환 행렬)라 하며 이는 k0, k1, , kn1과의 discrete circular convolution이다.

빠른 푸리에 변환

n×n Fourier transform 행렬 A에 대해서 Ax=bn/2×n/2 Fourier transform 행렬 An/2에 대해서 An/2xeven=bevenAn/2xodd=bodd로부터 계산할 수 있으면 연산 비용을 n2에서 n2log2n으로 줄일 수 있다. 여기에서 xeven는 각 성분이 ˆf(0), ˆf(2), , ˆf(n2)인 벡터이다.

nf(a)=bˆf(b)e2πbai/n=b<n/2ˆf(2b)e2π2bai/n+b<n/2ˆf(2b+1)e2π(2b+1)ai/n=b<n/2(xeven)be2πbai/(n/2)+e2πai/nb<n/2(xodd)be2πbai/(n/2)=beven+e2πai/nbodd

nf(a)beven+e2πai/nbodd이고 nf(a+n/2)bevene2πai/nbodd이다. 이 radix-2 fast Fourier transform, FFT를 이용하여 Cooley–Tukey algorithm을 구현할 수 있다. n=4일 때

[11111i1i11111i1i][ˆf(0)ˆf(1)ˆf(2)ˆf(3)]=[111×11×111i×1i×1111×11×111i×1i×1][ˆf(0)ˆf(2)ˆf(1)ˆf(3)]=[1010010i1010010i][1100110000110011][ˆf(0)ˆf(2)ˆf(1)ˆf(3)]

이고 [1111]2×2 Fourier transform 행렬이다. 순서를 바꾼 각 ˆf(b)에 두 번째 행렬 An/2가 작용하고 첫 번째 행렬이 beven+e2πai/nbodd를 대응시킨다. n/2×n/2 행렬로 이어지는 각 단계에서 e2πai/nbodd의 연산 비용은 n/2이 된다.

참고 자료

  1. https://en.wikipedia.org/wiki/Direction_cosine
  2. https://en.wikipedia.org/wiki/Outer_product
  3. https://math.stackexchange.com/questions/456354/why-is-a-projection-matrix-symmetric
  4. http://optics.szfki.kfki.hu/~psinko/alj/menu/04/nummod/Projection_Matrices.pdf
  5. https://en.wikipedia.org/wiki/H%C3%B6lder%27s_inequality
  6. https://math.stackexchange.com/questions/2520981/is-there-a-proof-of-the-am-gm-inequality-via-cauchys-inequality-or-vice-versa?noredirect=1&lq=1
  7. https://en.wikipedia.org/wiki/Nesbitt%27s_inequality
  8. https://physics.stackexchange.com/questions/16678/if-all-the-eigenvalues-of-an-operator-are-real-is-the-operator-hermitian
  9. https://en.wikipedia.org/wiki/Commuting_matrices
  10. https://en.wikipedia.org/wiki/Normal_matrix
  11. https://math.stackexchange.com/questions/1346664/how-to-find-orthogonal-vectors-in-gf2, https://math.stackexchange.com/questions/2888728/factorization-of-matrices-over-gf2
  12. https://en.wikipedia.org/wiki/Iwasawa_decomposition
  13. https://en.wikipedia.org/wiki/Hilbert_matrix
  14. https://en.wikipedia.org/wiki/Classical_orthogonal_polynomials
  15. https://en.wikipedia.org/wiki/Fredholm_alternative
  16. https://www.omnicalculator.com/math/pseudoinverse
  17. https://en.wikipedia.org/wiki/Non-linear_least_squares
  18. https://en.wikipedia.org/wiki/Inverse-variance_weighting
  19. https://en.wikipedia.org/wiki/Generalized_inverse
  20. https://math.stackexchange.com/questions/4539974/generalized-inverse-in-terms-of-projection-matrices
  21. https://math.stackexchange.com/questions/3057644/why-svd-is-not-unique-but-the-moore-penrose-pseudo-inverse-is-unique
  22. https://en.wikipedia.org/wiki/Matrix_norm
  23. https://math.stackexchange.com/questions/544809/how-can-we-derive-the-pseudo-inverse-of-a-matrix-from-its-singular-value-decompo, https://math.stackexchange.com/questions/1537880/what-forms-does-the-moore-penrose-inverse-take-under-systems-with-full-rank-ful
  • Gilbert Strang. Linear Algebra and Its Applications.