Skip to main content
IBM Quantum Platform

DensityMatrix

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

GitHub

Bases: QuantumState, TolerancesMixin

DensityMatrix classe

Inicializa um objeto de matriz de densidade.

Parâmetros

  • data (np.ndarray | list |QuantumCircuit |circuit.instruction.Instruction | QuantumState) – Um vetor de estado, uma instrução quântica ou um objeto com um método to_operator ou to_matrix a partir do qual a matriz de densidade pode ser construída. Se for um vetor, a matriz de densidade será construída como o projetor desse vetor. Se for uma instrução quântica, a matriz de densidade é construída presumindo-se que todos os qubits sejam inicializados no estado zero.
  • dims (int |tuple |list | None) – A dimensão do subsistema do estado (consulte informações adicionais).

Aumentos

QiskitError - se os dados de entrada não forem válidos.

Informações adicionais:

O dims kwarg pode ser None (Nenhum), um número inteiro ou um iterável de números inteiros.

  • Iterable - as dimensões do subsistema são os valores na lista com o número total de subsistemas dado pelo comprimento da lista.
  • Int ou None - a dimensão principal da matriz de entrada especifica a dimensão total da matriz de densidade. Se for uma potência de dois, o estado será inicializado como um estado N-qubit. Se não for uma potência de dois, o estado terá um único subsistema d-dimensional.

Atributos

atol

Valor Padrão: 1e-08

data

Dados de retorno.

dim

Retorna a dimensão total do estado.

num_qubits

Retorna o número de qubits se for um estado N-qubit ou None caso contrário.

rtol

Valor Padrão: 1e-05

settings

Configurações de retorno.


Métodos

conjugate

conjugate()

GitHub

Retorna o conjugado da matriz de densidade.

copy

copy()

GitHub

Faça uma cópia do operador atual.

dims

dims(qargs=None)

GitHub

Retorna uma tupla de dimensão de entrada para os subsistemas especificados.

draw

draw(output=None, **drawer_args)

GitHub

Retorna uma visualização da matriz de densidade.

repr : ASCII TextMatrix do site __repr__ do estado.

text : ASCII TextMatrix que pode ser impresso no console.

latex : Um objeto IPython Latex para exibição em Jupyter Notebooks.

latex_source : Fonte ASCII bruta e não compilada para gerar uma matriz usando LaTeX.

qsphere : Matplotlib figura, renderização da matriz de densidade usando plot_state_qsphere().

hinton : Matplotlib figura, renderização da matriz de densidade usando plot_state_hinton().

bloch : Matplotlib figura, renderização da matriz de densidade usando plot_bloch_multivector().

Parâmetros

  • output (str) – Selecione o método de saída a ser usado para desenhar o estado. As opções válidas são repr, text, latex, latex_source, qsphere, hinton ou bloch. O padrão é repr. O padrão pode ser alterado adicionando a linha state_drawer = <default> a ~/.qiskit/settings.conf em [default].
  • drawer_args - Argumentos a serem passados diretamente para a função de desenho ou construtor relevante ( TextMatrix( ), array_to_latex(), plot_state_qsphere(), plot_state_hinton() ou plot_bloch_multivector()). Consulte a função relevante em qiskit.visualization para obter a documentação da função.

Retorna

matplotlib.Figure ou str ou TextMatrix ou IPython.display.Latex: Representação da matriz de densidade.

Aumentos

ValueError - quando um método de saída inválido é selecionado.

evolve

evolve(other, qargs=None)

GitHub

Evolua um estado quântico por meio de um operador.

Parâmetros

Retorna

A matriz de densidade de saída.

Aumentos

QiskitError - se a dimensão do operador não corresponder às dimensões do subsistema QuantumState especificadas.

Tipo de retorno

DensityMatrix

expand

expand(other)

GitHub

Retorna o estado do produto tensorial other ⊗ self.

Parâmetros

other (DensityMatrix) – um objeto de estado quântico.

Retorna

o estado do produto tensorial other ⊗ self.

Tipo de retorno

DensityMatrix

Aumentos

QiskitError - se outro não for um estado quântico.

expectation_value

expectation_value(oper, qargs=None)

GitHub

Calcule o valor de expectativa de um operador.

Parâmetros

  • oper (Operator) – um operador para avaliar expval.
  • qargs (None or list) – subsistemas aos quais aplicar o operador.

Retorna

o valor esperado.

Tipo de retorno

complexo

from_instruction

classmethod from_instruction(instruction)

GitHub

Retorna a matriz de densidade de saída de uma instrução.

O vetor de estado é inicializado no estado 0,,0|{0,\ldots,0}\rangle com o mesmo número de qubits que a instrução ou o circuito de entrada, evoluído pela instrução de entrada, e o vetor de estado de saída é retornado.

