Representación matricial de densidad de una función de onda en quan

Autor: Zen y el arte de la programación informática

1. Introducción

La representación de la matriz de densidad es un concepto muy importante en la mecánica cuántica. Midiendo el estado de los electrones, el estado del procesador y la información del estado de otros sistemas físicos, se puede obtener la matriz de densidad correspondiente. La matriz de densidad medida se puede visualizar por algún medio, como el diagrama de esfera de Bloch, el espectrograma, etc. En los últimos años, con el auge del aprendizaje automático, cada vez más investigadores intentan utilizar métodos de aprendizaje automático para predecir la información de la matriz de densidad.

Por otro lado, la tomografía de función de onda (WFT) también es un método de cálculo clásico y muy significativo. WFT utiliza la información de la matriz de densidad medida y la descompone en coeficientes de la función de onda para obtener la función de onda real, lo que nos ayuda a comprender las propiedades del sistema físico real que originalmente están ocultas en los resultados de la medición.

En una reciente conferencia técnica de WFT, los datos de espectrometría de masas basada en RMN impulsaron una investigación de vanguardia en WFT. Este artículo combinará la teoría clásica de WFT y su tecnología de implementación para explicar cómo codificar la matriz de densidad en mecánica cuántica y cómo restaurar la matriz de densidad codificada en una función de onda real.

2. Explicación de conceptos y términos básicos

  1. Estado cuántico: el estado cuántico se refiere al estado de un sistema objetivo compuesto por un conjunto de qubits deterministas y sus diversas interacciones de restricciones. El estado aquí puede ser una oscilación bipolar o una curva de resonancia, o puede ser una función de onda arbitrariamente compleja.

  2. Medición: La medición consiste en extraer aleatoriamente información específica de este estado de un determinado estado cuántico. Se puede dividir en mediciones físicas (como preparar un determinado dispositivo de medición para medir un estado cuántico específico y luego usar el dispositivo de medición para medir el número correspondiente de partículas), o se puede simular mediante cálculo (como generar una muestra aleatoria). puntos basados ​​en una distribución de probabilidad, y luego estimar la matriz de densidad correspondiente basada en los resultados del muestreo).

  3. Matriz de densidad: Matriz de densidad, una forma matricial utilizada para describir la distribución de la función de onda de un sistema. Cuando un sistema se encuentra en diferentes estados, ocupará diferentes posiciones según ciertas distribuciones de probabilidad, y estas distribuciones de probabilidad se caracterizan por matrices de densidad. Cada fila y columna de la matriz corresponde a un estado propio del sistema, y ​​cada elemento representa la probabilidad del estado propio. Para un conjunto dado de parámetros, la matriz de densidad puede describir de forma única la distribución de todos los posibles estados de mezcla locales de un sistema.

  4. Tomografía de función de onda: la topología de función de onda, también conocida como reconstrucción de función de onda o reconstrucción de fonones, es un proceso que utiliza información de la matriz de densidad medida para descomponerla en coeficientes de la función de onda para reconstruir la función de onda real. Su principio básico es utilizar el efecto de entrelazamiento que aparece en los resultados de la medición para asignar diferentes tipos de resultados de medición a espacios de diferentes dimensiones, restaurando así la función de onda real.

3. Explicación de los principios básicos del algoritmo, pasos operativos específicos y fórmulas matemáticas.

(1) Codificación de la matriz de densidad.

3.1.Representación de matriz de densidad y regla de nacimiento

Supongamos que tenemos un sistema cuántico con N qubits, cada uno de los cuales es mensurable. Supongamos que el estado cuántico que queremos medir es una distribución de probabilidad representada por un conjunto de vectores complejos en un espacio euclidiano de N dimensiones. Entonces podemos hacer las siguientes restricciones sobre estos vectores:

  1. Cada vector debe satisfacer especificaciones acordadas, es decir, condiciones de normalización. Es decir, Σ|ψi|^2=1. Esto se debe a que sabemos que la energía total del sistema solo está relacionada con la energía de los positrones en el sistema, por lo que cada vector obtenido después de la normalización estará estandarizado y cumplirá las condiciones de normalización, por lo que puede representar la distribución de probabilidad.

  2. Todo vector debe satisfacer el lema de convención: Δ|ψi-ψj|=sqrt{α {ij}^2+β {ij}^2}. Aquí α y β son el impulso entre dos qubits diferentes.

