チュートリアル Linear Algebra Part3解答例
Linear Algebra=線形代数Sample Answers for QuantumKatas Linear Algebra part I
https://github.com/microsoft/QuantumKatas/tree/master/tutorials/LinearAlgebra
(いきなりこのページに飛んできた人で最初から勉強されたい方はこちらをご参照ください)
ここではQ#による量子プログラミングにあたっての数学的前提知識の学習を行います。
前提知識の学習はPart 3がいよいよ最後です。
Eigenvalue: 固有値
Eigenvector: 固有ベクトル
Exercise 13: Finding an eigenvalue
固有値を求める固有ベクトルはゼロベクトルではないので、2つの行列を掛け算し、結果をVのゼロでない要素で割り算すれば求まります。
@exercise
def find_eigenvalue(a : Matrix, v : Matrix) -> float:
n = len(v)
x = matrix_mult(a, v)
for i in range(n):
if v[i][0] ==0:
continue
else:
return x[i][0] / v[i][0]
Exercise 14**: Finding an eigenvector
固有ベクトルを求める。固有ベクトルの求め方については下記リンクを参照https://to-kei.net/linear-algebra/eigenvalue/eigenvalue-and-eigenvector/
行の要素がオールゼロの場合は別の行を選択する必要があります。
@exercise
def find_eigenvector(a : Matrix, x : float) -> Matrix:
v = create_empty_matrix(2, 1)
if a[0][0] == 0 and a[1][0] == 0:
v[0][0] = 0
v[1][0] = a[1][1] / x
elif a[1][0] == 0 and a[1][1] == 0:
v[0][0] = a[0][0] / x
v[1][0] = 0
else:
v[0][0] = a[0][1]
v[1][0] = x - a[0][0]
return vいよいよ次は基本的な数学の準備から抜け出して、量子ビット(Qubit)について学習していきます。