Parâmetros

instruction (circuit.instruction.Instruction |QuantumCircuit) – instrução ou circuito

Retorna

A matriz de densidade final.

Aumentos

QiskitError - se a instrução contiver instruções inválidas para a simulação da matriz de densidade.

Tipo de retorno

DensityMatrix

from_int

static from_int(i, dims)

GitHub

Retorna uma matriz de densidade de estado de base computacional.

Parâmetros

  • i (int) – o elemento de estado da base.
  • dims (int ortuple orlist) – As dimensões do subsistema do vetor de estado (consulte informações adicionais).

Retorna

O estado da base computacional i ⁣i|i\rangle\!\langle i|.

Tipo de retorno

DensityMatrix

Informações adicionais:

O dims kwarg pode ser um número inteiro ou um iterável de números inteiros.

  • Iterable - as dimensões do subsistema são os valores na lista com o número total de subsistemas dado pelo comprimento da lista.
  • Int - o número inteiro especifica a dimensão total do estado. Se for uma potência de dois, o estado será inicializado como um estado N-qubit. Se não for uma potência de dois, o estado terá um único subsistema d-dimensional.

from_label

classmethod from_label(label)

GitHub

Retorna um produto tensorial de estados próprios de Pauli X, Y, Z.

Rótulo
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}

Parâmetros

label (string) – um rótulo de cadeia de estados próprios (consulte a tabela para ver os valores permitidos).

Retorna

A matriz de densidade de estado da base N-qubit.

Tipo de retorno

DensityMatrix

Aumentos

QiskitError - se o rótulo contiver caracteres inválidos ou se o comprimento do rótulo for maior do que um número_qubits explicitamente especificado.

is_valid

is_valid(atol=None, rtol=None)

GitHub

Retorna True se o traço for 1 e semidefinido positivo.

measure

measure(qargs=None)

GitHub

Medir os subsistemas e retornar o resultado e o estado pós-medição.

Observe que essa função usa o gerador interno de números aleatórios do site QuantumStates para amostrar o resultado da medição. A semente do RNG pode ser definida usando o método seed() método.

Parâmetros

qargs (list or None) – subsistemas para os quais as medições de amostra devem ser feitas; se nenhum, a medição de amostra de todos os subsistemas (Padrão: Nenhum).

Retorna

o par (outcome, state) onde outcome é o

rótulo da cadeia de caracteres do resultado da medição, e state é o estado recolhido pós-medição do resultado correspondente.

Tipo de retorno

tupla

partial_transpose

partial_transpose(qargs)

GitHub

Retorna a matriz de densidade parcialmente transposta.

Parâmetros

qargs (list) – Os subsistemas a serem transpostos.

Retorna

A matriz de densidade parcialmente transposta.

Tipo de retorno

DensityMatrix

probabilities

probabilities(qargs=None, decimals=None)

GitHub

Retorna o vetor de probabilidade de medição do subsistema.

As probabilidades de medição são relativas à medição na base de cálculo (diagonal).

Parâmetros

  • qargs (None or list) – subsistemas para os quais retornar as probabilidades; se nenhum, retornar para todos os subsistemas (Padrão: nenhum).
  • decimals (None or int) – o número de casas decimais para arredondar os valores. Se for None, nenhum arredondamento será feito (Padrão: None).

Retorna

A matriz de vetores Numpy de probabilidades.

Tipo de retorno

np.array

Exemplos

Considere um estado de produto de 2 qubits ρ=ρ1ρ0\rho=\rho_1\otimes\rho_0 com ρ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]

Também podemos permutar a ordem dos qubits na lista qargs para alterar a posição do qubit no resultado das probabilidades

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

Retorna o dicionário de probabilidade de medição do subsistema.

As probabilidades de medição são relativas à medição na base de cálculo (diagonal).

Essa representação de dicionário usa uma notação do tipo Ket, em que as chaves do dicionário são cadeias de caracteres qudit para os vetores de base do subsistema. Se algum subsistema tiver uma dimensão maior que 10, serão inseridos delimitadores de vírgula entre os números inteiros para que os subsistemas possam ser distinguidos.

Parâmetros

  • qargs (None or list) – subsistemas para os quais retornar as probabilidades; se nenhum, retornar para todos os subsistemas (Padrão: nenhum).
  • decimals (None or int) – o número de casas decimais para arredondar os valores. Se for None, nenhum arredondamento será feito (Padrão: None).

Retorna

As probabilidades de medição na forma dict (ket).

Tipo de retorno

dict

purity

purity()

GitHub

Retorna a pureza do estado quântico.

reset

reset(qargs=None)

GitHub

Redefine o estado ou os subsistemas para o estado 0.

Parâmetros

