Skip to main content
IBM Quantum Platform

DensityMatrix

class qiskit.quantum_info.DensityMatrix(data, dims=None)

GitHub

ベース: 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

conjugate()

GitHub

密度行列の共役を返す。

copy

copy()

GitHub

現在のオペレータのコピーを作成する。

dims

dims(qargs=None)

GitHub

指定されたサブシステムの入力次元のタプルを返す。

draw

draw(output=None, **drawer_args)

GitHub

密度行列の可視化結果を返す。

再掲 :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.confstate_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)

GitHub

演算子によって量子状態を進化させる。

パラメーター

戻り値

出力密度行列。

レイズ

QiskitError - 演算子のディメンジョンが、指定された QuantumState サブシステムのディメンジョンと一致しない場合。

戻りの型

DensityMatrix

expand

expand(other)

GitHub

テンソル積の状態 other ⊗ self を返す。

パラメーター

other (DensityMatrix) – 量子状態オブジェクト。

戻り値

テンソル積の状態 other ⊗ self.

戻りの型

DensityMatrix

レイズ

QiskitError - 他が量子状態でない場合

expectation_value

expectation_value(oper, qargs=None)

GitHub

演算子の期待値を計算する。

パラメーター

  • oper (Operator) – expvalを評価する演算子。
  • qargs (None or list) – オペレータを適用するサブシステム。

戻り値

期待値

戻りの型

複合

from_instruction

classmethod from_instruction(instruction)

GitHub

命令の出力密度行列を返す。

状態ベクトルは、入力命令または回路と同じ数の量子ビットの状態( 0,,0|{0,\ldots,0}\rangle )で初期化され、入力命令によって進化し、出力状態ベクトルが返される。

パラメーター

instruction (circuit.instruction.Instruction |QuantumCircuit) – 命令または回路

戻り値

最終的な密度行列。

レイズ

QiskitError - 命令に密度行列シミュレーションの無効な命令が含まれている場合。

戻りの型

DensityMatrix

from_int

static from_int(i, dims)

GitHub

計算基底状態密度行列を返す。

パラメーター

  • i (int) – 基底状態要素。
  • dims (int ortuple orlist) – ステートベクトルのサブシステム次元(追加情報参照)。

戻り値

計算基礎状態 i ⁣i|i\rangle\!\langle i|

戻りの型

DensityMatrix

追加情報:

dims kwargは整数または整数の反復可能値である。

  • Iterable - サブシステムの次元はリストの値であり、サブシステムの総数はリストの長さで与えられる。
  • Int - 整数は状態の総次元を指定する。 それが2のべき乗であれば、状態はN量子ビット状態として初期化される。 もしそれが2のべき乗でなければ、状態は1つのd次元サブシステムを持つことになる。

from_label

classmethod from_label(label)

GitHub

Pauli X,Y,Z 固有状態のテンソル積を返す。

ラベル
状態ベクトル
"0"(1000)\begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}
"1"(0001)\begin{pmatrix} 0 & 0 \\ 0 & 1 \end{pmatrix}
"+"12(1111)\frac{1}{2}\begin{pmatrix} 1 & 1 \\ 1 & 1 \end{pmatrix}
"-"12(1111)\frac{1}{2}\begin{pmatrix} 1 & -1 \\ -1 & 1 \end{pmatrix}
"r"12(1ii1)\frac{1}{2}\begin{pmatrix} 1 & -i \\ i & 1 \end{pmatrix}
"l"12(1ii1)\frac{1}{2}\begin{pmatrix} 1 & i \\ -i & 1 \end{pmatrix}

パラメーター

label (string) – 固有状態の文字列(ketラベル)(許容される値については表を参照)。

戻り値

N量子ビット基底状態密度行列。

戻りの型

DensityMatrix

レイズ

QiskitError - ラベルに無効な文字が含まれているか、ラベルの長さが明示的に指定された num_qubits より大きい場合。

is_valid

is_valid(atol=None, rtol=None)

GitHub

トレース1で正の半正定値なら真を返す。

measure

measure(qargs=None)

GitHub

サブシステムを測定し、結果と測定後の状態を返す。

この関数は、測定結果のサンプリングに QuantumStates 内部乱数発生器を使用することに注意してください。 RNGシードは seed() メソッドで設定できます。

パラメーター

qargs (list or None) – None の場合は、すべてのサブシステムの測定をサンプリングする。

戻り値

ペア (outcome, state) outcome

測定結果の文字列ラベルであり、 state は対応する測定結果の折りたたまれた測定後の状態である。

戻りの型

タプル

partial_transpose

partial_transpose(qargs)

GitHub

部分転置密度行列を返す。

パラメーター

qargs (list) – 移設されるサブシステム。

戻り値

部分転置密度行列。

戻りの型

DensityMatrix

probabilities

probabilities(qargs=None, decimals=None)

GitHub

サブシステムの測定確率ベクトルを返す。

測定確率は、計算(対角)基準での測定に関するものである。

パラメーター

  • qargs (None or list) – None の場合はすべてのサブシステムに対して返す (デフォルト: None)。
  • decimals (None or int) – 値を丸める小数点以下の桁数。 None の場合、丸めは行われない(デフォルト:None)。

戻り値

確率のNumpyベクトル配列。

