このクリロフ量子対角化(KQD)のレッスンでは、以下の問いに答えます:
クリロフ法とは一般的に何か?
クリロフ法はなぜ機能するのか、またどのような条件下で機能するのか?
量子コンピューティングはどのような役割を果たすのか?
計算の量子部分は主に文献 [1] の研究に基づいています。
以下の動画では、古典コンピューティングにおけるクリロフ法の概要、その有用性の動機、そして量子コンピューティングがそのワークストリームにどのような役割を果たせるかを説明しています。続くテキストではより詳細な説明と、古典的手法および量子コンピュータを使用したクリロフ法の実装を提供します。
1. クリロフ法の概要
__クリロフ部分空間法__とは、__クリロフ部分空間__と呼ばれるものを基盤とした、いくつかの手法の総称です。これらの完全な解説はこのレッスンの範囲を超えますが、文献 [2-4] にはより多くの背景情報が記載されています。ここでは、クリロフ部分空間とは何か、固有値問題の解法においてなぜ有用であるか、そして最終的にそれを量子コンピュータ上でどのように実装できるかに焦点を当てます。
定義: 対称かつ半正定値の N × N N\times N N × N 行列 A A A が与えられたとき、次数 r r r のクリロフ空間 K r \mathcal{K}^r K r は、参照ベクトル ∣ v ⟩ \vert v \rangle ∣ v ⟩ に行列 A A A の高次べき乗(r − 1 ≤ N r-1\leq N r − 1 ≤ N まで)を掛けることで得られるベクトルによって張られる空間です。
K r = span { ∣ v ⟩ , A ∣ v ⟩ , A 2 ∣ v ⟩ , . . . , A r − 1 ∣ v ⟩ } \mathcal{K}^r = \text{span}\left\{ \vert v \rangle, A \vert v \rangle, A^2 \vert v \rangle, ..., A^{r-1} \vert v \rangle \right\} K r = span { ∣ v ⟩ , A ∣ v ⟩ , A 2 ∣ v ⟩ , ... , A r − 1 ∣ v ⟩ }
上記のベクトルはクリロフ部分空間を張りますが、それらが直交しているとは限りません。そのため、__グラム・シュミット直交化__に似た反復的な正規直交化プロセスをよく使用します。ここでのプロセスは若干異なり、各新しいベクトルは生成される際に他のベクトルと直交するようにされます。この文脈ではこれを__アルノルディ反復__と呼びます。初期ベクトル ∣ v ⟩ |v\rangle ∣ v ⟩ から始め、次のベクトル A ∣ v ⟩ A|v\rangle A ∣ v ⟩ を生成し、この2番目のベクトルが最初のベクトルと直交するように、∣ v ⟩ |v\rangle ∣ v ⟩ への射影を引き算します。すなわち
∣ v 0 ⟩ = ∣ v ⟩ ∣ ∣ ∣ v ⟩ ∣ ∣ ∣ v 1 ⟩ = A ∣ v ⟩ − ⟨ v 0 ∣ A ∣ v ⟩ ∣ v 0 ⟩ ∣ ∣ A ∣ v ⟩ − ⟨ v 0 ∣ A ∣ v ⟩ ∣ v 0 ⟩ ∣ ∣ \begin{aligned}
|v_0\rangle &=\frac{|v\rangle}{\left|\left| |v\rangle \right|\right|}\\
|v_1\rangle &=\frac{A|v\rangle-\langle v_0|A|v\rangle |v_0\rangle}{\left|\left|A|v\rangle-\langle v_0|A|v\rangle |v_0\rangle \right|\right|}
\end{aligned} ∣ v 0 ⟩ ∣ v 1 ⟩ = ∣ ∣ ∣ v ⟩ ∣ ∣ ∣ v ⟩ = ∣ ∣ A ∣ v ⟩ − ⟨ v 0 ∣ A ∣ v ⟩ ∣ v 0 ⟩ ∣ ∣ A ∣ v ⟩ − ⟨ v 0 ∣ A ∣ v ⟩ ∣ v 0 ⟩
次のことから ∣ v 0 ⟩ ⊥ ∣ v 1 ⟩ |v_0\rangle \perp |v_1\rangle ∣ v 0 ⟩ ⊥ ∣ v 1 ⟩ であることは容易に確認できます:
⟨ v 0 ∣ v 1 ⟩ = ⟨ v 0 ∣ A ∣ v ⟩ − ⟨ v 0 ∣ A ∣ v ⟩ ⟨ v 0 ∣ v 0 ⟩ ∣ ∣ A ∣ v ⟩ − ⟨ A ∣ v ⟩ ∣ v 0 ⟩ ∣ v 0 ⟩ ∣ ∣ = 0 \langle v_0 | v_1\rangle=\frac{\langle v_0 | A|v\rangle-\langle v_0 |A|v\rangle\langle v_0|v_0\rangle}{\left|\left| A|v\rangle-\langle A|v\rangle|v_0\rangle |v_0\rangle \right|\right|}=0 ⟨ v 0 ∣ v 1 ⟩ = ∣ ∣ A ∣ v ⟩ − ⟨ A ∣ v ⟩ ∣ v 0 ⟩ ∣ v 0 ⟩ ∣ ∣ ⟨ v 0 ∣ A ∣ v ⟩ − ⟨ v 0 ∣ A ∣ v ⟩ ⟨ v 0 ∣ v 0 ⟩ = 0
次のベクトルについても同様に、前の2つのベクトルの両方と直交するようにします:
∣ v 2 ⟩ = A ∣ v 1 ⟩ − ⟨ v 0 ∣ A ∣ v 1 ⟩ ∣ v 0 ⟩ − ⟨ v 1 ∣ A ∣ v 1 ⟩ ∣ v 1 ⟩ ∣ ∣ A ∣ v 1 ⟩ − ⟨ v 0 ∣ A ∣ v 1 ⟩ ∣ v 0 ⟩ − ⟨ v 1 ∣ A ∣ v 1 ⟩ ∣ v 1 ⟩ ∣ ∣ |v_2\rangle=\frac{A |v_1\rangle-\langle v_0|A |v_1\rangle |v_0\rangle-\langle v_1|A |v_1\rangle |v_1\rangle}{\left|\left| A |v_1\rangle-\langle v_0|A |v_1\rangle |v_0\rangle-\langle v_1|A |v_1\rangle |v_1\rangle\right|\right|} ∣ v 2 ⟩ = ∣ ∣ A ∣ v 1 ⟩ − ⟨ v 0 ∣ A ∣ v 1 ⟩ ∣ v 0 ⟩ − ⟨ v 1 ∣ A ∣ v 1 ⟩ ∣ v 1 ⟩ ∣ ∣ A ∣ v 1 ⟩ − ⟨ v 0 ∣ A ∣ v 1 ⟩ ∣ v 0 ⟩ − ⟨ v 1 ∣ A ∣ v 1 ⟩ ∣ v 1 ⟩
このプロセスを r r r 個すべてのベクトルについて繰り返すと、クリロフ空間の完全な正規直交基底が得られます。ここでの直交化プロセスは r > m r>m r > m になると零ベクトルを生じることに注意してください。これは m m m 個の直交ベクトルが必然的に全空間を張るためです。また、任意のベクトルが A A A の固有ベクトルである場合、後続のすべてのベクトルがそのベクトルの定数倍となるため、プロセスも零ベクトルを生じます。
1.1 簡単な例:手計算によるクリロフ法
クリロフ部分空間の生成プロセスを、非常に小さな行列でステップごとに確認してみましょう。対象となる初期行列 A A A から始めます:
A = ( 4 − 1 0 − 1 4 − 1 0 − 1 4 ) A=\begin{pmatrix}4&-1&0\\-1&4&-1\\0&-1&4\end{pmatrix} A = 4 − 1 0 − 1 4 − 1 0 − 1 4
この小さな例では、固有ベクトルと固有値を手計算でも求められます。ここでは数値解を示します。
!pip install - q matplotlib numpy qiskit qiskit - ibm - runtime scipy sympy
import numpy as np A = np . array ( [ [ 4 , - 1 , 0 ] , [ - 1 , 4 , - 1 ] , [ 0 , - 1 , 4 ] ] ) eigenvalues , eigenvectors = np . linalg . eig ( A ) print ( "The eigenvalues are " , eigenvalues ) print ( "The eigenvectors are " , eigenvectors )
The eigenvalues are [2.58578644 4. 5.41421356] The eigenvectors are [[ 5.00000000e-01 -7.07106781e-01 5.00000000e-01] [ 7.07106781e-01 1.37464400e-16 -7.07106781e-01] [ 5.00000000e-01 7.07106781e-01 5.00000000e-01]]
後で比較するためにここに記録しておきます:
a 0 = 2.59 , ∣ 0 ⟩ = ( 1 / 2 − 2 / 2 1 / 2 ) a 1 = 4 , ∣ 1 ⟩ = ( 2 / 2 0 − 2 / 2 ) a 2 = 5.41 , ∣ 2 ⟩ = ( 1 / 2 2 / 2 1 / 2 ) \begin{aligned}
a_0&=2.59,&|0\rangle&=&\begin{pmatrix}1/2\\-\sqrt{2}/2\\1/2\end{pmatrix}\\
\\
a_1&=4,&|1\rangle&=&\begin{pmatrix}\sqrt{2}/2\\0\\-\sqrt{2}/2\end{pmatrix}\\
\\
a_2&=5.41,&|2\rangle&=&\begin{pmatrix}1/2\\\sqrt{2}/2\\1/2\end{pmatrix}
\end{aligned} a 0 a 1 a 2 = 2.59 , = 4 , = 5.41 , ∣0 ⟩ ∣1 ⟩ ∣2 ⟩ = = = 1/2 − 2 /2 1/2 2 /2 0 − 2 /2 1/2 2 /2 1/2
このプロセスがクリロフ部分空間の次元 r r r を増やすにつれてどのように機能する(あるいは失敗する)かを調べたいと思います。そのために、以下のプロセスを適用します:
ランダムに選んだベクトル ∣ v ⟩ |v\rangle ∣ v ⟩ (すでに正規化されている場合は ∣ v 0 ⟩ |v_0\rangle ∣ v 0 ⟩ と呼ぶ)から始め、全ベクトル空間の部分空間を生成する。
全行列 A A A をその部分空間に射影し、射影された行列 A ~ \tilde{A} A ~ の固有値を求める。
グラム・シュミット直交化に似たプロセスを使用して、より多くのベクトルを生成し(正規直交性を確保しながら)、部分空間のサイズを増やす。
A A A をより大きな部分空間に射影し、結果として得られる行列 A ~ \tilde{A} A ~ の固有値を求める。
固有値が収束するまで(このトイの例では元の行列 A A A の全ベクトル空間を張るベクトルを生成するまで)これを繰り返す。
クリロフ法の通常の実装では、構築中のすべてのクリロフ部分空間について射影行列の固有値問題を解く必要はありません。目的の次元の部分空間を構築し、その部分空間に行列を射影してから、射影行列を対角化することができます。各部分空間次元での射影と対角化は、収束を確認するためにのみ行われます。
次元 r = 1 r=1 r = 1 :
ランダムなベクトル、例えば
∣ v 0 ⟩ = ( 1 0 0 ) |v_0\rangle=\begin{pmatrix}1\\0\\0\end{pmatrix} ∣ v 0 ⟩ = 1 0 0
を選びます。
正規化されていない場合は正規化します。
次に、行列 A A A をこの1つのベクトルの部分空間に射影します:
A ~ 0 = ⟨ v 0 ∣ A ∣ v 0 ⟩ = ( 1 0 0 ) ( 4 − 1 0 − 1 4 − 1 0 − 1 4 ) ( 1 0 0 ) = ( 4 ) \tilde{A}_0=\langle v_0| A|v_0\rangle=\begin{pmatrix}1&0&0\end{pmatrix}\begin{pmatrix}4&-1&0\\-1&4&-1\\0&-1&4\end{pmatrix}\begin{pmatrix}1\\0\\0\end{pmatrix}=(4) A ~ 0 = ⟨ v 0 ∣ A ∣ v 0 ⟩ = ( 1 0 0 ) 4 − 1 0 − 1 4 − 1 0 − 1 4 1 0 0 = ( 4 )
これが ∣ v 0 ⟩ |v_0\rangle ∣ v 0 ⟩ という1つのベクトルのみを含むクリロフ部分空間への行列の射影です。この行列の固有値は自明に4です。これを A A A の固有値(この場合は1つのみ)の0次近似と考えることができます。精度は低いですが、正しい桁数のオーダーです。
次元 r = 2 r=2 r = 2 :
次に、前のベクトルに A A A を作用させて部分空間の次のベクトルを生成します:
A ∣ v 0 ⟩ = ( 4 − 1 0 − 1 4 − 1 0 − 1 4 ) ( 1 0 0 ) = ( 4 − 1 0 ) A|v_0\rangle=\begin{pmatrix}4&-1&0\\-1&4&-1\\0&-1&4\end{pmatrix}\begin{pmatrix}1\\0\\0\end{pmatrix}=\begin{pmatrix}4\\-1\\0\end{pmatrix} A ∣ v 0 ⟩ = 4 − 1 0 − 1 4 − 1 0 − 1 4 1 0 0 = 4 − 1 0
次に、直交性を確保するために、このベクトルから前のベクトルへの射影を引き算します。
∣ v 1 ⟩ = A ∣ v 0 ⟩ − ⟨ v 0 ∣ A ∣ v 0 ⟩ ∣ v 0 ⟩ |v_1\rangle=A|v_0\rangle-\langle v_0 |A|v_0\rangle|v_0\rangle ∣ v 1 ⟩ = A ∣ v 0 ⟩ − ⟨ v 0 ∣ A ∣ v 0 ⟩ ∣ v 0 ⟩
∣ v 1 ⟩ = ( 4 − 1 0 ) − ( 1 0 0 ) ( 4 − 1 0 ) ( 1 0 0 ) = ( 0 − 1 0 ) |v_1\rangle=\begin{pmatrix}4\\-1\\0\end{pmatrix}-\begin{pmatrix}1& 0& 0\end{pmatrix}\begin{pmatrix}4\\-1\\0\end{pmatrix}\begin{pmatrix}1\\0\\0\end{pmatrix}=\begin{pmatrix}0\\-1\\0\end{pmatrix} ∣ v 1 ⟩ = 4 − 1 0 − ( 1 0 0 ) 4 − 1 0 1 0 0 = 0 − 1 0
正規化されていない場合は正規化します。この場合、ベクトルはすでに正規化されているので、
∣ v 1 ⟩ = ( 0 − 1 0 ) |v_1\rangle=\begin{pmatrix}0\\-1\\0\end{pmatrix} ∣ v 1 ⟩ = 0 − 1 0
次に、これら2つのベクトルの部分空間に行列 A を射影します:
A ~ 1 = ( 1 0 0 0 − 1 0 ) ( 4 − 1 0 − 1 4 − 1 0 − 1 4 ) ( 1 0 0 − 1 0 0 ) = ( 1 0 0 0 − 1 0 ) ( 4 1 − 1 − 4 0 1 ) = ( 4 1 1 4 ) \tilde{A}_1= \begin{pmatrix} 1&0&0\\0&-1&0 \end{pmatrix} \begin{pmatrix}4&-1&0\\-1&4&-1\\0&-1&4\end{pmatrix}\begin{pmatrix}1&0\\0&-1\\0&0\end{pmatrix}=\begin{pmatrix}1&0&0\\0&-1&0\end{pmatrix}\begin{pmatrix}4&1\\-1&-4\\0&1\end{pmatrix}=\begin{pmatrix}4&1\\1&4\end{pmatrix} A ~ 1 = ( 1 0 0 − 1 0 0 ) 4 − 1 0 − 1 4 − 1 0 − 1 4 1 0 0 0 − 1 0 = ( 1 0 0 − 1 0 0 ) 4 − 1 0 1 − 4 1 = ( 4 1 1 4 )
この行列の固有値を求めるという問題が依然として残りますが、この行列は元の行列よりも少し小さくなっています。非常に大きな行列を扱う問題では、このより小さな部分空間を使用することが大きな利点となり得ます。
det ( A 1 ~ − λ I ) = 0 \det(\tilde{A_1}-\lambda I)=0 det ( A 1 ~ − λ I ) = 0
∣ 4 − λ 1 1 4 − λ ∣ = ( 4 − λ ) 2 − 1 = 0 \begin{vmatrix} 4-\lambda&1\\1&4-\lambda\end{vmatrix} =(4-\lambda)^2-1=0 4 − λ 1 1 4 − λ = ( 4 − λ ) 2 − 1 = 0
4 − λ = ± 1 → λ = 3 , 5 4-\lambda=±1→\lambda=3,5 4 − λ = ± 1 → λ = 3 , 5
これはまだ良い近似ではありませんが、0次近似よりは改善されています。プロセスを明確にするためにもう1回繰り返します。ただし、次の反復では3×3行列を対角化することになるため、時間や計算能力の節約にはならないという点で、この手法の本来の利点を損なっています。
次元 r = 3 r=3 r = 3 :
次に、前のベクトルに A を作用させて部分空間の次のベクトルを生成します:
A ∣ v 1 ⟩ = ( 4 − 1 0 − 1 4 − 1 0 − 1 4 ) ( 0 − 1 0 ) = ( 1 − 4 1 ) A|v_1\rangle=\begin{pmatrix}4&-1&0\\-1&4&-1\\0&-1&4\end{pmatrix}\begin{pmatrix}0\\-1\\0\end{pmatrix}=\begin{pmatrix}1\\-4\\1\end{pmatrix} A ∣ v 1 ⟩ = 4 − 1 0 − 1 4 − 1 0 − 1 4 0 − 1 0 = 1 − 4 1
次に、直交性を確保するために、このベクトルから前の2つのベクトルへの射影を引き算します。
∣ v 2 ⟩ = A ∣ v 1 ⟩ − ⟨ v 0 ∣ A ∣ v 1 ⟩ ∣ v 0 ⟩ − ⟨ v 1 ∣ A ∣ v 1 ⟩ ∣ v 1 ⟩ ∣ v 2 ⟩ = ( 1 − 4 1 ) − ( 1 0 0 ) ( 1 − 4 1 ) ( 1 0 0 ) − ( 0 − 1 0 ) ( 1 − 4 1 ) ( 0 − 1 0 ) = ( 0 0 1 ) \begin{aligned}
|v_2\rangle&=A|v_1\rangle-\langle v_0 |A|v_1\rangle|v_0\rangle-\langle v_1 |A|v_1\rangle|v_1\rangle\\
|v_2\rangle&=\begin{pmatrix}1\\-4\\1\end{pmatrix}-\begin{pmatrix}1& 0& 0 \end{pmatrix}\begin{pmatrix}1\\-4\\1\end{pmatrix}\begin{pmatrix}1\\0\\0\end{pmatrix}-\begin{pmatrix}0&-1& 0\end{pmatrix}\begin{pmatrix}1\\-4\\1\end{pmatrix}\begin{pmatrix}0\\-1\\0\end{pmatrix}=\begin{pmatrix}0\\0\\1\end{pmatrix}
\end{aligned} ∣ v 2 ⟩ ∣ v 2 ⟩ = A ∣ v 1 ⟩ − ⟨ v 0 ∣ A ∣ v 1 ⟩ ∣ v 0 ⟩ − ⟨ v 1 ∣ A ∣ v 1 ⟩ ∣ v 1 ⟩ = 1 − 4 1 − ( 1 0 0 ) 1 − 4 1 1 0 0 − ( 0 − 1 0 ) 1 − 4 1 0 − 1 0 = 0 0 1
正規化されていない 場合は正規化します。この場合、ベクトルはすでに正規化されているので、
∣ v 2 ⟩ = ( 0 0 1 ) |v_2 \rangle=\begin{pmatrix}0\\0\\1\end{pmatrix} ∣ v 2 ⟩ = 0 0 1
次に、これらのベクトルの部分空間に行列 A A A を射影します:
A ~ 2 = ( 1 0 0 0 − 1 0 0 0 1 ) ( 4 − 1 0 − 1 4 − 1 0 − 1 4 ) ( 1 0 0 0 − 1 0 0 0 1 ) = ( 4 − 1 0 1 − 4 1 0 − 1 4 ) ( 1 0 0 0 − 1 0 0 0 1 ) = ( 4 1 0 1 4 1 0 1 4 ) \tilde{A}_2=\begin{pmatrix}1&0&0\\0&-1&0\\0&0&1\end{pmatrix}\begin{pmatrix}4&-1&0\\-1&4&-1\\0&-1&4\end{pmatrix}\begin{pmatrix}1&0&0\\0&-1&0\\0&0&1\end{pmatrix}=\begin{pmatrix}4&-1&0\\1&-4&1\\0&-1&4\end{pmatrix}\begin{pmatrix}1&0&0\\0&-1&0\\0&0&1\end{pmatrix}=\begin{pmatrix}4&1&0\\1&4&1\\0&1&4\end{pmatrix} A ~ 2 = 1 0 0 0 − 1 0 0 0 1 4 − 1 0 − 1 4 − 1 0 − 1 4 1 0 0 0 − 1 0 0 0 1 = 4 1 0 − 1 − 4 − 1 0 1 4 1 0 0 0 − 1 0 0 0 1 = 4 1 0 1 4 1 0 1 4
固有値を求めます:
det ( A ~ 2 − λ I ) = 0 \det(\tilde{A}_2-\lambda I)=0 det ( A ~ 2 − λ I ) = 0
∣ 4 − λ 1 0 1 4 − λ 1 0 1 4 − λ ∣ = ( 4 − λ ) ( ( 4 − λ ) 2 − 1 ) − ( 4 − λ ) = 0 \begin{vmatrix}4-\lambda&1&0\\1&4-\lambda&1\\0&1&4-\lambda\end{vmatrix} = (4-\lambda)((4-\lambda)^2-1)-(4-\lambda)=0\\ 4 − λ 1 0 1 4 − λ 1 0 1 4 − λ = ( 4 − λ ) (( 4 − λ ) 2 − 1 ) − ( 4 − λ ) = 0
4 − λ = 0 , 4 − λ = ± 2 1 / 2 → λ = 4 − 2 1 / 2 , 4 , 4 + 2 1 / 2 ≈ 2.59 , 4 , 5.41 4-\lambda=0,4-\lambda=±2^{1/2}→\lambda=4-2^{1/2},4,4+2^{1/2}≈2.59,4,5.41 4 − λ = 0 , 4 − λ = ± 2 1/2 → λ = 4 − 2 1/2 , 4 , 4 + 2 1/2 ≈ 2.59 , 4 , 5.41
これらの固有値は元の行列 A A A の固有値と完全に一致しています。クリロフ部分空間を元の行列 A A A の全ベクトル空間を張るように拡張したので、これは必然的な結果です。
この例では、クリロフ法が直接対角化よりも特に簡単に見えないかもしれません。実際、後のセクションで見るように、クリロフ法は特定の行列次元を超えた場合にのみ有利であり、これは非常に大きな行列の固有値・固有ベクトル問題を解くためのものです。
これが「手計算」で示す唯一の例ですが、以下のセクション2では計算機を使った例を示します。
用語の明確化
よくある誤解として、与えられた問題に対してクリロフ部分空間はただ1つしか存在しないというものがあります。しかし当然のことながら、行列を適用できる初期ベクトルは多数あるため、可能なクリロフ部分空間も多数存在します。「__その__クリロフ部分空間」という表現は、特定の例ですでに定義された特定のクリロフ部分空間を指す場合にのみ使用します。一般的な問題解決アプローチについては、「__ある__クリロフ部分空間」と呼びます。
最後の明確化として、「クリロフ__空間__」と呼ぶことも有効です。初期空間から部分空間へ行列を射影するという文脈で使用されることが多いため、「クリロフ__部分空間__」と呼ばれることが多いです。その文脈に合わせて、ここでは主に部分空間と呼びます。
理解度チェック
クリロフ部分空間の次元 r r r を、対象となる行列の次元 N N N を超えて拡張することが(a)有用でなく、(b)不可能である理由を説明してください。
Answer (a) ベクトルを生成しながら正規直交化しているため、N N N 個のそのようなベクトルは完全な基底を形成します。つまり、それらの線形結合を使用して空間内の任意のベクトルを作ることができます。
(b) 直交化プロセスは、新しいベクトルからすべての前のベクトルへの射影を引き算することで構成されます。前のベクトルが全ベクトル空間を張って いる場合、全部分空間への射影を引き算すると常に零ベクトルが残ります。
同僚の研究者がクリロフ法を小さなトイ行列に適用して示そうとしています。行列 A A A と初期ベクトル ∣ ψ ⟩ |\psi\rangle ∣ ψ ⟩ の選択に問題はありますか?
A = ( 2 1 3 1 2 3 3 3 5 ) A=\begin{pmatrix}2&1&3\\1&2&3\\3&3&5\end{pmatrix} A = 2 1 3 1 2 3 3 3 5
および
∣ ψ ⟩ = 1 2 ( 1 − 1 0 ) . |\psi\rangle=\frac{1}{\sqrt{2}}\begin{pmatrix}1\\-1\\0\end{pmatrix}. ∣ ψ ⟩ = 2 1 1 − 1 0 .
Answer 同僚は初期ベクトルとして偶然に固有ベクトルを選んでしまいました。初期ベクトルに行列を作用させると、固有値でスケールされた同じベクトルが返ってくるだけです。これでは次元が増加する部分空間を生成できません。同僚に別の初期ベクトルを選ぶよう、固有ベクトルでないものを確認してからアドバイスしてください。
適切な新しい初期ベクトルを選択して、指定の行列にクリロフ法を適用してください。クリロフ部分空間の0次と1次における最小固有値の推定値を書き下してください。
A = ( 1 1 0 1 1 1 0 1 1 ) A=\begin{pmatrix}1&1&0\\1&1&1\\0&1&1\end{pmatrix} A = 1 1 0 1 1 1 0 1 1
Answer 初期ベクトルの選択によって多くの可能な答えがあります。ここでは次を選びます:
∣ v 0 ⟩ = 1 3 ( 1 1 1 ) . |v_0\rangle=\frac{1}{\sqrt{3}}\begin{pmatrix}1\\1\\1\end{pmatrix}. ∣ v 0 ⟩ = 3 1 1 1 1 . ∣ v 1 ⟩ |v_1\rangle ∣ v 1 ⟩ を得るために、A A A を ∣ v 0 ⟩ |v_0\rangle ∣ v 0 ⟩ に1回作用させ、その後 ∣ v 1 ⟩ |v_1\rangle ∣ v 1 ⟩ を ∣ v 0