Skip to main content
IBM Quantum Platform

DensityMatrix

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

GitHub

Basi: QuantumState, TolerancesMixin

DensityMatrix classe

Inizializza un oggetto matrice di densità.

Parametri

  • data (np.ndarray | list |QuantumCircuit |circuit.instruction.Instruction | QuantumState) – Un vettore di stato, un’istruzione quantistica o un oggetto dotato di un to_operator metodo o to_matrix da cui sia possibile ricavare la matrice di densità. Se si considera un vettore, la matrice di densità è definita come il proiettore di tale vettore. Nel caso di un'istruzione quantistica, la matrice di densità viene costruita ipotizzando che tutti i qubit siano inizializzati nello stato zero.
  • dims (int |tuple |list | None) – La dimensione del sottosistema dello stato (vedere informazioni aggiuntive).

Aumenti

QiskitError – se i dati inseriti non sono validi.

Ulteriori informazioni:

Il kwarg dims può essere Nessuno, un intero o un iterabile di interi.

  • Iterable - le dimensioni del sottosistema sono i valori dell'elenco e il numero totale di sottosistemi è dato dalla lunghezza dell'elenco.
  • Int o None - la dimensione principale della matrice di input specifica la dimensione totale della matrice di densità. Se è una potenza di due, lo stato sarà inizializzato come uno stato a N-qubit. Se non è una potenza di due, lo stato avrà un singolo sottosistema d-dimensionale.

Attributi

atol

Valore predefinito: 1e-08

data

Dati di ritorno.

dim

Restituisce la dimensione totale dello stato.

num_qubits

Restituisce il numero di qubit se si tratta di uno stato a N qubit o altrimenti None.

rtol

Valore predefinito: 1e-05

settings

Impostazioni di ritorno.


Metodi

conjugate

conjugate()

GitHub

Restituisce il coniugato della matrice di densità.

copy

copy()

GitHub

Eseguire una copia dell'operatore corrente.

dims

dims(qargs=None)

GitHub

Restituisce una tupla di dimensioni di ingresso per i sottosistemi specificati.

draw

draw(output=None, **drawer_args)

GitHub

Restituisce una rappresentazione grafica della matrice di densità.

ripr: ASCII TextMatrix dello Stato __repr__.

testo : ASCII TextMatrix che può essere stampato nella console.

latex : Un oggetto IPython Latex da visualizzare in Jupyter Notebook.

latex_source : Sorgente ASCII grezzo e non compilato per generare l'array usando LaTeX.

qsphere : Matplotlib figura, rendering della matrice di densità usando plot_state_qsphere().

hinton : Matplotlib figura, rendering della matrice di densità usando plot_state_hinton().

bloch : Matplotlib figura, rendering della matrice di densità usando plot_bloch_multivector().

Parametri

  • output (str) – Selezionare il metodo di uscita da utilizzare per disegnare lo stato. Le scelte valide sono repr, text, latex, latex_source, qsphere, hinton o bloch. L'impostazione predefinita è repr. Il valore predefinito può essere modificato aggiungendo la riga state_drawer = <default> a ~/.qiskit/settings.conf sotto [default].
  • drawer_args - Argomenti da passare direttamente alla funzione o al costruttore di disegno pertinente ( TextMatrix( ), array_to_latex(), plot\state_qsphere(), plot\state_hinton() o plot_bloch\multivector()). Per la documentazione della funzione in questione, consultare la relativa funzione all'indirizzo qiskit.visualization.

Risultati

matplotlib.Figure oppure str oppure TextMatrix oppure IPython.display.Latex: Rappresentazione grafica della matrice di densità.

Aumenti

ValueError - quando viene selezionato un metodo di uscita non valido.

evolve

evolve(other, qargs=None)

GitHub

Evolvere uno stato quantistico mediante un operatore.

Parametri

Risultati

La matrice di densità di uscita.

Aumenti

QiskitError – se la dimensione dell'operatore non corrisponde alle dimensioni specificate del sottosistema QuantumState.

Tipo di restituzione

DensityMatrix

expand

expand(other)

GitHub

Restituisce il prodotto tensoriale dello stato altro ⊗ self.

Parametri

other (DensityMatrix) – un oggetto di stato quantistico.

Risultati

il prodotto tensoriale di altri stati ⊗ self.

Tipo di restituzione

DensityMatrix

Aumenti

QiskitError – se “altro” non è uno stato quantistico.

expectation_value

expectation_value(oper, qargs=None)

GitHub

Calcolo del valore di aspettativa di un operatore.

Parametri

  • oper (Operator) – un operatore per valutare expval.
  • qargs (None or list) – sottosistemi su cui applicare l'operatore.

Risultati

il valore di aspettativa.

Tipo di restituzione

complesso

from_instruction

classmethod from_instruction(instruction)

GitHub

Restituisce la matrice di densità di uscita di un'istruzione.