戻りの型

np.array

ρ1=+ ⁣+\rho_1=|+\rangle\!\langle+|, ρ0=0 ⁣0\rho_0=|0\rangle\!\langle0| を持つ2量子ビット積状態 ρ=ρ1ρ0\rho=\rho_1\otimes\rho_0 を考える。

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)

GitHub

サブシステムの測定確率辞書を返す。

測定確率は、計算(対角)基準での測定に関するものである。

この辞書表現は、辞書のキーがサブシステムの基底ベクトルを表すqudit文字列であるKetのような表記法を用いている。 サブシステムの次元が10を超える場合は、サブシステムを区別できるように、整数の間にカンマ区切りが挿入される。

パラメーター

  • qargs (None or list) – None の場合はすべてのサブシステムに対して返す (デフォルト: None)。
  • decimals (None or int) – 値を丸める小数点以下の桁数。 None の場合、丸めは行われない(デフォルト:None)。

戻り値

ディクト(ケット)形式の測定確率。

戻りの型

dict

purity

purity()

GitHub

量子状態の純度を返す。

reset

reset(qargs=None)

GitHub

状態またはサブシステムを0状態にリセットする。

パラメーター

qargs (list or None) – None の場合、すべてのサブシステムが 0 状態にリセットされます (デフォルト:None)。

戻り値

リセット状態。

戻りの型

DensityMatrix

追加情報:

すべてのサブシステムがリセットされると、すべてのサブシステムが初期状態に戻ります。 一部のサブシステムのみがリセットされた場合、この関数はリセットされた SuperOp サブシステムに基づいて進化を実行します。

reverse_qargs

reverse_qargs()

GitHub

サブシステムの順序を逆にした DensityMatrix を返す。

テンソル積状態の場合、これはテンソル積部分系の順序を逆にすることと等価である。 密度行列 ρ=ρn1...ρ0\rho = \rho_{n-1} \otimes ... \otimes \rho_0 の場合、返される状態は ρ0...ρn1\rho_0 \otimes ... \otimes \rho_{n-1} となる。

戻り値

サブシステムの順序を逆にした状態。

戻りの型

DensityMatrix

sample_counts

sample_counts(shots, qargs=None)

GitHub

量子ビットの測定結果のディクショ ンを計算基礎にサンプリングする。

パラメーター

  • shots (int) – 生成するサンプル数。
  • qargs (None or list) – None の場合は、すべてのサブシステムの測定をサンプリングする。

戻り値

サンプル数辞書。

戻りの型

カウント

追加情報

この関数は*、* 現在の状態のメジャー probabilities() を使用して測定結果をサンプリングします。 実際に測定を実施するわけではないので、現在の状態が変更されることはない。

サンプリングに使用される乱数生成器のシードは、state seed() のメソッドを使用して固定値に設定できます。

sample_memory

sample_memory(shots, qargs=None)

GitHub

量子ビットの測定結果のリストを計算基礎にサンプリングする。

パラメーター

  • shots (int) – 生成するサンプル数。
  • qargs (None or list) – None の場合は、すべてのサブシステムの測定をサンプリングする。

戻り値

サンプリング順に並べたサンプリングカウントの一覧。

戻りの型

np.array

追加情報

この関数は*、* 現在の状態のメジャー probabilities() を使用して測定結果をサンプリングします。 実際に測定を実施するわけではないので、現在の状態が変更されることはない。

サンプリングに使用される乱数生成器のシードは、state seed() のメソッドを使用して固定値に設定できます。

seed

seed(value=None)

GitHub

量子状態RNGのシードを設定する。

tensor

tensor(other)

GitHub

テンソル積の状態 self ⊗ other を返す。

パラメーター

other (DensityMatrix) – 量子状態オブジェクト。

戻り値

テンソル積演算子 self ⊗ other。

戻りの型

DensityMatrix

レイズ

QiskitError - 他が量子状態でない場合

to_dict

to_dict(decimals=None)

GitHub

密度行列を辞書形式に変換する。

この辞書表現は、辞書のキーがサブシステムの基底ベクトルを表すqudit文字列であるKetのような表記法を用いている。 サブシステムの次元が10を超える場合は、サブシステムを区別できるように、整数の間にカンマ区切りが挿入される。

パラメーター

decimals (None or int) – 値を丸める小数点以下の桁数。 None の場合、丸めは行われない(デフォルト:None)。

戻り値

DensityMatrix の辞書形式。

戻りの型

dict

2量子ビット密度行列のケート形 rho= ⁣0 ⁣0rho = |-\rangle\!\langle -|\otimes |0\rangle\!\langle 0|

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_operator()

GitHub

演算子への変換

戻りの型

オペレーター

to_statevector

to_statevector(atol=None, rtol=None)

GitHub

純粋密度行列から状態ベクトルを返す。

パラメーター

  • atol (float) – 動作の妥当性をチェックするための絶対許容誤差。
  • rtol (float) – 操作の妥当性をチェックするための相対的な許容誤差。

戻り値

純粋密度行列に対応する状態ベクトル。

唯一の非ゼロ固有値の固有ベクトルに対応する。

戻りの型

状態ベクトル

レイズ

QiskitError - 状態が純粋でなければ。

trace

trace()

GitHub

密度行列のトレースを返す。

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。