고유치로부터 고유 벡터를 구한다
htps : // 아 rぃ v. rg/아bs/1908.03795
(Twitter상에서 R로 실장하고 있는 사람을 벌써 관측하고 있으므로, 아마 $N$ 번 달인 것이라는 것을 인지해 이 기사를 쓰고 있다)
정확하게는 $n$ 다음 Hermitian Matrix $A$ 에 대해 고유 벡터의 각 요소의 크기의 제곱을 구한다.
따라서, 복소수의 위상 성분은이 접근법에서 요구되지 않는다.
또한 Hermitian이 아닌 정방 행렬에이 기술을 적용해도 고유 벡터의 각 요소의 크기는 구할 수 없습니다.
(Hermitian의 고유 벡터는 직교한다는 성질을 증명에 사용하고 있기 때문에)
$A$ 의 $i$ 번째의 고유 벡터 $\mathbf{v}_i$ 와 고유치 $\lambda_i$ 로 정의한다.
또, $A$ 의 $j$ 행과 $j$ 열을 삭제한 행을 $M_j$ 라고 한다.
M_j =
\left[ \begin{array}{ccc|ccc}
A_{1,1} &\cdots& A_{1,j-1} & A_{1,j+1} &\cdots& A_{1,n} \\
\vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\
A_{j-1,1} &\cdots& A_{j-1,j-1} & A_{j-1,j+1} &\cdots& A_{j-1,n} \\ \hline
A_{j+1,1} &\cdots& A_{j+1,j-1} & A_{j+1,j+1} &\cdots& A_{j+1,n} \\
\vdots & \ddots & \vdots & \vdots & \ddots & \vdots \\
A_{n,1} &\cdots& A_{n,j-1} & A_{n,j+1} &\cdots& A_{n,n}
\end{array} \right]
$A_{i,j}$ 는 $A$ 의 $i$ 행 $j$ 번째 요소입니다.
또한 $M_j$의 $k$번째 고유값을 $\mu^{(j)}_k$ 로 정의한다.
그러면 $\mathbf{v}_i$ 의 $j$ 번째의 요소 $v_{i,j}$ 에 대해서, 다음과 같은 식이 성립한다(논문의 식(2)에 해당한다).
|v_{i,j}|^2 \prod_{k=1,k\neq i}^n (\lambda_i - \lambda_k)
= \prod_{k=1}^{n-1} (\lambda_i - \mu^{(j)}_k)
이 식을 사용하면, 고유치 $\lambda_i,\mu^{(j)}_k$ 로부터 고유 벡터의 각 요소의 크기의 제곱 $|v_{i,j}|^2$ 를 구한다.
이것을 Python3에서 구현해 보았습니다.
import numpy as np;
import matplotlib.pyplot as plt;
def calc_eigenvector (A, i):
n,_ = A.shape;
v = np.zeros ((n,1)); # 求める固有ベクトルの平方
lams,_ = np.linalg.eig (A);
for j in range (n):
x = [xx for xx in range (n)];
x.remove (j);
Mj = A[:,x][x,:];
muj, _ = np.linalg.eig (Mj);
numerator = (lams[i] - muj).prod ();
denominator = np.delete (lams[i]-lams, i).prod ();
v[j,0] = numerator / denominator;
return v;
N = 10;
A = np.random.randn (N,N);
A = A + A.T;
_, vs = np.linalg.eig (A);
plt.figure ();
plt.plot([0,1],[0,1]);
v_t = vs[:,0];
v_c = calc_eigenvector (A,0);
plt.scatter (v_t**2, v_c);
plt.show ();
calc_eigenvector는 이전 수식을 기반으로 고유 벡터를 찾는 함수입니다.
이것을 실행한다.
가로축이 numpy.linalg.eig 에서 구한 0번째의 고유 벡터의 각 요소의 크기의 제곱,
세로축이 함수로 구한 결과.
$y=x$ 의 직선상에 제대로 타고 있다. 대단해.
모든 고유치로 한 것은 아래 그림과 같다.
이것도 제대로 $y=x$를 타고 있는 것을 확인할 수 있었다.
Reference
이 문제에 관하여(고유치로부터 고유 벡터를 구한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ShataKurashi/items/b804a0bcb5c88c5a8dec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)