Lo statevector viene inizializzato nello stato 0,,0|{0,\ldots,0}\rangle dello stesso numero di qubit dell'istruzione o del circuito di ingresso, evoluto dall'istruzione di ingresso, e lo statevector di uscita viene restituito.

Parametri

instruction (circuit.instruction.Instruction |QuantumCircuit) – istruzione o circuito

Risultati

La matrice di densità finale.

Aumenti

QiskitError – se l'istruzione contiene comandi non validi per la simulazione della matrice di densità.

Tipo di restituzione

DensityMatrix

from_int

static from_int(i, dims)

GitHub

Restituisce una matrice di densità degli stati della base computazionale.

Parametri

  • i (int) – l'elemento di stato base.
  • dims (int ortuple orlist) – Le dimensioni del sottosistema del vettore di stato (vedere informazioni aggiuntive).

Risultati

Lo stato di base computazionale i ⁣i|i\rangle\!\langle i|.

Tipo di restituzione

DensityMatrix

Ulteriori informazioni:

Il kwarg di dims può essere un intero o un iterabile di interi.

  • Iterable - le dimensioni del sottosistema sono i valori dell'elenco e il numero totale di sottosistemi è dato dalla lunghezza dell'elenco.
  • Int - il numero intero specifica la dimensione totale dello stato. Se è una potenza di due, lo stato sarà inizializzato come uno stato a N-qubit. Se non è una potenza di due, lo stato avrà un singolo sottosistema d-dimensionale.

from_label

classmethod from_label(label)

GitHub

Restituisce un prodotto tensoriale di autostati di Pauli X,Y,Z.

Etichetta
Statevector
"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}

Parametri

label (string) – un'etichetta ket per una stringa di stati propri (vedere la tabella per i valori consentiti).

Risultati

La matrice di densità degli stati base di N-qubit.

Tipo di restituzione

DensityMatrix

Aumenti

QiskitError – se l'etichetta contiene caratteri non validi oppure se la lunghezza dell'etichetta è superiore a un numero di qubit specificato esplicitamente (num_qubits).

is_valid

is_valid(atol=None, rtol=None)

GitHub

Restituisce True se la traccia 1 è semidefinita positiva.

measure

measure(qargs=None)

GitHub

Misurare i sottosistemi e restituire i risultati e lo stato post-misura.

Si noti che questa funzione utilizza il generatore di numeri casuali interno a QuantumStates per il campionamento del risultato della misurazione. Il seme RNG può essere impostato con il metodo seed() metodo.

Parametri

qargs (list or None) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).

Risultati

la coppia (outcome, state) dove outcome è la coppia

e state è lo stato post-misurazione collassato per l'esito corrispondente.

Tipo di restituzione

tupla

partial_transpose

partial_transpose(qargs)

GitHub

Restituisce la matrice di densità parzialmente trasposta.

Parametri

qargs (list) – I sottosistemi da trasporre.

Risultati

La matrice di densità parzialmente trasposta.

Tipo di restituzione

DensityMatrix

probabilities

probabilities(qargs=None, decimals=None)

GitHub

Restituisce il vettore della probabilità di misurazione del sottosistema.

Le probabilità di misurazione sono rispetto alla misurazione nella base di calcolo (diagonale).

Parametri

  • qargs (None or list) – sottosistemi per i quali restituire le probabilità, se Nessuno restituisce tutte le probabilità per tutti i sottosistemi (predefinito: Nessuno).
  • decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).

Risultati

L'array di vettori Numpy delle probabilità.

Tipo di restituzione

np.array

Esempi

Si consideri uno stato prodotto a 2 qubit ρ=ρ1ρ0\rho=\rho_1\otimes\rho_0 con ρ1=+ ⁣+\rho_1=|+\rangle\!\langle+|, ρ0=0 ⁣0\rho_0=|0\rangle\!\langle0|.

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]

Possiamo anche cambiare l'ordine dei qubit nell'elenco qargs per modificare la posizione del qubit nell'output delle probabilità

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

Restituisce il dizionario delle probabilità di misurazione del sottosistema.

Le probabilità di misurazione sono rispetto alla misurazione nella base di calcolo (diagonale).

Questa rappresentazione del dizionario utilizza una notazione simile a Ket, in cui le chiavi del dizionario sono stringhe di qudit per i vettori base del sottosistema. Se un sottosistema ha una dimensione superiore a 10, si inseriscono dei delimitatori di virgola tra i numeri interi per distinguere i sottosistemi.

Parametri

  • qargs (None or list) – sottosistemi per i quali restituire le probabilità, se Nessuno restituisce tutte le probabilità per tutti i sottosistemi (predefinito: Nessuno).
  • decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).

Risultati

Le probabilità di misura nella forma dict (ket).

Tipo di restituzione

dict

purity

purity()

GitHub

Restituisce la purezza dello stato quantico.

reset

reset(qargs=None)

GitHub

Ripristina lo stato o i sottosistemi allo stato 0.

Parametri

