Archivo: Hamiltonian flow classic.gif


Este es un archivo de Wikimedia Commons
De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Hamiltonian_flow_classical.gif (195 × 390 píxeles, tamaño de archivo: 172 KB; tipo MIME: image / gif , en bucle, 86 marcos, 26 s)

Resumen

Fuente

Creado con Matplotlib-logo.svg Esta trama fue creada con Matplotlib .ImageMagick logo.svg Esta imagen fue creada con ImageMagick .Código fuente de Python. Requiere matplotlib ImageMagick . Posiblemente no se ejecute en Windows.

desde  pylab  import  * import  subprocess import  sys import  osfigformat  =  '.png' seterr ( dividir = 'ignorar' ) rcParams [ 'font.size' ]  =  9#define un mapa de color que sea transparente para valores bajos y azul oscuro para valores altos. # ponderado para mostrar probabilidades bajas bien cdic  =  { 'rojo' :  [( 0 , 0 , 0 ), ( 1 , 0 , 0 )],  'verde' :  [( 0 , 0 , 0 ), ( 1 , 0 , 0 )],  'azul' :  [( 0 , 0,7 , 0,7 ), ( 1 , 0,7 , 0,7)],  'alfa' :  [( 0 , 0 , 0 ),  ( 0,1 , 0,4 , 0,4 ),  ( 0,2 , 0,6 , 0,6 ),  ( 0,4 , 0,8 , 0,8 ),  ( 0,6 , 0,9 , 0,9 ),  ( 1 , 1 , 1 )]} cm_prob  =  matplotlib . colores . LinearSegmentedColormap ( 'problema' ,cdic , N = 640 )### Sistemas dinámicos #### potencial es un polinomio potencial_coefs  =  matriz ([ 1 , 0 , 0 , 4 , - 5 , - 4 , 0 ], 'd' ) def  potencial ( x , t ):  return  polyval ( potencial_coefs , x )# función de fuerza es su derivada. force_coefs  =  ( potencial_coefs * arange ( len ( potencial_coefs ) - 1 , - 1 , - 1 )) [: - 1 ] def  fuerza ( x , t ):  "" "derivada de potencial (x)" ""  return  polyval ( fuerza_coefs , x ) invmass  =  1.0 dt  =  0.03def  motion ( t , x , p ):  "" "devuelve dx / dt, dp / dt" ""  return  p * invmass ,  - force ( x , t )cur_x  =  - 0.1 cur_p  =  0def  rkky_step ( t ,  x_i ,  p_i ,  dt ):  kx1 , kp1  =  movimiento ( t ,  x_i ,  p_i )  dt2  =  0.5 * dt  kx2 , kp2  =  movimiento ( t + dt2 ,  x_i + dt2 * kx1 ,  p_i + dt2 * kp1 )  kx3 , kp3  =  movimiento (t + dt2 ,  x_i + dt2 * kx2 ,  p_i + dt2 * kp2 )  kx4 , kp4  =  movimiento ( t + dt ,  x_i + dt * kx3 ,  p_i + dt * kp3 )  newx  =  x_i  +  ( dt / 6.0 ) * ( kx1  +  2.0 * kx2  +  2.0 *kx3  +  kx4 )  newp  =  p_i  +  ( dt / 6.0 ) * ( kp1  +  2.0 * kp2  +  2.0 * kp3  +  kp4 )  return  newx ,  newp### Configurar puntos de conjunto #### la mayoría se eligen al azar x  =  0  +  0.5 * rand ( 20000 ) p  =  - 1.0  +  2.0 * rand ( 20000 )# los puntos piloto se configuran manualmente x [ 0 ]  =  0 ;  p [ 0 ]  =  0 x [ 1 ]  =  0,4 ;  p [ 1 ]  =  0.0 pilotos  =  [ 0 , 1 ] pilot_colors  =  {  0 :  ( 0 , 0.7 , 0 ),  1 :  ( 0.7 , 0 , 0 )} E  = potencial ( x , 0 )  +  0.5 * invmass * p ** 2### configurar límites de trazado y contenedores de histograma ### xedges  =  linspace ( - 2.1 , 1.7 , 151 ) pedges  =  linspace ( - 7.5 , 7.5 , 151 ) Eedges  =  linspace ( - 9 , 9 , 151 ) pix  =  150 extensión  =  [ xedges [ 0 ],  xedges [ - 1 ],  pedges [ -1 ],  pedges [ 0 ]] H  =  histogram2d ( x , p , bins = [ xedges , pedges ]) [ 0 ] . transponer () cmax  =  amax ( H ) * 0.8extenten  =  [ xedges [ 0 ],  xedges [ - 1 ],  Eedges [ - 1 ],  Eedges [ 0 ]] Hen  =  histogram2d ( x , E , bins = [ xedges , Eedges ]) [ 0 ] . transpose () cmaxen  =  amax ( Hen ) * 0.3fig  =  figura ( 1 ) ysize  =  2.6 xsize  =  1.3 fig . set_size_inches ( tamaño x , tamaño y )### Preparar la gráfica inferior ### axen  =  axes (( 0.2 / xsize , 0.2 / ysize , 1.0 / xsize , 1.0 / ysize ), frameon = True ) axen . xaxis . set_ticks ([]) eje . xaxis . labelpad  =  2 ejes . yaxis . set_ticks ([]) eje . yaxis . labelpad  =  2xlim ( - 2.1 , 1.7 ) ylim ( - 9 , 9 ) xlabel ( 'posición $ x $' ) ylabel ( 'energía' ) potx  =  linspace ( - 2.1 , 1.7 , 151 )### Preparar el gráfico superior ### ax  =  axes (( 0.2 / xsize , 1.5 / ysize , 1.0 / xsize , 1.0 / ysize ), frameon = True ) ax . xaxis . set_ticks ([]) ax . xaxis . labelpad  =  2 ax . yaxis . set_ticks ([]) ax . yaxis . labelpad  =  2 xlim( - 2.1 , 1.7 ) ylim ( - 7.5 , 7.5 ) xlabel ( 'posición $ x $' ) ylabel ( 'impulso $ p $' )### Comienza a ejecutar la simulación ### frames  =  list () delays  =  list () framemod  =  5 frame  =  "frames / background" + figformat savefig ( frame , dpi = pix ) frames . añadir retrasos ( fotogramas ) . añadir ( 16 )imprimir  "generando marcos ... 0%" , sys . stdout . flush () saveteps  =  rango ( 0 , 401 , framemod )  +  [ 600 ,  1000 ,  2000 ,  6000 ] retrasos  + =  [ 10 ] * len ( saveteps ) retrasos [ 1 ]  =  200 retrasos [ - 5 :]  =  [ 100, 200 , 200 , 200 , 400 ] totalsteps  =  max ( saveteps ) + 1 para el  paso  en el  rango ( totalsteps ):  if  step  %  20  ==  0 :  print  " \ b \ b \ b \ b \ b {0: 3} % " . formato ( int ( round ( paso * 100.0 / totalsteps ))),  sys . stdout .flush ()  si  paso  en los  pasos guardados :  # Cada varios fotogramas, haz un trazado  remlist  =  list () sca ( ax )  H  =  histogram2d ( x , p , bins = [ xedges , pedges ]) [ 0 ] . transpose ()  remlist . append ( imshow ( H ,  extensión = extensión ,  cmap = cm_prob ,  interpolación = 'ninguno' ,  aspecto = 'auto' )) lista de  rem [ - 1 ]. set_clim ( 0 , cmax )  para  i  en  pilotos :  remlist  + =  plot ( x [ i ],  p [ i ],  '.' ,  color = pilot_colors [ i ],  markersize = 3 ) E  =  potencial ( x , paso * dt )  +  0.5 * invmass * p ** 2  sca ( axen )  pot  =  potencial ( potx , step * dt )  remlist  + =  plot ( potx , pot , color = 'r' , zorder = 0 )  Gallina  =  histograma2d ( x , E, bins = [ xedges , Eedges ]) [ 0 ] . transpose ()  remlist . append ( imshow ( Hen ,  extensión = extenten ,  cmap = cm_prob ,  interpolación = 'ninguno' ,  aspecto = 'auto' , zorder = 1 ))  remlist [ - 1 ] . set_clim ( 0 , cmaxen ) para  i  en  pilotos :  remlist  + =  plot ( x [ i ],  E [ i ],  '.' ,  color = pilot_colors [ i ],  markersize = 3 ) frame  =  "frames / frame" + str ( paso ) + figformat  savefig ( frame , dpi = pix )  frames . append ( frame )  # Limpiar las cosas actualizadas.  para  r  en  remlist :  r . remove ()  x ,  p  =  rkky_step ( paso * dt ,  x ,  p , dt ) print  "\ b \ b \ b \ b \ b  hecho "afirmar ( len ( retrasos )  ==  len ( fotogramas ))### Ensamblar animación usando ImageMagick ### calllist  =  'convertir -dispose Background' . split () para  retraso , marco  en  zip ( retrasos , marcos ): lista de  llamadas  + =  [ '-delay' , str ( demora )] lista de  llamadas  + =  [ marco ] lista de llamadas  + =  '-loop 0 -layers Optimizar _animation.gif' . split () f  =  open ( 'anim_command.txt' , 'w' )f . escribir ( '' . join (lista de llamadas ) + ' \ n ' ) f . cerrar ()imprimir  "componiendo en gif animado ..." , sys . stdout . subproceso flush () . llamar (lista de llamadas ) imprimir "hecho" os . renombrar ( '_animation.gif' , 'animation.gif' ) 

Licencia

Yo, el titular de los derechos de autor de este trabajo, lo publico bajo la siguiente licencia:

Subtítulos

Agregue una explicación de una línea de lo que representa este archivo

Elementos representados en este archivo

representa

27 de octubre de 2013

Historial del archivo

Haga clic en una fecha / hora para ver el archivo tal como apareció en ese momento.

Las siguientes páginas de la Wikipedia en inglés utilizan este archivo (no se enumeran las páginas de otros proyectos):

Uso de archivos global

Los siguientes wikis utilizan este archivo:

  • Uso en ar.wikipedia.org
    • مبرهنة ليوفيل (ميكانيك هاملتوني)
  • Uso en ast.wikipedia.org
    • Teoría ergódica
  • Uso en en.wikiversity.org
    • Mecánica clásica avanzada / Espacio de fase
  • Uso en id.wikipedia.org
    • Teorema Liouville (hamiltoniano)
  • Uso en ja.wikipedia.org
    • リ ウ ヴ ィ ル の 定理 (物理学)
  • Uso en pt.wikipedia.org
    • Teoria ergódica
    • Usuario (a): WilsonNeuroMat / Testes56
Obtenido de " https://en.wikipedia.org/wiki/File:Hamiltonian_flow_classical.gif "