DensityMatrix
class qiskit.quantum_info.DensityMatrix(data, dims=None)
ベース: QuantumState, TolerancesMixin
DensityMatrix クラス
密度行列オブジェクトを初期化する。
パラメーター
- data (np.ndarray | list |QuantumCircuit |circuit.instruction.Instruction | QuantumState) – 状態ベクトル、量子命令、または密度行列を構築できる
to_operatorまたはto_matrixメソッドを持つオブジェクト。 ベクトルの場合、密度行列はそのベクトルの射影として構成される。 量子命令であれば、すべての量子ビットがゼロ状態で初期化されていると仮定して密度行列が構成される。 - dims (int |tuple |list | None) – 状態のサブシステム次元(追加情報を参照)。
レイズ
QiskitError - 入力データが有効でない場合。
追加情報:
dims kwargはNone、整数、または整数の反復可能値である。
Iterable- サブシステムの次元はリストの値であり、サブシステムの総数はリストの長さで与えられる。IntまたはNone- 入力行列の先頭の次元は,密度行列の総次元を指定する. それが2のべき乗であれば、状態はN量子ビット状態として初期化される。 もしそれが2のべき乗でなければ、状態は1つのd次元サブシステムを持つことになる。
属性
atol
デフォルト値: 1e-08
data
データを返す。
dim
状態次元の合計を返す。
num_qubits
N量子ビット状態の場合は量子ビット数を、そうでない場合はNoneを返す。
rtol
デフォルト値: 1e-05
settings
リターンの設定
方法
conjugate
copy
dims
draw
draw(output=None, **drawer_args)
密度行列の可視化結果を返す。
再掲 :ASCII TextMatrix 州の __repr__。
テキストで表示されます:ASCII TextMatrix コンソールに表示できる。
latex :Jupyterノートブックで表示するためのIPython Latexオブジェクト。
latex_source : LaTeX を用いて配列を生成する、コンパイルされていない生の ASCII ソース。
qsphere : Matplotlib figure, plot_state_qsphere()を使用した密度行列のレンダリング。
hinton : Matplotlib figure, plot_state_hinton()による密度行列のレンダリング。
bloch : Matplotlib figure, plot_bloch_multivector()を使った密度行列のレンダリング。
パラメーター
- output (str) – 状態の描画に使用する出力方法を選択します。 有効な選択肢は、repr、text、latex、latex_source、qsphere、hinton、blochである。 デフォルトはrepr。 デフォルトは
[default]の~/.qiskit/settings.confにstate_drawer = <default>という行を追加することで変更できる。 - drawer_args - 関連する描画関数またはコンストラクタに直接渡される引数 ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() or plot_bloch_multivector())。その関数のドキュメントは、 qiskit.visualization の下にある関連する関数を参照。
戻り値
matplotlib.Figure str または TextMatrix または または IPython.display.Latex:密度行列の図。
レイズ
ValueError - 無効な出力方法が選択された場合。
evolve
evolve(other, qargs=None)
演算子によって量子状態を進化させる。
パラメーター
- other (Operator | QuantumChannel |circuit.instruction.Instruction |QuantumCircuit) – 進化するオペレーター
- qargs (list[int] | None) – QuantumState オペレータを適用するサブシステムの位置のリスト。
戻り値
出力密度行列。
レイズ
QiskitError - 演算子のディメンジョンが、指定された QuantumState サブシステムのディメンジョンと一致しない場合。
戻りの型
expand
expand(other)
テンソル積の状態 other ⊗ self を返す。
パラメーター
other (DensityMatrix) – 量子状態オブジェクト。
戻り値
テンソル積の状態 other ⊗ self.
戻りの型
レイズ
QiskitError - 他が量子状態でない場合
expectation_value
from_instruction
classmethod from_instruction(instruction)
命令の出力密度行列を返す。
状態ベクトルは、入力命令または回路と同じ数の量子ビットの状態( )で初期化され、入力命令によって進化し、出力状態ベクトルが返される。
パラメーター
instruction (circuit.instruction.Instruction |QuantumCircuit) – 命令または回路
戻り値
最終的な密度行列。
レイズ
QiskitError - 命令に密度行列シミュレーションの無効な命令が含まれている場合。
戻りの型
from_int
static from_int(i, dims)
計算基底状態密度行列を返す。
パラメーター
戻り値
計算基礎状態 。
戻りの型
追加情報:
dims kwargは整数または整数の反復可能値である。
Iterable- サブシステムの次元はリストの値であり、サブシステムの総数はリストの長さで与えられる。Int- 整数は状態の総次元を指定する。 それが2のべき乗であれば、状態はN量子ビット状態として初期化される。 もしそれが2のべき乗でなければ、状態は1つのd次元サブシステムを持つことになる。
from_label
classmethod from_label(label)
Pauli X,Y,Z 固有状態のテンソル積を返す。
ラベル | 状態ベクトル |
|---|---|
"0" | |
"1" | |
"+" | |
"-" | |
"r" | |
"l" |
パラメーター
label (string) – 固有状態の文字列(ketラベル)(許容される値については表を参照)。
戻り値
N量子ビット基底状態密度行列。
戻りの型
レイズ
QiskitError - ラベルに無効な文字が含まれているか、ラベルの長さが明示的に指定された num_qubits より大きい場合。
is_valid
measure
measure(qargs=None)
サブシステムを測定し、結果と測定後の状態を返す。
この関数は、測定結果のサンプリングに QuantumStates 内部乱数発生器を使用することに注意してください。 RNGシードは seed() メソッドで設定できます。
パラメーター
qargs (list or None) – None の場合は、すべてのサブシステムの測定をサンプリングする。
戻り値
ペア (outcome, state) outcome は
測定結果の文字列ラベルであり、 state は対応する測定結果の折りたたまれた測定後の状態である。
戻りの型
partial_transpose
probabilities
probabilities(qargs=None, decimals=None)
サブシステムの測定確率ベクトルを返す。
測定確率は、計算(対角)基準での測定に関するものである。
パラメーター
- qargs (None or list) – None の場合はすべてのサブシステムに対して返す (デフォルト: None)。
- decimals (None or int) – 値を丸める小数点以下の桁数。 None の場合、丸めは行われない(デフォルト:None)。
戻り値
確率のNumpyベクトル配列。
戻りの型
np.array
例
, を持つ2量子ビット積状態 を考える。
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('+0')
# Probabilities for measuring both qubits
probs = rho.probabilities()
print('probs: {}'.format(probs))
# Probabilities for measuring only qubit-0
probs_qubit_0 = rho.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))
# Probabilities for measuring only qubit-1
probs_qubit_1 = rho.probabilities([1])
print('Qubit-1 probs: {}'.format(probs_qubit_1))probs: [0.5 0. 0.5 0. ]
Qubit-0 probs: [1. 0.]
Qubit-1 probs: [0.5 0.5]また、 qargs リスト中の量子ビットの順番を並べ替えることで、確率出力中の量子ビットの位置を変えることができる
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('+0')
# Probabilities for measuring both qubits
probs = rho.probabilities([0, 1])
print('probs: {}'.format(probs))
# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = rho.probabilities([1, 0])
print('Swapped probs: {}'.format(probs_swapped))probs: [0.5 0. 0.5 0. ]
Swapped probs: [0.5 0.5 0. 0. ]probabilities_dict
probabilities_dict(qargs=None, decimals=None)
サブシステムの測定確率辞書を返す。
測定確率は、計算(対角)基準での測定に関するものである。
この辞書表現は、辞書のキーがサブシステムの基底ベクトルを表すqudit文字列であるKetのような表記法を用いている。 サブシステムの次元が10を超える場合は、サブシステムを区別できるように、整数の間にカンマ区切りが挿入される。
パラメーター
- qargs (None or list) – None の場合はすべてのサブシステムに対して返す (デフォルト: None)。
- decimals (None or int) – 値を丸める小数点以下の桁数。 None の場合、丸めは行われない(デフォルト:None)。
戻り値
ディクト(ケット)形式の測定確率。
戻りの型
purity
reset
reset(qargs=None)
状態またはサブシステムを0状態にリセットする。
パラメーター
qargs (list or None) – None の場合、すべてのサブシステムが 0 状態にリセットされます (デフォルト:None)。
戻り値
リセット状態。
戻りの型
追加情報:
すべてのサブシステムがリセットされると、すべてのサブシステムが初期状態に戻ります。 一部のサブシステムのみがリセットされた場合、この関数はリセットされた SuperOp サブシステムに基づいて進化を実行します。
reverse_qargs
reverse_qargs()
サブシステムの順序を逆にした DensityMatrix を返す。
テンソル積状態の場合、これはテンソル積部分系の順序を逆にすることと等価である。 密度行列 の場合、返される状態は となる。
戻り値
サブシステムの順序を逆にした状態。
戻りの型
sample_counts
sample_counts(shots, qargs=None)
量子ビットの測定結果のディクショ ンを計算基礎にサンプリングする。
パラメーター
戻り値
サンプル数辞書。
戻りの型
追加情報
この関数は*、* 現在の状態のメジャー
probabilities()を使用して測定結果をサンプリングします。 実際に測定を実施するわけではないので、現在の状態が変更されることはない。サンプリングに使用される乱数生成器のシードは、state
seed()のメソッドを使用して固定値に設定できます。
sample_memory
sample_memory(shots, qargs=None)
量子ビットの測定結果のリストを計算基礎にサンプリングする。
パラメーター
戻り値
サンプリング順に並べたサンプリングカウントの一覧。
戻りの型
np.array
追加情報
この関数は*、* 現在の状態のメジャー
probabilities()を使用して測定結果をサンプリングします。 実際に測定を実施するわけではないので、現在の状態が変更されることはない。サンプリングに使用される乱数生成器のシードは、state
seed()のメソッドを使用して固定値に設定できます。
seed
tensor
tensor(other)
テンソル積の状態 self ⊗ other を返す。
パラメーター
other (DensityMatrix) – 量子状態オブジェクト。
戻り値
テンソル積演算子 self ⊗ other。
戻りの型
レイズ
QiskitError - 他が量子状態でない場合
to_dict
to_dict(decimals=None)
密度行列を辞書形式に変換する。
この辞書表現は、辞書のキーがサブシステムの基底ベクトルを表すqudit文字列であるKetのような表記法を用いている。 サブシステムの次元が10を超える場合は、サブシステムを区別できるように、整数の間にカンマ区切りが挿入される。
パラメーター
decimals (None or int) – 値を丸める小数点以下の桁数。 None の場合、丸めは行われない(デフォルト:None)。
戻り値
DensityMatrix の辞書形式。
戻りの型
例
2量子ビット密度行列のケート形
from qiskit.quantum_info import DensityMatrix
rho = DensityMatrix.from_label('-0')
print(rho.to_dict()){
'00|00': (0.4999999999999999+0j),
'10|00': (-0.4999999999999999-0j),
'00|10': (-0.4999999999999999+0j),
'10|10': (0.4999999999999999+0j)
}非準ビット・サブシステムでは、整数の範囲は0から9までである。 例えば、クトリット・システムでは
import numpy as np
from qiskit.quantum_info import DensityMatrix
mat = np.zeros((9, 9))
mat[0, 0] = 0.25
mat[3, 3] = 0.25
mat[6, 6] = 0.25
mat[-1, -1] = 0.25
rho = DensityMatrix(mat, dims=(3, 3))
print(rho.to_dict()){'00|00': (0.25+0j), '10|10': (0.25+0j), '20|20': (0.25+0j), '22|22': (0.25+0j)}サブシステムの寸法が大きい場合は、区切りが必要である。 以下の例は、量子ビットと10次元量子ビットからなる20次元システムの場合である。
import numpy as np
from qiskit.quantum_info import DensityMatrix
mat = np.zeros((2 * 10, 2 * 10))
mat[0, 0] = 0.5
mat[-1, -1] = 0.5
rho = DensityMatrix(mat, dims=(2, 10))
print(rho.to_dict()){'00|00': (0.5+0j), '91|91': (0.5+0j)}to_operator
to_statevector
to_statevector(atol=None, rtol=None)
純粋密度行列から状態ベクトルを返す。
パラメーター
戻り値
純粋密度行列に対応する状態ベクトル。
唯一の非ゼロ固有値の固有ベクトルに対応する。
戻りの型
レイズ
QiskitError - 状態が純粋でなければ。