Actualmente estoy escribiendo un programa básico en python para simular una teoría de calibre de molinos yang dimensional 1 + 1 con grupo de simetría .
En la red se trabaja con variables de enlace, que son matrices definidas formalmente como , dónde y donde es el generador de la grupo. La acción de la red está relacionada con las plaquetas en la red, donde una plaqueta es el producto cerrado más pequeño de las variables de enlace en la red. Para ser claro: es un vector de matrices: tendrías una matriz para cada . Entonces es una matriz SU(N), como es .
El algoritmo de actualización de monte carlo funciona así. Observamos un enlace en la red de forma individual y sugerimos un cambio en dicha variable de enlace, (donde u es la dirección del enlace; en 1 + 1 dimensiones es o ) Luego calculamos el cambio en la acción que ocurriría si aceptáramos el cambio . Si el cambio en la acción, , es negativo entonces aceptamos el cambio. Si el cambio en la acción, es positivo entonces aceptamos el cambio con una probabilidad de . Hacemos este proceso para cada variable de enlace en la red.
Entonces; aquí está mi pregunta. ¿Cómo propongo cambios suficientemente pequeños en una matriz SU(N) de modo que la probabilidad de aceptación promedio no sea absurdamente pequeña? No creo que pueda proponer cambios de forma. , dónde es una matriz SU(N) 'pequeña' (si es que existe tal cosa), ya que no creo que la suma de dos matrices SU(N) sea generalmente SU(N). Simplemente podría generar matrices aleatorias SU(N), y luego seleccione aleatoriamente una de esas matrices para ser mi variable de enlace propuesta . Cuando implemento esto, sin embargo, termino con 's con grandes magnitudes, lo que significa bajas probabilidades de aceptación. Lo que significa que se debe realizar una gran cantidad de iteraciones para obtener una configuración independiente de la inicial.
Lo siento por la longitud. Si alguien quiere mi código en este momento que me lo haga saber. Está escrito en python, y solo tiene un iterador y una forma de generar matrices aleatorias SU(2).
EDITAR: creo que he encontrado la fuente de la discrepancia entre mis resultados iniciales y mis resultados actuales. Digamos que genero 1000 matrices su(2) aleatorias usando algún algoritmo. Para actualizar las variables de enlace propongo , donde M es una de mis 1000 matrices aleatorias su(2). No estoy seguro de que puedas construir todo el espacio de su(2) multiplicando repetidamente estas 1000 matrices aleatorias juntas. Incluso cuando cambié mi código para que sea 2+1 D su(2) yang mills, sigo teniendo el problema de que el valor esperado de mi plaqueta cambia a medida que cambio el tamaño de mi paso. En particular, el valor esperado de la plaqueta aumenta a medida que disminuyo el tamaño del paso. Solo cuando genero matrices su(2) M completamente aleatorias para actualizar ¿Obtengo el tamaño mínimo de plaquetas?
EDIT2: ¿Podría ser que esté actualizando todo el entramado a la vez? Lo que estoy haciendo es recorrer la red una vez sin cambiar ningún enlace y luego cambiar todos los enlaces al final de cada iteración.
EDIT3: El algoritmo de actualización fue de hecho el problema. Debe seleccionar aleatoriamente una variable de enlace en un sitio aleatorio, actualizarla y luego continuar.
Para actualizar las variables de enlace, desea aprovechar el hecho de que es un grupo Así que encuentra una matriz "pequeña" y actualizar de acuerdo con .
Recomiendo echar un vistazo a "Lattice QCD for Novices" de Le Page. Hay algunos consejos allí que encontrará útiles.
También es útil si no lo sabe: el QCD de celosía 2d se puede resolver exactamente, por lo que puede verificar sus resultados.
No se preocupe por C vs Python para 2d. Pitón está bien.
En principio, siempre se puede encontrar un paso de tiempo lo suficientemente pequeño en la evolución para tener una aceptación razonable (alrededor del 57% para un integrador óptimo de segundo orden). Entonces, primero, haz algunas comprobaciones,
Si planea volverse más complicado en el futuro, le sugiero que intente escribir el código en C/C++ (eso es el código QCD basado en MILC, http://www.physics.utah.edu/~detar/milc/milcv7 .pdf usos)
También aquí hay una referencia muy útil que será útil para comprender los enlaces que faltan: https://arxiv.org/pdf/1506.02567.pdf
Hay otras pruebas que no he mencionado como etcétera etcétera.
mandriles
AccidentalFourierTransformar
mandriles
usuario1504