qargs (list or None) – se Nessuno, tutti i sottosistemi saranno ripristinati allo stato 0 (predefinito: Nessuno).

Risultati

lo stato di reset.

Tipo di restituzione

DensityMatrix

Ulteriori informazioni:

Se tutti i sottosistemi vengono resettati, questa operazione ripristinerà lo stato di base su tutti i sottosistemi. Se vengono ripristinati solo alcuni sottosistemi, questa funzione eseguirà l'evoluzione a partire dal ripristino SuperOp dei sottosistemi in questione.

reverse_qargs

reverse_qargs()

GitHub

Restituisce un DensityMatrix con l'ordine dei sottosistemi invertito.

Per uno stato prodotto tensoriale questo equivale a invertire l'ordine dei sottosistemi del prodotto tensoriale. Per una matrice di densità ρ=ρn1...ρ0\rho = \rho_{n-1} \otimes ... \otimes \rho_0 lo stato restituito sarà ρ0...ρn1\rho_0 \otimes ... \otimes \rho_{n-1}.

Risultati

lo stato con ordine dei sottosistemi invertito.

Tipo di restituzione

DensityMatrix

sample_counts

sample_counts(shots, qargs=None)

GitHub

Campionare un insieme di risultati di misura dei qubit nella base computazionale.

Parametri

  • shots (int) – numero di campioni da generare.
  • qargs (None or list) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).

Risultati

dizionario dei conteggi campionati.

Tipo di restituzione

Conteggi

Ulteriori informazioni:

Questa funzione campiona i risultati della misurazione utilizzando la misura probabilities() per lo stato corrente e i qarg. Non implementa effettivamente la misura, quindi lo stato corrente non viene modificato.

Il seme del generatore di numeri casuali utilizzato per il campionamento può essere impostato su un valore fisso utilizzando il metodo state seed().

sample_memory

sample_memory(shots, qargs=None)

GitHub

Campionare un elenco di risultati di misura dei qubit nella base computazionale.

Parametri

  • shots (int) – numero di campioni da generare.
  • qargs (None or list) – sottosistemi per i quali campionare le misure, se Nessuno campiona le misure di tutti i sottosistemi (predefinito: Nessuno).

Risultati

elenco dei conteggi campionati nell'ordine in cui sono stati campionati.

Tipo di restituzione

np.array

Ulteriori informazioni:

Questa funzione campiona i risultati della misurazione utilizzando la misura probabilities() per lo stato corrente e i qarg. Non implementa effettivamente la misura, quindi lo stato corrente non viene modificato.

Il seme del generatore di numeri casuali utilizzato per il campionamento può essere impostato su un valore fisso utilizzando il metodo state seed().

seed

seed(value=None)

GitHub

Impostare il seme per l'RNG a stati quantici.

tensor

tensor(other)

GitHub

Restituisce il prodotto tensoriale dello stato self ⊗ other.

Parametri

other (DensityMatrix) – un oggetto di stato quantistico.

Risultati

l'operatore prodotto tensoriale self ⊗ other.

Tipo di restituzione

DensityMatrix

Aumenti

QiskitError – se “altro” non è uno stato quantistico.

to_dict

to_dict(decimals=None)

GitHub

Convertire la matrice di densità in forma di dizionario.

Questa rappresentazione del dizionario utilizza una notazione simile a Ket, in cui le chiavi del dizionario sono stringhe di qudit per i vettori base del sottosistema. Se un sottosistema ha una dimensione superiore a 10, si inseriscono dei delimitatori di virgola tra i numeri interi per distinguere i sottosistemi.

Parametri

decimals (None or int) – il numero di cifre decimali da arrotondare. Se Nessuno, non viene effettuato alcun arrotondamento (valore predefinito: Nessuno).

Risultati

la forma del dizionario di DensityMatrix.

Tipo di restituzione

dict

Esempi

La forma ket di una matrice di densità a 2 equbit 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)
}

Per i sottosistemi non-qubit l'intervallo di numeri interi può andare da 0 a 9. Ad esempio, in un sistema qutrit

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)}

Per le grandi dimensioni del sottosistema sono necessari dei delimitatori. L'esempio seguente riguarda un sistema a 20 dimensioni composto da un qubit e da un qudit a 10 dimensioni.

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

Convertire in operatore

Tipo di restituzione

Operatore

to_statevector

to_statevector(atol=None, rtol=None)

GitHub

Restituisce un vettore di stati da una matrice di densità pura.

Parametri

  • atol (float) – Tolleranza assoluta per il controllo della validità dell'operazione.
  • rtol (float) – Tolleranza relativa per il controllo della validità dell'operazione.

Risultati

Il vettore di stato corrispondente alla matrice di densità pura.

Corrisponde all'autovettore dell'unico autovalore non nullo.

Tipo di restituzione

Statevector

Aumenti

QiskitError – se lo stato non è puro.

trace

trace()

GitHub

Restituisce la traccia della matrice di densità.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.