Skip to main content
IBM Quantum Platform

状態ベクトル

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

GitHub

ベース: QuantumState, TolerancesMixin

状態ベクトルクラス

ステートベクトル・オブジェクトを初期化する。

パラメーター

  • data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – 状態ベクトルを構築するためのデータ。 これは複素数ベクトル、別の状態ベクトル、1列のみの Operator 、または QuantumCircuit または Instruction のいずれかである。 データが回路または命令の場合、すべての量子ビットがゼロ状態に初期化されていると仮定して状態ベクトルが構成される。
  • dims (int |tuple |list | None) – 状態のサブシステム次元(追加情報を参照)。

レイズ

QiskitError - 入力データが有効でない場合。

追加情報:

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

  • Iterable - サブシステムの次元はリストの値であり、サブシステムの総数はリストの長さで与えられる。
  • Int または None – 入力ベクトルの長さが状態の総次元を決定する。 2の累乗である場合、状態はN量子ビットの状態として初期化されます。 2の冪でない場合、その状態は単一の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

Statevectorを可視化して返す。

再掲 :ASCII TextMatrix 州の __repr__

テキストで表示されます:ASCII TextMatrix コンソールに表示できる。

latex :Jupyterノートブックで表示するためのIPython Latexオブジェクト。

latex_source : LaTeX を用いて配列を生成する、コンパイルされていない生の ASCII ソース。

qsphere : Matplotlib figure, plot_state_qsphere()を使用した状態ベクトルのレンダリング。

hinton : Matplotlib figure, rendering of statevector using plot_state_hinton().

bloch : Matplotlib figure, plot_bloch_multivector()を使用した状態ベクトルのレンダリング。

city : Matplotlib figure, rendering of statevector using plot_state_city().

paulivec : Matplotlib figure, rendering of statevector using plot_state_paulivec().

パラメーター

  • output (str) – 状態の描画に使用する出力方法を選択します。 有効な選択肢は、repr、text、latex、latex_source、qsphere、hinton、bloch、city、paulivecである。 デフォルトは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 - 無効な出力方法が選択された場合。

プロット

from numpy import sqrt
from qiskit.quantum_info import Statevector
sv=Statevector([1/sqrt(2), 0, 0, -1/sqrt(2)])
sv.draw(output='hinton')
前のコードからの出力。

equiv

equiv(other, rtol=None, atol=None)

GitHub

他方がグローバル位相までの状態ベクトルとして等価であれば真を返す。

otherがステートベクタではないが、ステートベクタオブジェクトの初期化に使用できる場合、これはStatevector(other)がグローバルフェーズまでの現在のステートベクタと等価であることをチェックします。

パラメーター

  • other (Statevector) – Statevector を構築できるオブジェクト。
  • rtol (float) – 比較のための相対公差値。
  • atol (float) – 比較のための絶対許容値。

戻り値

状態ベクトルがグローバル位相まで等価であれば真。

戻りの型

bool

evolve

evolve(other, qargs=None)

GitHub

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

パラメーター

戻り値

出力量子状態。

戻りの型

状態ベクトル

レイズ

QiskitError - 演算子の次元が指定されたStatevectorサブシステムの次元と一致しない場合。

expand

expand(other)

GitHub

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

パラメーター

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

戻り値

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

戻りの型

状態ベクトル

レイズ

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

expectation_value

expectation_value(oper, qargs=None)

GitHub

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

パラメーター

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

戻り値

期待値

戻りの型

複合

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False)

GitHub

量子回路から状態ベクトルを作成する。

パラメーター

  • circuit (QuantumCircuit) – 量子回路
  • ignore_set_layout (bool) – に設定されている True場合、入力にレイアウト circuit が設定されていても無視されます。 デフォルトは. Falseです。

戻り値

回路を全ゼロ入力状態に適用して得られる状態ベクトル。

戻りの型

状態ベクトル

トランスパイルされた回路から状態ベクトルを作成する:

from qiskit import QuantumCircuit, transpile
from qiskit.quantum_info import Statevector
from qiskit.providers.basic_provider import BasicSimulator

qc = QuantumCircuit(3)
qc.h(0)
qc.cx(0, 1)
qc.swap(1, 2)

backend = BasicSimulator()
transpiled1 = transpile(qc, backend, optimization_level=0)
transpiled2 = transpile(qc, backend, optimization_level=2)

# Get statevectors accounting for layout changes
sv1 = Statevector.from_circuit(transpiled1)
sv2 = Statevector.from_circuit(transpiled2)

# These will be equivalent up to global phase
print(sv1.equiv(sv2))  # True

from_instruction

classmethod from_instruction(instruction)

GitHub

命令の出力ステートベクトルを返す。

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

パラメーター

instruction (qiskit.circuit.Instruction orQuantumCircuit) – 命令または回路

戻り値

最終的な状態ベクトル。

戻りの型

状態ベクトル

レイズ

QiskitError - ステートベクトル・シミュレーションに無効な命令が含まれている場合。

from_int

