truncamiento antes de matriz exponencial: ¿cómo hacerlo bien?

Estoy tratando de calcular (numéricamente) las matrices de algunas operaciones ópticas cuánticas simples, que en principio son unitarias. Sin embargo, en mi caso son unitarios en un espacio de dimensión infinita, por lo que tengo que truncarlos. El resultado ya no es necesariamente unitario, pero si todas las entradas son correctas hasta el tamaño que elijo, estoy feliz.

Así que calculo el generador, lo trunco ​​al tamaño de mi gusto y luego lo exponencio, ¿verdad? No. No funciona de esa manera: las entradas pueden estar muy equivocadas. En algunos casos son casi correctos, en otros casos están todos desordenados.

Ejemplo 1 : el divisor de haz Exp [ i θ ( a b + a b ) ] .

  1. calcular a y a hasta la dimensión (digamos) metro .
  2. multiplicarlos con el producto kronecker
  3. exponenciar

resultado: las entradas son casi correctas, a excepción de la última fila y columna de ambos espacios como en esta figura (para metro = 4 ):

ingrese la descripción de la imagen aquí

Las únicas partes correctas son las que están en los espacios en blanco. En este caso la solución es truncar a y a medir metro + 1 y luego tirar las filas/columnas incorrectas.

Ejemplo 2 : el exprimidor monomodo Exp [ 1 2 ( z a 2 z a 2 ) ]

Todo esto es un lío: a medida que aumento el tamaño de a , las entradas del resultado final (que están colocadas correctamente en un "patrón de tablero de ajedrez") parecen converger a sus valores correctos, pero para tener el primer (digamos) bloque 4x4 algo correcto, tengo que truncar a a metro 50 y luego truncar el resultado de la exponenciación a un tamaño de 4x4.

¿Estoy haciendo esto de la manera incorrecta? Eventualmente me gustaría producir las matrices de operaciones más bien no lineales, donde el a y a los operadores estan elevados a grandes potencias, como puedo saber si lo estoy haciendo bien?

ACTUALIZACIÓN: En el primer caso (el divisor de haz) el unitario está en S tu ( 2 ) , que es compacto y admite irreps de dimensión finita. Entonces puedo exponenciarlos individualmente y de esos puedo construir el unitario truncado 😁

En el segundo caso (el exprimidor) el unitario está en S tu ( 1 , 1 ) que no es compacto y, de hecho, el operador de Casimir tiene dos espacios propios de dimensión infinita: uno correspondiente a estados pares y otro impar de Fock. También para el exprimidor de dos modos, los espacios propios del Casimir son de dimensión infinita (aunque contablemente infinitos). Entonces no puedo usar el método multiplete en este caso.

Puede que sea demasiado ingenuo, pero si tuviera que hacer algo así, intentaría diagonalizar el generador. METRO = tu D tu 1 y luego mi X pag ( METRO ) = tu mi X pag ( D ) tu 1 . ¿Quizás ayude? Mantenme informado, me interesa la respuesta.
Esto es precisamente lo que está haciendo la matriz exponencial detrás de escena.
No. Eche un vistazo a lo que hace Matlab, por ejemplo.
Sí. Que es el mismo algoritmo que scipy.linalg.expm ( docs.scipy.org/doc/scipy-0.15.1/reference/generated/… ). Utiliza un pade aproximant, y no la diagonalización de la matriz.
Ok, bastante justo, pero el resultado es el mismo. Si calculo la matriz exponencial con Exp ( METRO ) = tu Exp ( D ) tu 1 Tengo el mismo problema.
En teoría sí, el resultado es el mismo. Pero, ¿ha verificado explícitamente sus ejemplos específicos?
@Ziofil Para el Ejemplo 1 , es posible que desee observar que
[ a b + a b , a a + b b ] = 0
lo que te dice que la matriz exponencial tiene subespacios propios muy limpios, divididos por estados con un número total dado de a y b cuantos Para el Ejemplo 2 y la operación del exprimidor, las cosas son más complicadas. Es posible que desee aprovechar su descomposición su(1,1) subyacente y su propia acción en a y a .
Si, muy buen punto! Aunque, como SU (1,1) no es compacto, ¿no me meteré en el mismo problema debido a los multipletes de dimensión infinita?
¿Hay algo como la forma normal de Jordan para que las multiplicaciones de matrices no se mezclen tanto en casos de dimensiones infinitas?
¿Quiere la forma explícita de los operadores de compresión/desplazamiento/etc. sobre la base de Fock? ¿Por qué no encontrarlos explícitamente? Todos son conocidos analíticamente. ¿O es esto un sustituto de un operador más complicado? Si es así, debe especificar la forma de ese, porque puede ser más complicado en el lado numérico.
Sí, estoy tratando de encontrarlos explícitamente. ¿Tienes referencias?

Respuestas (3)

Encontré la respuesta, al menos para algunos de los casos que pensé que eran intratables, incluidos mis ejemplos. La herramienta principal es el teorema de desenredado para el grupo relevante.

Ejemplo 1 : la transformación está en S tu ( 2 ) , entonces necesitamos el S tu ( 2 ) teorema de desenredo:

Exp ( z j + z j ) = Exp ( τ + j + ) Exp ( τ 0 j 0 ) Exp ( τ j )
Aquí { j 0 , j ± } satisfacer el s tu ( 2 ) relaciones algebraicas: [ j ± , j 0 ] = j ± ,   [ j , j + ] = 2 j 0 , y si z = r mi i ϕ , entonces τ ± = ± mi ± i ϕ broncearse ( r ) , τ 0 = 2 registro segundo ( r ) . Si aplicamos esto a la transformación del divisor de haz en la forma tu ( θ ) = Exp [ θ ( a b a b ) ] , obtenemos
tu ( θ ) = Exp ( broncearse ( θ ) a b ) Exp [ registro segundo ( θ ) ( a a b b ) ] Exp ( broncearse ( θ ) a b )
que no tiene problemas de truncamiento.

Ejemplo 2 : la transformación está en S tu ( 1 , 1 ) , entonces necesitamos el S tu ( 1 , 1 ) teorema de desenredo:

Exp ( z k + z k ) = Exp ( σ + k + ) Exp ( σ 0 k 0 ) Exp ( σ k )
Aquí { k 0 , k ± } satisfacer el s tu ( 1 , 1 ) relaciones algebraicas: [ k ± , k 0 ] = k ± ,   [ k , k + ] = 2 k 0 , y si z = r mi i ϕ , entonces σ ± = ± mi ± i ϕ bronceado ( r ) , σ 0 = 2 registro aporrear ( r ) . Si aplicamos esto al operador de compresión S ( z ) = Exp [ z a 2 2 z a 2 2 ] , obtenemos
S ( z ) = Exp ( mi i ϕ bronceado ( | z | ) a 2 2 ) Exp ( registro aporrear ( | z | ) ( a a + 1 2 ) ) Exp ( mi i ϕ bronceado ( | z | ) a 2 2 )
que no tiene problemas de truncamiento.

Caso general : en general, puede ser imposible tener un teorema de desenredado adecuado, pero resultados como este pueden ayudar a aproximarlo (consulte la ecuación (30)-(35) para los dos ejemplos anteriores).

Espero que esto ayude a aquellos que se tropiecen con mi mismo problema.

¿Entiendes por qué no tienes los mismos problemas con esta forma de S(z)? ¿Se comporta mejor cada nueva matriz exponencial, o es la combinación de las tres las que compensan los errores de truncamiento?
Es el hecho (supongo) que en cada exponencial el generador es diagonal ( k 0 ) o diagonal superior/inferior ( k ± ), por lo que cada exponencial es diagonal o triangular superior/inferior.

Como cuestión práctica, esto es algo en lo que espera que la exponenciación converja a medida que crece el tamaño de la entrada truncada. Entonces, sin saber nada sobre el problema en cuestión, me gustaría

  1. encontrar el tamaño deseado de la matriz de respuesta (digamos, norte × norte ),
  2. truncar la matriz de entrada al doble de ese tamaño ( 2 norte × 2 norte ) y calcular la exponencial,
  3. calcular el exponencial de nuevo en uno más grande ( [ 2 norte + 1 ] × [ 2 norte + 1 ] ),
  4. ver si el norte × norte matriz ha convergido a la precisión numérica deseada, si lo ha hecho, terminar, si no, duplicar de nuevo, etc.

Idealmente, como mencionó @Adam en un comentario, encontraría los vectores propios y los valores propios del operador/matriz en cuestión para hacer el cálculo. Examinar ese enfoque es instructivo para determinar si el algoritmo anterior puede converger. Si la expresión del operador original es:

A i j = k V k i λ k V k j ,
entonces la exponencial es:
[ Exp ( A ) ] i j = k V k i mi λ k V k j .

La convergencia de la segunda expresión requiere que los vectores propios no mezclen demasiado los estados, de lo contrario la suma divergirá. Por ejemplo, si los valores propios crecen linealmente con k entonces los vectores propios tienen que caer más rápido que exponencialmente en i k . En el caso ideal, cada vector propio tendrá un número finito de componentes, lo que garantiza la convergencia, pero puede que no siempre sea así.

Si una matriz A no es diagonal o en la forma normal de Jordan, entonces tienes que truncar la exponencial B = mi A después de calcularlo, y no solo truncar la matriz A y luego calcular B . Esto se debe a que los elementos de la matriz A norte metro , norte , metro > norte , que descuidas al truncar A a norte × norte , están contribuyendo a los elementos de la matriz B norte metro , norte , metro norte , como se puede ver al expandir B = I + A + 1 2 A 2 + . las contribuciones a B norte metro , norte , metro norte , de A 2 etc. que descuidas al truncar A a norte × norte , son k = norte + 1 A norte k A k metro , etc., que en general no son cero. Lo que puede hacer es tratar de calcular explícitamente los elementos de la matriz norte | B | metro en base Fock, hasta norte . Sin embargo, esto no es práctico y se puede hacer en casos limitados, por ejemplo, para el operador de desplazamiento D ( α ) = Exp ( α a ^ α a ^ ) :

norte | D ( α ) | metro = ( norte ! / metro ! ) 1 / 2 α metro norte mi | α | 2 / 2 L norte ( norte metro ) ( | α | 2 ) ,
dónde L son polinomios de Laguerre asociados (ver Glauber). Desafortunadamente para el operador de compresión S ( ξ ) , ξ = r mi i θ , puede calcular fácilmente solo la primera columna y fila, usando
2 norte | S ( ξ ) | 0 = ( bronceado r ) norte aporrear r ( 2 norte ) ! 2 norte norte ! mi i norte θ ,
2 norte + 1 | S ( ξ ) | 0 = 0
para norte = 0 , . . . , norte .