De esta forma, se puede obtener una matriz de densidad ρ(x) del estado cuántico ρ(x). Pero esta matriz de densidad es demasiado grande para usarse directamente en la computación cuántica. Para comprimir esta matriz de densidad, se puede utilizar el siguiente método:

  1. Realice la descomposición de valores singulares en la matriz de densidad anterior para obtener dos matrices diagonales reales N × N U y D, donde los elementos en D son valores singulares. Denotado como σ (x) = np.diag (D), el número de elementos en la matriz diagonal D es igual al número de valores singulares k de la matriz.

  2. Comprima la matriz σ(x) en un vector unidimensional de longitud k, denotado como v(x). donde v(x)[i] = np.trace(U[i:,:]*U[:i,:], i representa el subíndice correspondiente al i-ésimo valor singular. Este paso equivale a reorganizar la U matriz El orden es tal que los vectores con valores singulares más grandes vienen primero y los vectores con valores singulares más pequeños vienen después.

  3. Utilice v(x) para reemplazar la matriz de densidad original σ(x) como matriz de densidad codificada.

3.2.Codificación de la distribución de probabilidad en un vector compacto mediante descomposición de Wigner

La descomposición de Wigner puede convertir cualquier distribución de probabilidad ρ(x) en una matriz de rotación de Wigner W(x). La matriz de rotación de Wigner es una matriz compleja y cada columna es una "función de Wigner", que describe la naturaleza de la probabilidad correspondiente a cualquier impulso representado por α y β. Se define como:

γ(a,b;l,m,n)=(delta_l delta_m)^(-1/2)*(δ (nm)δ (al)+δ (am)δ (bn)-δ (an)δ ( bm))

donde δ_nm representa el símbolo delta de Kronecker. Para cualquier sistema de ecuaciones Ax = b, si hay una matriz invertible X, entonces se puede usar X para resolver en lugar de A. Esta sustitución se llama proyección de Wigner. Usando la proyección de Wigner, podemos descomponer una matriz de densidad ρ(x) en una matriz de rotación de Wigner W(x) y una matriz de valor singular σ(x).

  1. Utilice la descomposición de Wigner para expresar la distribución de probabilidad ρ(x) en una matriz de rotación de Wigner W(x) y una matriz de valor singular σ(x).

    w(x) = sqrt(σ(x)) * U(x), U(x) es una matriz diagonal real cuyos elementos son γ(a,b;l,m,n).

    W(x) es una matriz compleja de N*N dimensiones. Para las coordenadas dadas (θ,φ), utilice el siguiente método para calcular:

    1. Si θ=π/2, φ=0, entonces directamente sea w(x)[i][j]=1/√2*(σ(x)[i]-σ(x)[j]).

    2. Si θ=0, φ=θ, entonces sea w(x)[i][j]=1/√2*(σ(x)[i]+σ(x)[j])/sqrt(2).

    3. De lo contrario, utilice la fórmula trigonométrica para calcular w(x)[i][j].

    4. Convierta w(x) a la forma de U(x).

    La distribución de probabilidad ρ(x) está representada por la matriz de rotación de Wigner W(x) y la matriz de valor singular σ(x).

  2. Comprima la matriz de rotación de Wigner W (x) y la matriz de valores singulares σ (x) en un vector unidimensional de longitud k.

    v(x)=[sqrt(σ(x))[0]] + [sqrt(σ(x))[i]/sqrt(σ(x)[i-1])] para i de 1 a k- 1.

    En este paso, primero realizamos una operación de raíz cuadrada en cada elemento de la matriz de valores singulares σ(x). Luego, divide la raíz cuadrada de cada valor singular por el producto de las raíces cuadradas de todos los elementos anteriores para obtener el factor de normalización. Podemos usar este factor de normalización para ordenar los valores singulares, lo que da como resultado un vector v(x) más compacto.

(2) Decodificación de la matriz de densidad a la distribución de probabilidad

3.3.Decodificar el vector compacto a una distribución de probabilidad

Para recuperar la distribución de probabilidad original ρ(x) a partir de v(x), se necesita la técnica de proyección de Wigner. Primero, necesitamos obtener la matriz U(x). Corte v(x) para obtener el elemento correspondiente al primer valor singular. Coloque los valores cortados en la función delta para obtener deltam (v (x)). A continuación, aproximamos δm(v(x)) usando la fórmula de expansión de Taylor y obtenemos el dual δm(v(x))/(2J+1). Los valores cortados se llevan nuevamente a la función delta para obtener deltan (v (x)). Luego, use la fórmula de expansión de Taylor para aproximar δn(v(x)) y obtener el dual δn(v(x))/(2J+1). Finalmente, al calcular repetidamente la función δ usando el cociente de δm(v(x))/δn(v(x)), obtenemos δmm(v(x)), δmn(v(x)), δnn(v( x) ). Luego, podemos usar la fórmula de expansión de Taylor para aproximar δmm(v(x)), δmn(v(x)), δnn(v(x)) y obtener γm(θ,φ), γn(θ,φ).Finalmente , podemos obtener la matriz w(x), cuyos elementos están dados por γm(θ,φ) γn(θ,φ) exp(I(θ+φ)/2)(θ+φ)=exp(I(θ + φ)/2) (Función Wigner). Entonces, podemos exponenciar w(x) para obtener ρ(x).

La distribución de probabilidad ρ(x) está representada por v(x). Podemos utilizar la tecnología de proyección de Wigner para recuperar la distribución de probabilidad original ρ(x) a partir de v(x).

3.4.Implementación del algoritmo de descomposición de Wigner en Python

El siguiente es el código de implementación del algoritmo de descomposición de Wigner en lenguaje Python:

import numpy as np
from scipy import linalg
import math

def wigner_decomp(psi):
    # convert the complex vectors into real matrices with N^2 elements each
    psi_mat = np.zeros((len(psi), len(psi)))
    for i in range(len(psi)):
        psi_mat[:, i] = psi[i].real**2 + psi[i].imag**2

    # calculate trace of square root of psi_mat to get the variance vector
    var_vec = np.diag(linalg.eigh(psi_mat)[0]**0.5)

    # apply Born Rule to obtain the density matrix
    rho = np.dot(var_vec.T, var_vec) / float(len(psi)**2)

    # use svd to compress the density matrix to a vector of length k
    u, s, vt = linalg.svd(rho)
    if np.sum(s > 1e-9)<len(s):
       raise ValueError('Error: SVD did not converge')

    vect = []
    for j in range(len(s)):
        factor = s[j] / sum([sj for idx, sj in enumerate(s) if idx<=j])
        vect.append(factor)

    return np.array(vect), var_vec

if __name__ == '__main__':
    # Example usage
    n_qubits = 2
    x = {'0': 0, '1': 1, '+': 0.7071, '-': -0.7071}

    psi = {}
    for key in itertools.product(['0', '1'], repeat=n_qubits):
        str_key = ''.join(key)
        if str_key in ['0'*n_qubits, '1'*n_qubits]:
            continue
        value = complex(0,0)
        for qubit in range(n_qubits):
            basis = int(str_key[-(qubit+1)])
            amplitide = (complex(x[basis], 0) if qubit==0 else 1.)
            phase = ((-1)**int(str_key[qubit])) * (-math.pi/2)**(n_qubits-qubit-1)
            value += amplitide * np.exp(phase * 1j)

        psi[str_key] = value

    vec, var_vec = wigner_decomp(psi.values())
    print("Vector form:", vec)
    print("Variance vector:", var_vec)

Supongo que te gusta

Origin blog.csdn.net/universsky2015/article/details/133566042
Recomendado
Clasificación