Vecteur d'état
class qiskit.quantum_info.Statevector(data, dims=None)
Bases : QuantumState, TolerancesMixin
Classe de vecteurs d'état
Initialise un objet de type vecteur d'état.
Paramètres
- data (np.ndarray | list |Statevector |Operator |QuantumCircuit |circuit.instruction.Instruction) – Données à partir desquelles le vecteur d'état peut être construit. Il peut s'agir soit d'un vecteur complexe, soit d'un autre vecteur d'état, soit d'un vecteur
Operatorà une seule colonne, soitQuantumCircuitd'un vecteur,Instructionsoit d'un vecteur. Si les données correspondent à un circuit ou à une instruction, le vecteur d'état est construit en supposant que tous les qubits sont initialisés à l'état zéro. - dims (int |tuple |list | None) – La dimension du sous-système de l'état (voir informations complémentaires).
Augmentations
QiskitError – si les données saisies ne sont pas valides.
Renseignements supplémentaires :
Le kwarg dims peut être None, un entier ou un itérable d'entiers.
Iterable- les dimensions du sous-système sont les valeurs de la liste, le nombre total de sous-systèmes étant donné par la longueur de la liste.IntouNone– la longueur du vecteur d'entrée détermine la dimension totale de l'état. S'il s'agit d'une puissance de deux, l'état sera initialisé comme un état à N qubits. Si ce n'est pas une puissance de deux, l'état comportera un seul sous-système de dimension d.
Attributs
atol
Valeur par défaut : 1e-08
data
Données de retour.
dim
Retourner la dimension totale de l'état.
num_qubits
Renvoie le nombre de qubits s'il s'agit d'un état à N qubits ou Aucun dans le cas contraire.
rtol
Valeur par défaut : 1e-05
settings
Paramètres de retour.
Méthodes
conjugate
copy
dims
draw
draw(output=None, **drawer_args)
Renvoie une visualisation du vecteur d'état.
repr : ASCII TextMatrix de l'État __repr__.
texte : ASCII TextMatrix qui peut être imprimé dans la console.
latex : Un objet IPython Latex à afficher dans les carnets Jupyter.
latex_source : Source ASCII brute, non compilée, pour générer un tableau à l'aide de LaTeX.
qsphere : Matplotlib figure, rendu du vecteur d'état en utilisant plot_state_qsphere().
hinton : Matplotlib figure, rendu du vecteur d'état en utilisant plot_state_hinton().
bloch : Matplotlib figure, rendu du vecteur d'état en utilisant plot_bloch_multivector().
city : Matplotlib figure, rendering of statevector using plot_state_city().
paulivec : Matplotlib figure, rendu du vecteur d'état en utilisant plot_state_paulivec().
Paramètres
- output (str) – Sélectionnez la méthode de sortie à utiliser pour dessiner l'état. Les choix valables sont repr, text, latex, latex_source, qsphere, hinton, bloch, city ou paulivec. La valeur par défaut est repr. La valeur par défaut peut être modifiée en ajoutant la ligne
state_drawer = <default>à~/.qiskit/settings.confsous[default]. - drawer_args - Arguments à passer directement à la fonction de dessin ou au constructeur correspondant ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() ou plot_bloch_multivector()). Voir la fonction concernée sur qiskit.visualization pour la documentation de cette fonction.
Retours
matplotlib.Figure ou str ou TextMatrix ou IPython.display.Latex: Dessin du vecteur État.
Augmentations
ValueError - lorsqu'une méthode de sortie non valide est sélectionnée.
Exemples
Tracé de l'un des états de Bell
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)
Retourne True si other est équivalent en tant que vecteur d'état jusqu'à la phase globale.
Si other n'est pas un vecteur d'état, mais peut être utilisé pour initialiser un objet vecteur d'état, ceci vérifiera que Statevector(other) est équivalent au vecteur d'état actuel jusqu'à la phase globale.
Paramètres
- other (Statevector) – un objet à partir duquel un site
Statevectorpeut être construit. - rtol (float) – valeur de tolérance relative à des fins de comparaison.
- atol (float) – valeur de tolérance absolue à des fins de comparaison.
Retours
Vrai si les vecteurs d'état sont équivalents jusqu'à la phase globale.
Type de retour
evolve
evolve(other, qargs=None)
Faire évoluer un état quantique par l'opérateur.
Paramètres
- other (Operator |QuantumCircuit |circuit.Instruction) – L'opérateur à développer.
- qargs (list) – une liste de positions du sous-système Statevector sur lesquelles appliquer l'opérateur.
Retours
l'état quantique de sortie.
Type de retour
Augmentations
QiskitError – si la dimension de l'opérateur ne correspond pas aux dimensions spécifiées pour le sous-système Statevector.
expand
expand(other)
Retourne le produit tensoriel état other ⊗ self.
Paramètres
other (Statevector) – un objet d'état quantique.
Retours
le produit tensoriel état autre ⊗ self.
Type de retour
Augmentations
QiskitError – si « autre » n'est pas un état quantique.
expectation_value
expectation_value(oper, qargs=None)
Calculer la valeur espérée d'un opérateur.
Paramètres
- oper (Operator) – un opérateur pour évaluer l'expval de.
- qargs (None or list) – les sous-systèmes sur lesquels appliquer l'opérateur.
Retours
la valeur attendue.
Type de retour
from_circuit
classmethod from_circuit(circuit, ignore_set_layout=False)
Créer un vecteur d'état à partir d'un circuit quantique.
Paramètres
- circuit (QuantumCircuit) – Un circuit quantique
- ignore_set_layout (bool) – Lorsque cette option est activée
True, si l'entréecircuita une disposition définie, celle-ci sera ignorée. Valeur par défautFalse:.
Retours
Le vecteur d'état obtenu en appliquant le circuit à l'état d'entrée tout à zéro.
Type de retour
Exemple
Créer un vecteur d'état à partir d'un circuit transpilé :
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)) # Truefrom_instruction
classmethod from_instruction(instruction)
Renvoie le vecteur d'état de sortie d'une instruction.
Le vecteur d'état est initialisé dans l'état du même nombre de qubits que l'instruction ou le circuit d'entrée, évolué par l'instruction d'entrée, et le vecteur d'état de sortie est renvoyé.
Paramètres
instruction (qiskit.circuit.Instruction orQuantumCircuit) – instruction ou circuit
Retours
Le vecteur d'état final.
Type de retour
Augmentations
QiskitError – si l'instruction contient des instructions non valides pour la simulation du vecteur d'état.
from_int
static from_int(i, dims)
Renvoie un vecteur d'état de la base de calcul.
Paramètres
- i (int) – l'élément d'état de base.
- dims (int ortuple orlist) – Les dimensions du sous-système du vecteur d'état (voir informations complémentaires).
Retours
L'état de base de calcul .
Type de retour
Renseignements supplémentaires :
Le kwarg dims peut être un entier ou un itérable d'entiers.
Iterable- les dimensions du sous-système sont les valeurs de la liste, le nombre total de sous-systèmes étant donné par la longueur de la liste.Int- l'entier spécifie la dimension totale de l'état. S'il s'agit d'une puissance de deux, l'état sera initialisé comme un état à N qubits. S'il ne s'agit pas d'une puissance de deux, l'État aura un seul sous-système d-dimensionnel.
from_label
classmethod from_label(label)
Retourne un produit tensoriel des états propres de Pauli X,Y,Z.
Libellé | Vecteur d'état |
|---|---|
"0" | |
"1" | |
"+" | |
"-" | |
"r" | |
"l" |
Paramètres
label (string) – une étiquette de chaîne de ket d'état propre (voir le tableau pour les valeurs autorisées).
Retours
Le vecteur d'état de la base à N qubits.
Type de retour
Augmentations
QiskitError – si l'étiquette contient des caractères non valides, ou si la longueur de l'étiquette dépasse le nombre de qubits explicitement spécifié num_qubits.
inner
inner(other)
Renvoyer le produit intérieur de soi et de l'autre sous la forme .
Paramètres
other (Statevector) – un objet d'état quantique.
Retours
le produit intérieur du soi et de l'autre, .
Type de retour
np.complex128
Augmentations
QiskitError – si « autre » ne désigne pas un état quantique ou si sa dimension est différente.
is_valid
is_valid(atol=None, rtol=None)
Retourne True si un vecteur d'état a une norme 1.
Paramètres
Type de retour
measure
measure(qargs=None)
Mesurer les sous-systèmes et renvoyer le résultat et l'état post-mesure.
Notez que cette fonction utilise le générateur de nombres aléatoires interne de QuantumStates pour l'échantillonnage du résultat de la mesure. La graine RNG peut être définie à l'aide de la méthode seed() méthode.
Paramètres
qargs (list or None) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).
Retours
la paire (outcome, state) où outcome est le
l'étiquette de la chaîne de caractères du résultat de la mesure, et state l'état post-mesure effondré pour le résultat correspondant.
Type de retour
probabilities
probabilities(qargs=None, decimals=None)
Retourne le vecteur de probabilité de mesure du sous-système.
Les probabilités de mesure se rapportent à la mesure dans la base de calcul (diagonale).
Paramètres
- qargs (None or list) – sous-systèmes pour lesquels les probabilités doivent être renvoyées, si aucun, elles doivent être renvoyées pour tous les sous-systèmes (par défaut : aucun).
- decimals (None or int) – le nombre de décimales à arrondir. Si elle est nulle, aucun arrondi n'est effectué (par défaut : aucun).
Retours
Le tableau de vecteurs Numpy des probabilités.
Type de retour
np.array
Exemples
Considérons un état produit de 2 qubits .
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]Nous pouvons également permuter l'ordre des qubits dans la liste qargs pour modifier la position du qubit dans la sortie des probabilités
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)
Retourne le dictionnaire des probabilités de mesure du sous-système.
Les probabilités de mesure se rapportent à la mesure dans la base de calcul (diagonale).
Cette représentation du dictionnaire utilise une notation de type Ket où les clés du dictionnaire sont des chaînes de caractères pour les vecteurs de base du sous-système. Si un sous-système a une dimension supérieure à 10, des virgules sont insérées entre les nombres entiers afin de pouvoir distinguer les sous-systèmes.
Paramètres
- qargs (None or list) – sous-systèmes pour lesquels les probabilités doivent être renvoyées, si aucun, elles doivent être renvoyées pour tous les sous-systèmes (par défaut : aucun).
- decimals (None or int) – le nombre de décimales à arrondir. Si elle est nulle, aucun arrondi n'est effectué (par défaut : aucun).
Retours
Les probabilités de mesure sous forme de dict (ket).
Type de retour
purity
reset
reset(qargs=None)
Réinitialiser l'état ou les sous-systèmes à l'état 0.
Paramètres
qargs (list or None) – sous-systèmes à réinitialiser, si Aucun, tous les sous-systèmes seront réinitialisés à l'état 0 (par défaut : Aucun).
Retours
l'état de réinitialisation.
Type de retour
Renseignements supplémentaires :
Si tous les sous-systèmes sont réinitialisés, cela rétablit l'état de base sur tous les sous-systèmes. Si seuls certains sous-systèmes sont réinitialisés, cette fonction effectuera une mesure sur ces sous-systèmes et les fera évoluer de manière à ce que les états effondrés après la mesure soient ramenés à l'état zéro. La graine du générateur de nombres aléatoires (RNG) pour cet échantillonnage peut être définie à l'aide de la seed() méthode.
reverse_qargs
reverse_qargs()
Retourne un vecteur d'état avec l'ordre inversé des sous-systèmes.
Pour un produit tensoriel, cela revient à inverser l'ordre des sous-systèmes du produit tensoriel. Pour un vecteur d'état , le vecteur d'état retourné sera .
Retours
le vecteur d'État avec l'ordre inversé des sous-systèmes.
Type de retour
sample_counts
sample_counts(shots, qargs=None)
Échantillonner une série de résultats de mesures de qubits dans la base de calcul.
Paramètres
- shots (int) – le nombre d'échantillons à générer.
- qargs (None or list) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).
Retours
dictionnaire des comptages échantillonnés.
Type de retour
Information supplémentaires :
Cette fonction échantillonne les résultats des mesures en utilisant la mesure
probabilities()pour l'état actuel et les qargs. Il ne met pas en œuvre la mesure, de sorte que l'état actuel n'est pas modifié.La graine du générateur de nombres aléatoires utilisée pour l'échantillonnage peut être définie sur une valeur fixe à l'aide de la méthode
seed()state.
sample_memory
sample_memory(shots, qargs=None)
Échantillonner une liste de résultats de mesures de qubits dans la base de calcul.
Paramètres
- shots (int) – le nombre d'échantillons à générer.
- qargs (None or list) – sous-systèmes pour lesquels les mesures doivent être échantillonnées; si aucun, les mesures de tous les sous-systèmes doivent être échantillonnées (valeur par défaut : aucun).
Retours
liste des valeurs échantillonnées dans l'ordre où elles ont été relevées.
Type de retour
np.array
Information supplémentaires :
Cette fonction échantillonne les résultats des mesures en utilisant la mesure
probabilities()pour l'état actuel et les qargs. Il ne met pas en œuvre la mesure, de sorte que l'état actuel n'est pas modifié.La graine du générateur de nombres aléatoires utilisée pour l'échantillonnage peut être définie sur une valeur fixe à l'aide de la méthode
seed()state.
seed
tensor
tensor(other)
Retourne le produit tensoriel état self ⊗ other.
Paramètres
other (Statevector) – un objet d'état quantique.
Retours
l'opérateur de produit tensoriel self ⊗ other.
Type de retour
Augmentations
QiskitError – si « autre » n'est pas un état quantique.
to_dict
to_dict(decimals=None)
Convertit le vecteur d'état en dictionnaire.
Cette représentation du dictionnaire utilise une notation de type Ket où les clés du dictionnaire sont des chaînes de caractères pour les vecteurs de base du sous-système. Si un sous-système a une dimension supérieure à 10, des virgules sont insérées entre les nombres entiers afin de pouvoir distinguer les sous-systèmes.
Paramètres
decimals (None or int) – le nombre de décimales à arrondir. Si elle est nulle, aucun arrondi n'est effectué (par défaut : aucun).
Retours
la forme dictionnaire du vecteur d'état.
Type de retour
Exemple
La forme cétale d'un vecteur d'état à 2 qubits
from qiskit.quantum_info import Statevector
psi = Statevector.from_label('-0')
print(psi.to_dict()){'00': (0.7071067811865475+0j), '10': (-0.7071067811865475+0j)}Pour les sous-systèmes non quantiques, la plage de nombres entiers peut aller de 0 à 9. Par exemple, dans un système qutrit
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)}Pour les grandes dimensions des sous-systèmes, des délimiteurs sont nécessaires. L'exemple suivant concerne un système à 20 dimensions composé d'un qubit et d'un qudit à 10 dimensions.
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
trace
trace()
Retourne la trace de l'état quantique sous la forme d'une matrice de densité.
Type de retour
float64