<jupyter_start><jupyter_text>行列を楽しむ 行列を操ることは量子プログラムを分析する方法の心臓部です。この章では分析に使用することができる最も一般的なツールについていくつか見ていきます。  ユニタリー行列とエルミート行列 普遍性の研究は本質的に数学を必要とする努力であるため、数学のツールを取得する必要があります。まず、エルミート共役の概念が必要です。このためには、まず$M$という行列を用いて全ての要素について複素共役をとり、最後に要素を転置します。これにより$M^\dagger$と呼ばれる行列が得られます。量子コンピューティングにとって非常に重要な行列のグループの2つは、エルミート共役との関係性により定義されます。1つ目のグループは、ユニタリー行列で、以下のとおり表現できます。$$U U^\dagger = U^\dagger U = 1.$$これは、ユニタリー行列のエルミート共役は、その行列の逆行列であることを意味します。$U^\dagger$はもう一つのユニタリー行列であり、$U$の作業を打ち消す力を持ちます。観測を除き、量子コンピューティングにおける全てのゲートはユニタリー行列で表現することができます。もう1つの重要な行列グループはエルミート行列です。これらの行列はエルミート共役をとることによる影響を受けません。$$H = H^\dagger.$$これまでに出てきた$X$、$Y$、$Z$行列は、エルミート行列の例です。（偶然にも、これらは自分自身の逆行列でもあるため、ユニタリー行列でもあります。）  外積としての行列 前章では、$\langle0|0\rangle =1$のように多くの内積を計算しました。これらの計算ではブラとケットを組み合わせて一つの数字を得ました。単純に順序を逆にするだけで、計算結果として行列を得られる組み合わせにすることもできます。これは外積と呼ばれ、標準的な行列の乗算として機能します。例を以下に示します。$$|0\rangle\langle0|= \begin{pmatrix} 1 \\\\ 0 \end{pmatrix} \begin{pmatrix} 1 & 0 \end{pmatrix} = \begin{pmatrix} 1&0 \\\\ 0&0 \end{pmatrix},\\\\|0\rangle\langle1| = \begin{pmatrix} 1 \\\\ 0 \end{pmatrix} \begin{pmatrix} 0 & 1 \end{pmatrix} = \begin{pmatrix} 0&1 \\\\ 0&0 \end{pmatrix},\\\\|1\rangle\langle0| = \begin{pmatrix} 0 \\\\ 1 \end{pmatrix} \begin{pmatrix} 1 & 0 \end{pmatrix} = \begin{pmatrix} 0&0 \\\\ 1&0 \end{pmatrix},\\\\|1\rangle\langle1| = \begin{pmatrix} 0 \\\\ 1 \end{pmatrix} \begin{pmatrix} 0 & 1 \end{pmatrix} = \begin{pmatrix} 0&0 \\\\ 0&1 \end{pmatrix}.\\\\$$このことは、いかなる行列も外積として記述することができることを意味します。上述の例では、単一量子ビット行列の各要素を表す4つの行列を作成しました。したがって、その他の単一量子ビット行列についてもこの4つの行列を用いて記述することができます。$$M= \begin{pmatrix} m_{0,0}&m_{0,1} \\\\ m_{1,0}&m_{1,1} \end{pmatrix} = m_{0,0} |0\rangle\langle0|+ m_{0,1} |0\rangle\langle1|+ m_{1,0} |1\rangle\langle0|+ m_{1,1} |1\rangle\langle1|$$この性質は、任意の数の量子ビット$n$を表す行列についても同様です。対応する$n$ビット文字列の外積を使用するだけです。  スペクトル形式 外積は行列を記述するために非常に便利です。特に、状態の遷移を簡単に捉えることができることから、ユニタリー行列に対して有用です。まず、これを行うには、まず量子ビットを説明する直行状態のセットを選びます。例えば、2量子ビットの場合、$\{|00\rangle,|01\rangle,|10\rangle,|11\rangle\}$を選択します。これらを$\{|u_{00}\rangle,|u_{01}\rangle,|u_{10}\rangle,|u_{11}\rangle\}$と呼ぶことにします。次に、これらの各状態をユニタリー行列により回転した後の状態について決めます。これらを$\{|u_{00}\rangle,|u_{01}\rangle,|u_{10}\rangle,|u_{11}\rangle\}$と呼ぶことにします。このことを実現するユニタリー行列は以下のように記述できます。$$U = |u_{00}\rangle\langle00| + |u_{01}\rangle\langle01| + |u_{10}\rangle\langle10| +|u_{11}\rangle\langle11|$$In a form like this, we can directly read out the effect of the unitary on the basis states we have chosen.This way of writing a unitary is not unique for each unitary. You can do it for every possible set of orthogonal input states. However, for at least one possible set of states it will take an especially simple form. These are the eigenstates of the matrix, for which$$U = \sum_j e^{ih_j} |h_j\rangle\langle h_j|$$Here the unitary takes each state of this basis, which we've called $|h_j\rangle$, and replaces it with $e^{ih_j}|h_j\rangle$. Since the $e^{ih_j} |h_j\rangle$ must themselves be valid quantum states, the $e^{ih_j}$ must be complex numbers of magnitude 1. In fact, this is exactly why we wrote them as a complex exponential; to ensure that they have magnitude 1, we simply need to ensure that the $h_j$ are real numbers.For these states, the unitary simply induces a global phase. The non-trivial effects of this unitary will come for superpositions of these states, for which a relative phase may be induced.Hermitian matrices also have well-defined eigenstates and eigenvalues, and can be written in the same form as the unitary matrix above.$$H = \sum_j h_j |h_j\rangle\langle h_j| .$$In order to satisfy the constraint that $H = H^\dagger$, we must determine what properties are required for the eigenstates and eigenvalues.For the eigenstates, we can see what happens when we take the outer product of a state with itself. For this we use the fact that the Hermitian conjugate of a product can be evaluated by taking the Hermitian conjugate of each factor, and then reversing the order of the factors. If we also note that the Hermitian conjugate of a ket is the corresponding bra, and vice versa, we find$$(|h_j\rangle\langle h_j|)^\dagger = \langle (h_j|^\dagger) ~(|h_j\rangle^\dagger) = |h_j\rangle\langle h_j| .$$The outer product of a state with itself is therefore inherently Hermitian. To ensure that $H$ is Hermitian as a whole, we only need to require the eigenvalues $h_j$ to be real.If you were wondering about the coincidence of notation used above for $U$ and $H$ in spectral form, this should hopefully begin to explain it. Essentially, these two types of matrices differ only in that one must have real numbers for eigenvalues, and the other must have complex exponentials of real numbers. This means that, for every unitary, we can define a corresponding Hermitian matrix. For this we simply reuse the same eigenstates, and use the $h_j$ from each $e^{ih_j}$ as the corresponding eigenvalue.Similarly, for each Hermitian matrix there exists a unitary. We simply reuse the same eigenstates, and exponentiate the $h_j$ to create the eigenvalues $e^{ih_j}$. This can be expressed as$$U = e^{iH}$$Here we have used the standard definition of how to exponentiate a matrix. This has exactly the properties we require: preserving the eigenstates and exponentiating the eigenvalues.We can also build a whole family of unitaries for each given Hermitian, using$$U(\theta) = e^{i \theta H},$$where $\theta$ is an arbitrary real number. This allows us to interpolate between $\theta=0$, which will be the identity matrix, to $\theta=1$, which is $U$. It also allows us to define a notion of a gate that is the square root of $U$: one that must be done twice to get the full effect of $U$. This would simply have $\theta=1/2$.  Pauli decomposition As we saw above, it is possible to write matrices entirely in terms of outer products.$$M= \begin{pmatrix} m_{0,0}&m_{0,1} \\\\ m_{1,0}&m_{1,1} \end{pmatrix} = m_{0,0} |0\rangle\langle0|+ m_{0,1} |0\rangle\langle1|+ m_{1,0} |1\rangle\langle0|+ m_{1,1} |1\rangle\langle1|$$Now we will see that it is also possible to write them completely in terms of Pauli operators. For this, the key thing to note is that$$\frac{1+Z}{2} = \frac{1}{2}\left[ \begin{pmatrix} 1&0 \\\\0&1 \end{pmatrix}+\begin{pmatrix} 1&0 \\\\0&-1 \end{pmatrix}\right] = |0\rangle\langle0|,\\\\\frac{1-Z}{2} = \frac{1}{2}\left[ \begin{pmatrix} 1&0 \\\\0&1 \end{pmatrix}-\begin{pmatrix} 1&0 \\\\0&-1 \end{pmatrix}\right] = |1\rangle\langle1|$$This shows that $|0\rangle\langle0|$ and $|1\rangle\langle1|$ can be expressed using the identity matrix and $Z$. Now, using the property that $X|0\rangle = |1\rangle$, we can also produce$$|0\rangle\langle1| = |0\rangle\langle0|X = \frac{1}{2}(1+Z)~X = \frac{X+iY}{2},\\\\|1\rangle\langle0| = X|0\rangle\langle0| = X~\frac{1}{2}(1+Z) = \frac{X-iY}{2}.$$Since we have all the outer products, we can now use this to write the matrix in terms of Pauli matrices:$$M = \frac{m_{0,0}+m_{1,1}}{2}~1~+~\frac{m_{0,1}+m_{1,0}}{2}~X~+~i\frac{m_{0,1}-m_{1,0}}{2}~Y~+~\frac{m_{0,0}-m_{1,1}}{2}~Z.$$This example was for a general single-qubit matrix, but the corresponding result is true also for matrices for any number of qubits. We simply start from the observation that$$\left(\frac{1+Z}{2}\right)\otimes\left(\frac{1+Z}{2}\right)\otimes\ldots\otimes\left(\frac{1+Z}{2}\right) = |00\ldots0\rangle\langle00\ldots0|,$$and can then proceed in the same manner as above. In the end it can be shown that any matrix can be expressed in terms of tensor products of Pauli matrices:$$M = \sum_{P_{n-1},\ldots,P_0 \in \{1,X,Y,Z\}} C_{P_{n-1}\ldots,P_0}~~P_{n-1} \otimes P_{n-2}\otimes\ldots\otimes P_0.$$For Hermitian matrices, note that the coefficients $C_{P_{n-1}\ldots,P_0}$ here will all be real.Now we have some powerful tools to analyze quantum operations, let's look at the operations we will need to analyze for our study of universality.<jupyter_code>import qiskit
qiskit.__qiskit_version__<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.1378525357278361, 'fraction_numerical': 0.029973441254584544, 'mean_word_length': 5.4926108374384235, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '302531', 'license': 'Apache-2.0', 'n_tokens_mistral': 3496, 'n_tokens_neox': 3196, 'n_words': 845, 'path': 'content/ch-gates/fun-matrices.ipynb', 'repo_name': 'daiki0623/qiskit-textbook', 'size': '7907'}