static from_int(i, dims)

GitHub

計算基底の状態ベクトルを返す。

パラメーター

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

戻り値

計算基礎状態 i|i\rangle

戻りの型

状態ベクトル

追加情報:

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

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

from_label

classmethod from_label(label)

GitHub

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

ラベル
状態ベクトル
"0"[1,0][1, 0]
"1"[0,1][0, 1]
"+"[1/2,1/2][1 / \sqrt{2}, 1 / \sqrt{2}]
"-"[1/2,1/2][1 / \sqrt{2}, -1 / \sqrt{2}]
"r"[1/2,i/2][1 / \sqrt{2}, i / \sqrt{2}]
"l"[1/2,i/2][1 / \sqrt{2}, -i / \sqrt{2}]

パラメーター

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

戻り値

N量子ビットの基底状態のベクトル。

戻りの型

状態ベクトル

レイズ

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

inner

inner(other)

GitHub

自己と他者の内積を selfother\langle self| other \rangle として返す。

パラメーター

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

戻り値

自他の内積、 selfother\langle self| other \rangle

戻りの型

np.complex128

レイズ

QiskitError - もう一方が量子状態でない場合、あるいは次元が異なる場合。

is_valid

is_valid(atol=None, rtol=None)

GitHub

Statevectorがノルム1を持つ場合、Trueを返す。

パラメーター

戻りの型

bool

measure

measure(qargs=None)

GitHub

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

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

パラメーター

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

戻り値

ペア (outcome, state) outcome

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

戻りの型

タプル

probabilities

probabilities(qargs=None, decimals=None)

GitHub

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

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

パラメーター

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

戻り値

確率のNumpyベクトル配列。

戻りの型

np.array

2量子ビットの積状態 ψ=+0|\psi\rangle=|+\rangle\otimes|0\rangle を考える。

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities()
print('probs: {}'.format(probs))

# Probabilities for measuring only qubit-0
probs_qubit_0 = psi.probabilities([0])
print('Qubit-0 probs: {}'.format(probs_qubit_0))

# Probabilities for measuring only qubit-1
probs_qubit_1 = psi.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 Statevector

psi = Statevector.from_label('+0')

# Probabilities for measuring both qubits
probs = psi.probabilities([0, 1])
print('probs: {}'.format(probs))

# Probabilities for measuring both qubits
# but swapping qubits 0 and 1 in output
probs_swapped = psi.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

量子状態の純度を返す。

戻りの型

float64

reset

reset(qargs=None)

GitHub

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

パラメーター

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

戻り値

リセット状態。

戻りの型

状態ベクトル

追加情報:

すべてのサブシステムがリセットされると、すべてのサブシステムが初期状態に戻ります。 一部のサブシステムのみがリセットされた場合、この関数はそれらのサブシステムに対して測定を行い、測定後の収縮状態が0状態へと回転するようにサブシステムを進化させます。 このサンプリングのRNGシードは、seed() method を使用して設定できます。

reverse_qargs

reverse_qargs()

GitHub

サブシステムの順序を逆にしたステートベクトルを返す。

テンソル積状態の場合、これはテンソル積部分系の順序を逆にすることと等価である。 状態ベクトル ψ=ψn1...ψ0|\psi \rangle = |\psi_{n-1} \rangle \otimes ... \otimes |\psi_0 \rangle の場合、返される状態ベクトルは ψ0...ψn1|\psi_{0} \rangle \otimes ... \otimes |\psi_{n-1} \rangle となる。

戻り値

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

戻りの型

状態ベクトル

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 (Statevector) – 量子状態オブジェクト。

戻り値

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

戻りの型

状態ベクトル

レイズ

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

to_dict

to_dict(decimals=None)

GitHub

状態ベクトルを辞書形式に変換する。

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

パラメーター

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

戻り値

ステートベクトルの辞書形式。

戻りの型

dict

2量子ビットの状態ベクトルのケート形 ψ=0|\psi\rangle = |-\rangle\otimes |0\rangle

from qiskit.quantum_info import Statevector

psi = Statevector.from_label('-0')
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}

非準ビット・サブシステムでは、整数の範囲は0から9までである。 例えば、クトリット・システムでは

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(9)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(3, 3))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '22': (0.7071067811865475+0j)}

サブシステムの寸法が大きい場合は、区切りが必要である。 以下の例は、量子ビットと10次元量子ビットからなる20次元システムの場合である。

import numpy as np
from qiskit.quantum_info import Statevector

vec = np.zeros(2 * 10)
vec[0] = 1 / np.sqrt(2)
vec[-1] = 1 / np.sqrt(2)
psi = Statevector(vec, dims=(2, 10))
print(psi.to_dict())
{'00': (0.7071067811865475+0j), '91': (0.7071067811865475+0j)}

to_operator

to_operator()

GitHub

状態を rank-1 プロジェクターオペレーターに変換する

戻りの型

オペレーター

trace

trace()

GitHub

量子状態のトレースを密度行列として返す。

戻りの型

float64

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