qargs (list or None) – subsistemas a serem redefinidos; se None, todos os subsistemas serão redefinidos para o estado 0 (Padrão: None).

Retorna

o estado de reinicialização.

Tipo de retorno

DensityMatrix

Informações adicionais:

Se todos os subsistemas forem reiniciados, isso restaurará o estado inicial em todos os subsistemas. Se apenas alguns subsistemas forem reiniciados, esta função executará a evolução a partir do reinício SuperOp desses subsistemas.

reverse_qargs

reverse_qargs()

GitHub

Retorna um DensityMatrix com ordenação de subsistema invertida.

Para um estado de produto tensorial, isso é equivalente a inverter a ordem dos subsistemas de produto tensorial. Para uma matriz de densidade ρ=ρn1...ρ0\rho = \rho_{n-1} \otimes ... \otimes \rho_0, o estado retornado será ρ0...ρn1\rho_0 \otimes ... \otimes \rho_{n-1}.

Retorna

o estado com a ordem do subsistema invertida.

Tipo de retorno

DensityMatrix

sample_counts

sample_counts(shots, qargs=None)

GitHub

Amostragem de um ditado de resultados de medição de qubit na base computacional.

Parâmetros

  • shots (int) – número de amostras a serem geradas.
  • qargs (None or list) – subsistemas para os quais as medições de amostra devem ser feitas; se nenhum, a medição de amostra de todos os subsistemas (Padrão: Nenhum).

Retorna

dicionário de contagens amostradas.

Tipo de retorno

Contagens

Mais informações:

Esta função amostra os resultados da medição usando a medida probabilities() para o estado atual e qargs. Na verdade, ele não implementa a medição, portanto, o estado atual não é modificado.

A semente do gerador de números aleatórios utilizada para a amostragem pode ser definida como um valor fixo por meio do método seed() state.

sample_memory

sample_memory(shots, qargs=None)

GitHub

Amostra de uma lista de resultados de medição de qubit na base computacional.

Parâmetros

  • shots (int) – número de amostras a serem geradas.
  • qargs (None or list) – subsistemas para os quais as medições de amostra devem ser feitas; se nenhum, a medição de amostra de todos os subsistemas (Padrão: Nenhum).

Retorna

lista das contagens amostradas na ordem em que foram amostradas.

Tipo de retorno

np.array

Mais informações:

Esta função amostra os resultados da medição usando a medida probabilities() para o estado atual e qargs. Na verdade, ele não implementa a medição, portanto, o estado atual não é modificado.

A semente do gerador de números aleatórios utilizada para a amostragem pode ser definida como um valor fixo por meio do método seed() state.

seed

seed(value=None)

GitHub

Defina a semente para o RNG de estado quântico.

tensor

tensor(other)

GitHub

Retorna o estado do produto tensorial self ⊗ other.

Parâmetros

other (DensityMatrix) – um objeto de estado quântico.

Retorna

o operador de produto tensorial self ⊗ other.

Tipo de retorno

DensityMatrix

Aumentos

QiskitError - se outro não for um estado quântico.

to_dict

to_dict(decimals=None)

GitHub

Converta a matriz de densidade para a forma de dicionário.

Essa representação de dicionário usa uma notação do tipo Ket, em que as chaves do dicionário são cadeias de caracteres qudit para os vetores de base do subsistema. Se algum subsistema tiver uma dimensão maior que 10, serão inseridos delimitadores de vírgula entre os números inteiros para que os subsistemas possam ser distinguidos.

Parâmetros

decimals (None or int) – o número de casas decimais para arredondar os valores. Se for None, nenhum arredondamento será feito (Padrão: None).

Retorna

a forma de dicionário do DensityMatrix.

Tipo de retorno

dict

Exemplos

A forma ket de uma matriz de densidade de 2 qubits 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)
}

Para subsistemas sem qubit, o intervalo de números inteiros pode ir de 0 a 9. Por exemplo, em um 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)}

Para grandes dimensões do subsistema, são necessários delimitadores. O exemplo a seguir é para um sistema de 20 dimensões que consiste em um qubit e um qudit de 10 dimensões.

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

Converter em operador

Tipo de retorno

Operador

to_statevector

to_statevector(atol=None, rtol=None)

GitHub

Retorna um vetor de estado de uma matriz de densidade pura.

Parâmetros

  • atol (float) – Tolerância absoluta para verificar a validade da operação.
  • rtol (float) – Tolerância relativa para verificar a validade da operação.

Retorna

O vetor de estado correspondente da matriz de densidade pura.

Corresponde ao vetor próprio do único valor próprio diferente de zero.

Tipo de retorno

Statevector

Aumentos

QiskitError - se o estado não for puro.

trace

trace()

GitHub

Retorna o traço da matriz de densidade.

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.