Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Monografı́a presentada al
Departamento de Fı́sica
de la
Universidad de los Andes
Fı́sico
Abstract
My work consisted in understanding various proofs of an equality relating nonequi-
librium measurements of work done on a system while changing an external parameter,
to free energy differences, which are related to equilibrium states (Jarzynski equal-
ity). To verify this result I simulated various trajectories of a Brownian particle in a
quadratic potential, whose dynamics was governed by a Langevin equation (modelling
a particle in contact with a heat reservoir at a given temperature), while performing a
change in the stiffness of the potential between two values, in finite time. This change
was done both in a linear manner, and by a protocol called ESE (Engineered Swift
Equilibration) that allowed the system to be in equilibrium with the reservoir at the
end of the switching of the stiffness.
ii
Agradecimientos
En primer lugar agradecer a mi familia. Ellos lo dieron todo por que yo estudiara lo que me
gusta, y cuando el camino se tornaba difı́cil, fueron los que me dieron su apoyo incondicional.
Gracias al profesor Gabriel Téllez, por siempre haber estado dispuesto a responder hasta
las más elementales de mis dudas, y estar abierto a que el proyecto tomara su propio rumbo.
No todos los profesores tienen la disposición que usted tenı́a para responder preguntas. Por
eso, de nuevo, gracias.
Finalmente gracias a mis amigos, en especial a los que me acompañaron desde el principio,
Julián y el enano. No saben, ni sé como escribir porque nunca he sido bueno para hacerlo, lo
mucho que significan para mi. Gracias a Diego, que desde la distancia estuvo presente todo
el tiempo y fue, a fin de cuentas, el que me metió en esto.
iii
Juan Nicolás Salazar Sandino.
Certifico que he leı́do esta tesis, y que, en mi opinión, es adecuada en alcance y calidad como
una tesis para el tı́tulo de Fı́sico.
iv
Índice general
1 Introducción 1
2 Marco Teórico 3
2.1 Igualdad de Jarzynski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 Acercamiento determinista . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.2 Acercamiento estocástico . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 Protocolos de relajación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4 Conclusiones 25
A Códigos 27
A.1 Igualdad de Jarzynski . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
A.2 Distribución de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
A.3 Comparación de la distribución de trabajo en el proceso revertido . . . . . . 30
A.4 ESE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
v
vi
Capı́tulo 1
Introducción
Tal y como lo explica Sekimoto en su artı́culo [Sekimoto, 1998], se podrı́a decir que existen
tres niveles en los cuales se puede describir a los sistemas dinámicos clásicos. Un acercamien-
to es la dinámica hamiltoniana microscópica, donde todos los grados de libertad del sistema
son considerados y por ende la evolución es determinista. Está también el formalismo termo-
dinámico que hace uso de variables macroscópicas, sin embargo no especifica la dinámica del
sistema y este se supone que es controlado de alguna manera por un agente externo. Relacio-
nando estos dos niveles se encuentra la mecánica estadı́stica, pues si se tiene el hamiltoniano
del sistema, sus métodos permiten realizar predicciones de propiedades termodinámicas en
equilibrio.
Ahora bien, las fluctuaciones son muy comunes en bastantes ramas de la ciencia. Se podrı́a
decir que las hay en casi todo sistema que está sujeto a complicadas influencias externas o
internas de las que no se tiene completo conocimiento y por ello, usualmente también se
les denomina ruido. Es aquı́ donde es especialmente útil el nivel intermedio del que habla
Sekimoto, el de la dinámica estocástica, donde se define la dinámica del sistema pero esta
no es determinista, y los agentes externos que se introducen solo controlan parcialmente el
sistema. Una forma de tratar con estas fluctuaciones, las cuales surgen de muchas pequeñas
perturbaciones, y cada una logra cambiar las variables del sistema de una forma imprede-
cible, pero pequeña, es el formalismo de las ecuaciones de Fokker-Planck y de Langevin.
Una ecuación de Langevin es un tipo de ecuación diferencial estocástica, donde justamente
el término que le da el componente aleatorio modela el ruido del que no se tiene completo
conocimiento. En este contexto se renuncia a conocer con exactitud el valor de todas las
variables del sistema en cualquier instante de tiempo, pero se estudian las distribuciones de
probabilidad de los valores que pueden tomar. Es aquı́ donde entra la ecuación de Fokker-
Planck, pues esta modela la evolución en el tiempo de estas distribuciones de probabilidad.
Dado este formalismo surge la pregunta de cómo se puede relacionar con la termodinámi-
ca. De este estudio surge la manera de definir cantidades termodinámicas como el trabajo y
la entropı́a a partir de cada realización de las variables del sistema. Ası́, estas se convierten
en cantidades aleatorias debido al ruido con el que interactúa el sistema. Varias propiedades
1
se han logrado deducir de estas cantidades termodinámicas aleatorias y su relación con las
de termodinámica en equilibrio. Entre estas se encuentran las denominadas relaciones de
fluctuación [Klages et al., 2013] y son de gran importancia porque permiten no asumir algo
que la termodinámica convencional hace siempre, y es que el sistema está en equilibrio. Una
de las más importantes es la que dedujo Christopher Jarzynski en sus artı́culos [Jarzynski,
1997b] y [Jarzynski, 1997a], que relaciona el trabajo realizado sobre un sistema (fuera del
equilibrio), con el cambio en energı́a libre (en equilibrio).
2
Capı́tulo 2
Marco Teórico
donde β = kB1T . Es decir, a partir de una cantidad que nos habla del sistema cuando se
encuentra en equilibrio térmico con el reservorio, se puede obtener información del sistema
cuando está fuera del equilibrio. Note que por desigualdad de Jensen, se obtiene 2.2 a partir
de 2.3. A continuación se presentan las dos demostraciones que hizo Jarzynski de 2.3. Para
esto primero precisamos notación de algunas cantidades utilizadas en ambas demostraciones.
Suponga que se tiene una trayectoria γ(t) en el espacio de parámetros, parametrizada por
3
una sola cantidad λ ∈ [0, 1], mientras se hace el cambio entre A y B durante un tiempo
τs ∈ (0, ∞). Denotamos por ~z = (~q, p~) a los puntos en el espacio de fase del sistema, Hλ (~z)
al hamiltoniano del sistema que depende del valor que tome λ, de modo que,
Z
Zλ = e−βHλ (~z) d~z y, (2.4)
Fλ = −β −1 ln Zλ , (2.5)
son la función de partición canónica y energı́a libre, respectivamente. Finalmente, dada una
trayectoria ~z(t) en el espacio de fase, el trabajo realizado sobre el sistema serı́a,
Z τs
∂Hλ
W = λ̇(t) (~z(t))dt. (2.6)
0 ∂λ
pero para un sistema aislado, el trabajo realizado sobre este es el cambio en su energı́a,
w(~z, t) = Hλ (~z) − H0 (~z0 ),
donde ~z0 es el punto inicial de la trayectoria que pasa por ~z en el tiempo t. Además, por
el teorema de Liouville, la densidad de probabilidad sobre el espacio de fase se conserva a
través del tiempo, es decir,
1 −βH0 (~z0 )
f (~z, t) = f (~z0 , 0) = e .
Z0
4
Luego,
Z Z
−βW −βw(~ 1
he i = f (~z, τs )e z ,τs )
d~z = e−βH0 (~z0 ) e−β(H1 (~z)−H0 (~z0 )) d~z
Z0
Z
1 Z 1
= e−βH1 (~z) d~z = .
Z0 Z0
−1 Z1
Note que por la definición de energı́a libre, el cambio en esta es, ∆F = −β ln Z0
, en-
−βW −β∆F
tonces por el cálculo anterior se obtiene la igualdad de Jarzynski, he i=e .
• Gλ (~y ) = Hλ (~z) + Hλ (z~0 ) + hi (~z, z~0 ), es el hamiltoniano del sistema grande, donde hi
representa el término de interacción que acopla el sistema de interés con el reservorio.
• Yλ = e−βGλ (~y) d~y , es la función de partición del sistema grande, asumiendo a su vez
R
que este está en equilibrio térmico con un súper reservorio a temperatura T antes de
desacoplarlo.
Asumiendo que el reservorio es muy grande, y el acoplamiento hi muy débil, haciendo uso
del análisis anterior obtenemos la igualdad de Jarzynski,
R −β(H (~z)+H (z~0 )+h (~z,z~0 ))
−βW Y1 e 1 λ i
d~y
he i= =R
Y0 e−β(H0 (~z)+Hλ (z~0 )+hi (~z,z~0 )) d~y
R −βH (~z) R −βH(z~0 )dz~0
e 1
d~z e
=R
e−βH0 (~z) d~z e−βH(z~0 )dz~0
R
R −βH (~z)
e 1
d~z
= R −βH0 (~z)
e d~z
Z1
= = e−β∆F .
Z0
Al terminar este análisis queda la sensación que el resultado depende fuertemente del teorema
de Liouville y de asumir que el acoplamiento entre el reservorio y el sistema es muy débil.
Por esta razón Jarzynski realizó otra demostración en la que no hace uso de estas hipótesis
mediante un análisis estocástico de la situación, la cual presentamos en la siguiente sección.
5
2.1.2 Acercamiento estocástico
Asumimos que la dinámica del sistema de interés es descrita por una trayectoria en el espacio
de fase ~z(t) de naturaleza
estocástica,
cuya evolución es markoviana, es decir, ~z(t) está
~0
caracterizada por P ~z, t + ∆tz , t , la probabilidad de encontrar al sistema en el punto ~z
en un tiempo t + ∆t, dado que en el tiempo t se encontraba en el punto z~0 . Con esto, dados
dos puntos ~z y z~0 se define la taza de transición instantánea de ~z a z~0 como,
∂
R(~z, z~ , t) := lı́m+
0 P ~z, t + ∆tz~ , t ,
0 (2.9)
∆t→0 ∂∆t
que a su vez se puede escribir como Rλ (~z, z~0 ) pues solo depende del tiempo a través de λ.
Entonces, dada f (~z, t) la densidad de probabilidad dependiente del tiempo, esta evoluciona
según la ecuación maestra,
Z
∂f
(~z, t) = f (z~0 , t)Rλ (~z, z~0 )dz~0 =: R̂λ [f ]. (2.10)
∂t
Finalmente, también suponemos que el sistema cumple,
• Balance detallado: Si λ está fijo, ~z(t) se convierte en un proceso de Markov estacio-
nario, el cual describe la evolución del sistema en contacto térmico con un reservorio
de calor. Durante esa evolución, la distribución canónica deberı́a ser invariante:
6
de modo que g(~z, 0) = f (~z, 0) pues w(0) = 0 para todas las trayectorias, y,
Z
−βW
he i = g(~z, τs )d~z. (2.16)
Presentamos el análisis intuitivo de Jarzynski para ver que g satisface la ecuación diferencial,
∂g ∂Hλ
= R̂λ − β λ̇ g. (2.17)
∂t ∂t
Supongamos que cada trayectoria del ensamble representa una “partı́cula”que se mueve por
el espacio de fase, con “masa”dependiente del tiempo µ(t) = e−βw(t) . Ası́, Q(~z, t) serı́a la
masa promedio de las partı́culas que pasan por ~z en t, y g(~z, t) representarı́a la densidad de
masa en el espacio de fase. Esta es dependiente del tiempo por dos razones,
1. La masa de las partı́culas cambia con el tiempo,
∂Hλ
µ̇(t) = −β ẇ(t)µ(t) = −β λ̇ (~z(t))µ(t). (2.18)
∂λ
7
el parámetro κ se puede cambiar de manera que al llegar al valor final deseado, el sistema
ya esté en equilibrio con el reservorio. Suponiendo que el tiempo de cambio del parámetro
es τs y s = τts ,
3γ∆κs(1 − s)/τs
κ(t) = 2 3
+ κ0 + ∆κ(3s2 − 2s3 ), (2.21)
κ0 + ∆κ(3s − 2s )
es el protocolo que logra este hecho. Por su nombre en inglés, Engineered Swift Equili-
bration, se refiere a este como ESE. La idea principal de cómo llegan a este resultado en el
artı́culo es proponiendo que en todo momento la distribución de probabilidad de la posición
es una gaussiana centrada en el origen, con varianza que cambia en el tiempo. Ası́, inser-
tando esta distribución en la ecuación de Fokker-Planck equivalente a la ecuación 2.20, se
obtiene el protocolo ESE. En el capı́tulo 3 se presentan los resultados de la implementación
computacional de este protocolo.
8
Capı́tulo 3
En este capı́tulo se muestran los resultados de varias simulaciones realizadas en python, con
las que se comprobaron algunos de los resultados deducidos en el capı́tulo anterior, para
un sistema en especı́fico. El sistema que se simuló fue el de una partı́cula Browniana en un
potencial parabólico que cambia su rigidez con el tiempo, en el lı́mite sobreamortiguado. La
energı́a de la partı́cula de masa m está dada por el hamiltoniano,
p2 1
H(~z) = H(x, p) = + κx2 , (3.1)
2m 2
donde κ es la rigidez del potencial. La dinámica está descrita por la siguiente ecuación de
Langevin [Klages et al., 2013],
κ b
ẋ = − x + ξ(t), (3.2)
γm γ
donde γ es el coeficiente que determina el amortiguamiento, y b es el coeficiente que carac-
teriza las fluctuaciones de modo que, junto con ξ, modela que la partı́cula está en contacto
térmico con un reservorio de calor a temperatura T . Esto se hace explı́cito con la relación
de fluctuación-disipación,
r
2kB T γ
b= , (3.3)
m
donde kB es la constante de Boltzmann. ξ es el denominado ruido blanco, le da el carácter
estocástico a la ecuación, y se caracteriza por hξ(t)i = 0 y hξ(t)ξ(t0 )i = δ(t − t0 ).
Para poder realizar las simulaciones primero fue necesario adimensionalizar la ecuación
y reducir el número de parámetros al mı́nimo. Definiendo t̃ = γt, se obtiene por un lado
dx dx dt̃ dx
ẋ = = =γ ,
dt dt̃ dt dt̃
9
t̃
y para el ruido blanco, como ξ(t) = ξ γ
, y por propiedades del delta de Dirac,
1
0 0
hξ(t)ξ(t )i = δ(t − t ) = δ (t̃ − t ) = γδ(t̃ − t˜0 ) = γhξ(t̃)ξ(t˜0 )i,
˜0 ası́,
γ
√
ξ(t) = γξ(t̃).
κ
Denotando ω 2 = m
y teniendo en cuenta lo anterior, la ecuación 3.2 se reescribe como,
r
dx ω2 2kB T
γ =− x+ ξ(t̃).
dt̃ γ m
q
m
Ahora definimos x̃ = γ 2kB T
x para hacer la posición adimensional. Con esto se obtiene
para la ecuación de Langevin,
r ! r ! r
d 1 2kB T ω2 1 2kB T 2kB T
γ x̃ =− x̃ + ξ(t̃).
dt̃ γ m γ γ m m
ω2
Definiendo λ := γ2
y simplificando la ecuación anterior se obtiene,
dx̃
= −λx̃ + ξ(t̃). (3.4)
dt̃
Esta será la ecuación que se resolverá numéricamente y λ es el parámetro del que se hablaba
en las secciones anteriores. Como se dijo antes, este se variará en el tiempo entre dos valores
λ0 y λ1 . Note que por como se definió, en esencia esto representa un cambio en la rigidez
del potencial, κ (aunque también puede representar que todos los parámetros usados para
definir λ están cambiando al tiempo de alguna manera).
De acá en adelante no escribimos las variables con ∼, siempre teniendo en cuenta que
son adimensionales. La discretización de la ecuación 3.4 se hizo siguiendo a [Risken, 1989].
Dado τs , el tiempo que durará el cambio del parámetro λ, considere la sucesión de tiempos
igualmente espaciados un intervalo h > 0, t0 = 0, t1 = h, . . . , tm = τs , y denote para todo
0 ≤ n ≤ m, xn := x(tn ). Entonces, dada una posición inicial x0 , y suponiendo que se tiene
la posición xn para un 0 ≤ n ≤ m − 1,
√
xn+1 = xn − hλ(tn )xn + hwn , (3.5)
donde wn es tomado de una variable aleatoria normal Wn con media cero y varianza 1, y la
familia {Wn }0≤i≤m−1 es independiente. Además, λ(0) = λ0 , λ(τs ) = λ1 , y según sea el caso,
λ(t) será una función lineal entre los dos valores, o seguirá el protocolo ESE del que se habló
en la sección 2.2. Se presentan los resultados para cuatro grupos de simulaciones, y en todos
excepto uno, λ0 = 1 y λ1 = 2.
10
3.1 Comprobación igualdad de Jarzynski
En primer lugar, se quiere comprobar la igualdad de Jarzynski que se dedujo en el capı́tulo
anterior,
he−βW i = e−β∆F , (3.6)
de modo que es necesario saber cómo calcular el trabajo W para cada trayectoria, y el cambio
en la energı́a libre ∆F , en el contexto de la ecuación 3.4. Dados los cambios de variable, el
hamiltoniano de la ecuación 3.1 se reescribe como,
r !2
p2 1 1 2kB T p2
Hλ = + κ x = + λkB T x2 . (3.7)
2m 2 γ m 2m
Como el resultado 3.6 es independiente de cómo se cambie λ en el tiempo, para este caso se
realiza de manera lineal,
λ1 − λ0
λ(t) = λ0 + t, t ∈ [0, τs ]. (3.8)
τs
Ası́, usando la ecuación 2.6 para el trabajo a lo largo de una trayectoria especı́fica ~z(t) =
(p(t), x(t)),
Z τs Z τs
λ1 − λ0 λ 1 − λ 0 τs 2
Z
∂H 2
W = λ̇(t) (~z(t))dt = kB T x (t)dt = x (t)dt. (3.9)
0 ∂λ 0 τs βτs 0
De modo que,
λ1 −λ0 R τs
x2 (t)dt
e−βW = e− τs 0 , (3.10)
y esta cantidad solo depende de los parámetros de la simulación. Ahora calculamos la función
de partición dado un valor de λ,
Z ∞ ! Z ! r
Z ∞
p2 2 2m
Zλ = e−βHλ (~z) d~z = e−β 2m dp e−λx dx = π. (3.11)
−∞ −∞ βλ
Ası́, !
r
Z λ1 λ0
∆F = −β −1 ln = −β −1 ln , (3.12)
Zλ0 λ1
de modo que, r
λ0
e−β∆F = . (3.13)
λ1
El último paso para poder realizar la simulación es saber la distribución de probabilidad
de la cual escoger la posición inicial. De acuerdo al capı́tulo anterior, se asume que el sis-
tema inicialmente está en equilibrio térmico con el reservorio, de modo que la densidad de
probabilidad sobre el espacio de fase en el tiempo 0 es la canónica,
1 −βHλ (~z)
f0 (~z) = e 0 .
Zλ0
11
Sin embargo, como solo nos interesa saber la distribución de probabilidad de la posición
x, integramos sobre todos los valores de p para obtener la marginal. Teniendo en cuenta el
cálculo en 3.11 para la función de partición obtenemos,
R ∞ −β p2 2
Z ∞ −∞
e 2m dp e−λ0 x r
λ0 −λ0 x2
g0 (x) = f0 (~z)dp = q = e . (3.14)
−∞ 2m
π π
βλ0
1
Es decir, en el tiempo 0 la posición se distribuye como una normal con media 0 y varianza 2λ0
.
De la figura 3.1 resaltamos que a medida que el número de trayectorias simuladas incre-
menta, los histogramas de e−βW se hacen menos ruidosos y se puede apreciar la distribución
12
con mayor claridad. Por otro lado, de la figura 3.2 se obtiene que a medida que el número de
trayectorias incrementa, el error relativo, que cuantifica que tan lejos está he−βW i de e−β∆F ,
se acerca a cero. En otras palabras, se verifica computacionalmente que la deducción teórica
realizada de la igualdad de Jarzynski es correcta.
Figura 3.2: Error relativo entre he−βW i y e−β∆F en función del número de trayectorias simu-
ladas.
13
Figura 3.3: Histogramas de los valores obtenidos para e−βW .
hW i ≥ ∆F. (3.15)
Por esta razón es natural preguntarse, qué tan lejos de ∆F se encuentra W . De termodinámi-
ca clásica, para un proceso cuasiestático en el que el sistema está todo el tiempo en equilibrio
térmico con el reservorio de calor pues el proceso se lleva a cabo infinitamente despacio, se
sabe que,
W∞ = ∆F.
Luego, si el tiempo de la simulación se hace cada vez más y más grande, hW i deberı́a
acercarse a ∆F , pues le da oportunidad que en cada instante de tiempo, el sistema se
acerque al equilibrio térmico con el reservorio y el proceso se asemeje a uno cuasiestático.
14
Figura 3.4: Histogramas de los valores obtenidos para βW .
Figura 3.5: Diferencia relativo entre hβW i y β∆F en función del tiempo τs .
15
En la figura 3.4 se pueden observar los histogramas de βW , obtenidos para cada uno
de los tiempos τs . La linea vertical roja representa el valor de β∆F , que en cada caso es
el mismo pues siempre se está haciendo el cambio de parámetro entre λ0 = 1 y λ1 = 2, y
la linea vertical azul es hβW i. Se observa que en todos los casos se cumple la desigualdad
3.15, y que a medida que τs incrementa, hβW i se acerca a ∆F . Esto es más claro en la
gráfica de la relativa, la figura 3.5. Vale la pena indicar que, en todos los casos, el valor más
probable del trabajo según los histogramas es menor a ∆F , sin embargo, lo que hace que la
desigualdad 3.15 se cumpla, es la cola pesada de las distribuciones. No obstante, a medida
que el tiempo de cambio del parámetro incrementa, el máximo de las distribuciones se acerca
a β∆F , igual que hβW i, y se puede apreciar como la varianza de las distribuciones se hace
menor. A futuro serı́a interesante ver, con mayor poder computacional, qué tan rápido estos
histogramas se acercan a un delta de Dirac centrado en β∆F para un valor de h (el salto de
tiempo) menor y mayores tiempos τs .
En la figura 3.6 se encuentran los histogramas para todos los τs simulados. Para cada tiem-
po, en un solo recuadro se encuentran los valores del trabajo para la compresión (histograma
azul), y el negativo de los valores para la relajación (histograma verde), pues naturalmente,
el trabajo realizado sobre el sistema cuando se disminuye el parámetro, en este caso que se
hace linealmente, es negativo. Ası́, para poder juntar los histogramas en una sola gráfica, era
necesario sacar el negativo de los valores obtenidos en la relajación. En cada tiempo, para
la compresión se obtuvo la curva azul que aproxima la distribución de probabilidad de βW
y la linea vertical azul que corresponde a hβW i. Para la relajación se hizo lo mismo pero
para la distribución de probabilidad de −βW y para −hβW i. La linea negra representa el
cambio en la energı́a libre cuando λ0 = 1, de modo que el negativo de este valor serı́a el
cambio en la energı́a libre en la relajación. Notemos que, tanto en la compresión como en la
relajación, se cumple la desigualdad 3.15. Sin embargo, tal como la muestra la figura 3.7, el
error relativo cuando el proceso fue de disminuir el parámetro, es menor en todos los tiempos
τs . Esto también se puede apreciar en los histogramas de la figura 3.6, pues la linea vertical
verde siempre se encuentra más cerca a la negra, que la azul de esta. Ası́, se obtiene que en
el proceso de relajación el sistema logra estar a cada instante más cerca al equilibrio que en
el de compresión, pues se encontró que el trabajo disipado hW i − ∆F siempre es menor para
el proceso de relajación.
16
Figura 3.6: Histogramas de los valores obtenidos para βW en la compresión, y de −βW en
la relajación.
De los histogramas también llama la atención que los máximos parecen coincidir en ca-
da caso. Por esa razón se obtuvo la figura 3.8, que corresponde a un acercamiento de los
picos de los histogramas. Ahı́ se observa, excepto para el caso τs = 6, que los bins a los
que se les asigna probabilidad máxima están uno junto al otro, mientras que en τs = 6 son
exactamente el mismo. En la figura 3.9 se compara cómo cambian los máximos (obtenidos
como el punto medio de los bins con probabilidad máxima) en función del tiempo de cambio
del parámetro. Este hecho también vale la pena seguirlo estudiando a futuro, pues parece
ser que el máximo no coincide debido a que los histogramas aun son muy ruidosos. Si se
incrementa el número de trayectorias puede ser que los máximos coincidan independiente
de τs . Esto motiva a encontrar una demostración de que los valores más probables para los
trabajos coinciden. Además, parece ser que a medida que incrementa τs las distribuciones de
los valores del trabajo en el proceso original y el revertido se asemejan cada vez más, hecho
que sugiere seguir estudiando este tipo de procesos en otros escenarios y evaluar si se sigue
observando este fenómeno.
17
Figura 3.7: Diferencia relativa entre el promedio del trabajo y la energı́a libre, para el proceso
de compresión y el de relajación, en función del tiempo de cambio del parámetro.
18
Figura 3.9: Máximo de los histogramas en función de τs .
P1 (W )
= eβ(W −∆F ) , (3.16)
P2 (−W )
19
Figura 3.10: Acercamiento a la intersección de las curvas que aproximan a los histogramas,
en la figura 3.6.
3∆λs(1 − s)/τs
λ(t) = 2 3
+ λ0 + ∆λ(3s2 − 2s3 ), (3.17)
λ0 + ∆λ(3s − 2s )
20
(a) τs = 0.1. (b) τs = 0.5.
(c) τs = 1.
Figura 3.11: Gráficas de los protocolos ESE y lineal para cada uno de los τs simulados.
En la figura 3.12 se presentan los histogramas del trabajo realizado, en verde para el
protocolo lineal y en azul para ESE. De nuevo se comprueba la desigualdad 3.15, y para
todos los tiempos, el trabajo promedio realizado durante el protocolo ESE era mayor que en
el lineal, en especial cuando τs = 0.1, donde la diferencia es bastante significativa. Llama la
atención que de nuevo los picos de los histogramas parecen coincidir, de modo que aunque
se cambie el parámetro de manera distinta en el tiempo, el valor más probable de trabajo
realizado es el mismo. Además, es importante notar que en el protocolo ESE, para algunas de
las trayectorias el trabajo fue negativo, aunque el proceso fuera de compresión. Observando
las gráficas de los protocolos presentadas en la figura 3.11, se ve que en principio esto es
posible pues hay un periodo de tiempo en que λ(t) es decreciente, haciendo que su derivada
sea negativa, la cual se usa para calcular el trabajo de cada trayectoria. No obstante estos
eventos que suceden con poca probabilidad, y de nuevo gracias a la cola pesada que presentan
las distribuciones, se sigue cumpliendo la desigualdad 3.15. A futuro serı́a interesante ver
como son los histogramas del trabajo pero con el proceso revertido, y observar sus diferencias
y similitudes como en la sección anterior.
21
(a) (b)
(c)
Por último, guardando todas las posiciones para todas las trayectorias simuladas, se
obtuvieron histogramas 2D 3.13, tal y como se obtienen en [Martı́nez et al., 2016]. Con estos
se puede observar como está distribuida la posición en cada instante de tiempo. Para τs =
0.1 se aprecia como para el protocolo lineal, el sistema se mantiene distribuido casi que igual
a la distribución de posiciones iniciales, es decir, el cambio de parámetro es tan rápido, que
el sistema no tiene chance de equilibrarse con el reservorio. Para los tiempos mayores se
aprecia como, en el caso lineal, la distribución logra cambiar pero no lo suficiente, el cambio
del parámetro sigue siendo muy rápido para el sistema. En la figura 3.14 se grafican los
histogramas de las posiciones de la partı́cula al final, en τs , comparando con las densidades
gaussianas correspondientes a las distribuciones de equilibrio. Se comprueba que para ESE,
en efecto la distribución de posiciones sigue la distribución canónica determinada por λ1 ,
mientras que en el caso lineal el histograma no sigue esta distribución. Incluso, se aprecia
como en el caso de τs = 0.1, en el protocolo lineal la distribución es muy parecida a la inicial.
22
(a) Histograma 2D, protocolo lineal, τs = 0.1. (b) Histograma 2D, protocolo ESE, τs = 0.1.
(c) Histograma 2D, protocolo lineal, τs = 0.5. (d) Histograma 2D, protocolo ESE, τs = 0.5.
(e) Histograma 2D, protocolo lineal, τs = 1. (f) Histograma 2D, protocolo ESE, τs = 1.
23
(a) Distribuciones finales cuando τs = 0.1.
24
Capı́tulo 4
Conclusiones
25
calor. También se obtuvieron los histogramas de trabajo y se encontró que para el protocolo
ESE habı́an ocasiones en que incluso el trabajo realizado sobre el sistema era negativo, o
demasiado grande, pero aún ası́ se seguı́a cumpliendo que en promedio el trabajo realizado
era mayor que el cambio en la energı́a libre. También se encontró que aproximadamente, el
trabajo más probable para el protocolo lineal y para ESE eran el mismo. Finalmente, serı́a
interesante ver cómo se diferencian las distribuciones de trabajo en el proceso revertido,
siguiendo el protocolo ESE, igual que como se hizo para el protocolo lineal, y observar si
también a medida que el tiempo incrementa las ditribuciones se asemejan cada vez más.
26
Apéndice A
Códigos
27
36 integ = np.trapz(x*x, times)
37 ework.append(np.exp((l_0 - l_1)*integ/ts))
38 eworks.append(ework)
39
40 #Se guardan los resultados de la simulación
41 f = open('valores.txt', '+w')
42 for i in range(len(eworks)):
43 for j in range(len(eworks[i])):
44 f.write('{} \n'.format(eworks[i][j]))
45 f.close()
El siguiente script se utilizó para graficar y obtener la información deseada de los datos
obtenidos del anterior.
1 import numpy as np
2 import matplotlib.pyplot as plt
3
4 l_0 = 1
5 l_1 = 2
6 #Valor de la exponencial del cambio de energı́a libre
7 elib = (l_0/l_1)**0.5
8 N = [100, 1000, 10000, 100000, 1000000]
9
10 values = np.genfromtxt('valores.txt')
11 expW = [values[len(values)%10**i:len(values)%10**(i+1)] for i in range(2,7)]
12
13 #Histogramas de la exponencial del trabajo
14 plt.figure(figsize = (20, 14))
15 for i in range(len(N)):
16 plt.subplot(2,3,i+1)
17 _ = plt.hist(expW[i], bins=100, range = (0,1), density = True)
18 plt.title(r'$N = 10^{}$'.format(i+2))
19 plt.savefig('hist_exp_tray.jpg')
20
21 #Gráfica del error relativo
22 plt.figure(figsize = (10,7))
23 plt.scatter(N, [abs((np.mean(expW[i]) - elib)/elib) for i in range(len(N))])
24 plt.xscale('log')
25 plt.ylabel(r'$\left| \frac{\langle e^{-\beta W} \rangle - e^{-\beta \Delta F}}{e^{\Delta F}} \right|$')
26 plt.xlabel('# de trayectorias')
27 plt.savefig('err_porc_exp_tray.jpg')
28
13 N = 100000
14
15 def step(x_b, t, index):
16 x_n = -times[0][1]*constant(t, index)*x_b + np.sqrt(times[0][1])*np.random.normal(0,1) + x_b
17 return x_n
18
19 #Función que da el valor del parámetro en un tiempo, dependiendo de index, es decir,
20 #la duración del tiempo del cambio del parámetro
21 def constant(t, index):
22 return t*l_1/ts[index] + (ts[index] - t)*l_0/ts[index]
23
24 #Condiciones iniciales
25 init_cond1 = np.random.uniform(0, 1, N)
26 init_cond = norm.ppf(init_cond1, 0, np.sqrt(1/(2*l_0)))
27
28 #Lista que en la entrada i-ésima contendrá un array que corresponde a los valores de exp(-beta*W) para
29 #cada trayectoria cuando el tiempo de cambio del parámetro es ts[i]
30 eworks = []
31
32 for i in range(len(ts)):
33 ework = []
34 for k in range(N):
35 x = [init_cond[k]]
36 for j in range(1, len(times[i])):
37 x.append(step(x[j-1], times[i][j-1], i))
38 x = np.array(x)
39 int1 = np.trapz(x*x, times[i])
40 ework.append(np.exp((l_0 - l_1)*int1/ts[i]))
41 eworks.append(ework)
42
43 #Se guardan los resultados de la simulación
44 f = open('val1.txt', '+w')
45 for i in range(len(eworks)):
46 for j in range(len(eworks[i])):
47 f.write('{} \n'.format(eworks[i][j]))
48 f.close()
El siguiente script se utilizó para graficar y obtener la información deseada de los datos
obtenidos del anterior.
1 import numpy as np
2 import matplotlib.pyplot as plt
3
4 l_0 = 1
5 l_1 = 2
6 elib = (l_0/l_1)**0.5
7 lib = -np.log(elib)
8 ts = [1, 2, 4, 6, 8, 10]
9 valores = np.genfromtxt('val1.txt')
10
11 exp = [valores[i*100000:(i+1)*100000] for i in range(6)]
12 work = [-np.log(exp[i]) for i in range(6)]
13
14 plt.figure(figsize = (20, 14))
15 for i in range(len(ts)):
16 plt.subplot(2,3,i+1)
17 _ = plt.hist(exp[i], bins=100, range = (0,1), density = True)
18 plt.title(r'$t_s = {}$'.format(ts[i]))
19 plt.savefig('hist_exp_tiemp.jpg')
20
21 plt.figure(figsize = (20, 14))
22 for i in range(len(ts)):
23 plt.subplot(2,3,i+1)
29
24 _ = plt.hist(work[i], bins=100, range = (0,2), density = True)
25 plt.title(r'$t_s = {}$'.format(ts[i]))
26 plt.axvline(x=lib, c = 'r', label = r'$\Delta F$')
27 plt.axvline(x=np.mean(work[i]), label = r'$\langle W \rangle$')
28 plt.legend()
29 plt.savefig('hist_trab_tiemp.jpg')
30
31 plt.figure(figsize = (10,7))
32 plt.scatter(ts, [(np.mean(work[i]) - lib)/lib for i in range(len(ts))])
33 plt.ylabel(r'$\frac{\langle W \rangle - \Delta F}{\Delta F}$')
34 plt.xlabel(r'$t_s$')
35 plt.savefig('err_porc_trab_tiemp.jpg')
30
40 ework.append(np.exp((l_0 - l_1)*int1/ts[i]))
41 work.append((l_1 - l_0)*int1/ts[i])
42 eworks.append(ework)
43 works.append(work)
44
45 f1 = open('val1new.txt', '+w')
46 for i in range(len(eworks)):
47 for j in range(len(eworks[i])):
48 f1.write('{} \n'.format(eworks[i][j]))
49 f1.close()
50
51 f2 = open('val2new.txt', '+w')
52 for i in range(len(works)):
53 for j in range(len(works[i])):
54 f2.write('{} \n'.format(works[i][j]))
55 f2.close()
Después se utilizó este mismo script con l 0 = 2 y l 1 = 1 para obtener datos del caso en
el que el trabajo es negativo.
El siguiente script se utilizó para graficar y obtener la información deseada de los datos
obtenidos en los anteriores.
1 import numpy as np
2 import matplotlib.pyplot as plt
3 import seaborn as sns
4
5 l_0 = 1
6 l_1 = 2
7 elib = (l_0/l_1)**0.5
8 lib = -np.log(elib)
9
10 ewp = np.genfromtxt('val1new.txt')
11 wp = np.genfromtxt('val2new.txt')
12 ewn = np.genfromtxt('val1new_neg.txt')
13 wn = np.genfromtxt('val2new_neg.txt')
14
15 #Histogramas de los trabajos
16 prom = []
17 plt.figure(figsize = (20, 14))
18 for i in range(len(ts)):
19 plt.subplot(2,2,i+1)
20 _ = plt.hist(wp[i*N:(i+1)*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
21 _ = plt.hist(-wn[i*N:(i+1)*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
22 sns.distplot(wp[i*N:(i+1)*N], hist = False, label = 'P(W)', color = 'blue')
23 sns.distplot(-wn[i*N:(i+1)*N], hist = False, label = 'P(-W)', color = 'green')
24 plt.ylim(0, 4)
25 plt.xlim(0, 2)
26 plt.axvline(x=lib, c = 'black', label = r'$\Delta F$')
27 plt.axvline(x=np.mean(wp[i:(i+1)*N]), c = 'blue')
28 plt.axvline(x=-np.mean(wn[i:(i+1)*N]), c = 'green')
29 plt.title(r'$t = {}$'.format(ts[i]))
30 plt.legend()
31 prom.append(np.mean(wp[i:(i+1)*N]))
32 prom.append(-np.mean(wn[i:(i+1)*N]))
33 plt.savefig('hist_trab.jpg')
34
35 #Gráfica de las intersecciones
36 plt.figure(figsize = (20, 14))
37 plt.subplot(2,2,1)
38 m1p = plt.hist(wp[0:N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
39 m1n = plt.hist(-wn[0:N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
31
40 sns.distplot(wp[0:N], hist = False, label = 'P(W)', color = 'blue')
41 sns.distplot(-wn[0:N], hist = False, label = 'P(-W)', color = 'green')
42 plt.ylim(1, 1.4)
43 plt.xlim(0.3, 0.4)
44 plt.axvline(x=lib, c = 'black', label = r'$\Delta F$')
45 plt.title(r'$t = {}$'.format(ts[0]))
46 plt.legend()
47
48 plt.subplot(2,2,2)
49 m2p = plt.hist(wp[N:2*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
50 m2n = plt.hist(-wn[N:2*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
51 sns.distplot(wp[N:2*N], hist = False, label = 'P(W)', color = 'blue')
52 sns.distplot(-wn[N:2*N], hist = False, label = 'P(-W)', color = 'green')
53 plt.ylim(1.2, 1.6)
54 plt.xlim(0.3, 0.4)
55 plt.axvline(x=lib, c = 'black', label = r'$\Delta F$')
56 plt.title(r'$t = {}$'.format(ts[1]))
57 plt.legend()
58
59 plt.subplot(2,2,3)
60 m3p = plt.hist(wp[2*N:3*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
61 m3n = plt.hist(-wn[2*N:3*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
62 sns.distplot(wp[2*N:3*N], hist = False, label = 'P(W)', color = 'blue')
63 sns.distplot(-wn[2*N:3*N], hist = False, label = 'P(-W)', color = 'green')
64 plt.ylim(1.8, 2.4)
65 plt.xlim(0.3, 0.4)
66 plt.axvline(x=lib, c = 'black', label = r'$\Delta F$')
67 plt.title(r'$t = {}$'.format(ts[2]))
68 plt.legend()
69
70 plt.subplot(2,2,4)
71 m4p = plt.hist(wp[3*N:4*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
72 m4n = plt.hist(-wn[3*N:4*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
73 sns.distplot(wp[3*N:4*N], hist = False, label = 'P(W)', color = 'blue')
74 sns.distplot(-wn[3*N:4*N], hist = False, label = 'P(-W)', color = 'green')
75 plt.ylim(2.2, 2.8)
76 plt.xlim(0.3, 0.4)
77 plt.axvline(x=lib, c = 'black', label = r'$\Delta F$')
78 plt.title(r'$t = {}$'.format(ts[3]))
79 plt.legend()
80
81 plt.savefig('inters.jpg')
82
83 #Gráfica de los máximos
84 plt.figure(figsize = (20, 14))
85 plt.subplot(2,2,1)
86 _ = plt.hist(wp[0:N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
87 _ = plt.hist(-wn[0:N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
88 sns.distplot(wp[0:N], hist = False, label = 'P(W)', color = 'blue')
89 sns.distplot(-wn[0:N], hist = False, label = 'P(-W)', color = 'green')
90 plt.ylim(2, 3.5)
91 plt.xlim(0, 0.25)
92 plt.title(r'$t = {}$'.format(ts[0]))
93 plt.legend()
94
95 plt.subplot(2,2,2)
96 _ = plt.hist(wp[N:2*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
97 _ = plt.hist(-wn[N:2*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
98 sns.distplot(wp[N:2*N], hist = False, label = 'P(W)', color = 'blue')
99 sns.distplot(-wn[N:2*N], hist = False, label = 'P(-W)', color = 'green')
100 plt.ylim(2, 3.2)
101 plt.xlim(0.1, 0.25)
102 plt.title(r'$t = {}$'.format(ts[1]))
103 plt.legend()
104
32
105 plt.subplot(2,2,3)
106 _ = plt.hist(wp[2*N:3*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
107 _ = plt.hist(-wn[2*N:3*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
108 sns.distplot(wp[2*N:3*N], hist = False, label = 'P(W)', color = 'blue')
109 sns.distplot(-wn[2*N:3*N], hist = False, label = 'P(-W)', color = 'green')
110 plt.ylim(2, 3.1)
111 plt.xlim(0.15, 0.3)
112 plt.title(r'$t = {}$'.format(ts[2]))
113 plt.legend()
114
115 plt.subplot(2,2,4)
116 _ = plt.hist(wp[3*N:4*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'blue')
117 _ = plt.hist(-wn[3*N:4*N], bins=100, range = (0,2), density = True, alpha = 0.3, color = 'green')
118 sns.distplot(wp[3*N:4*N], hist = False, label = 'P(W)', color = 'blue')
119 sns.distplot(-wn[3*N:4*N], hist = False, label = 'P(-W)', color = 'green')
120 plt.ylim(2, 3.5)
121 plt.xlim(0.15, 0.4)
122 plt.title(r'$t = {}$'.format(ts[3]))
123 plt.legend()
124
125 plt.savefig('maximos.jpg')
126
127 #Gráfica que compara los máximos en el tiempo
128 hist = [m1p, m1n, m2p, m2n, m3p, m3n, m4p, m4n]
129 maxp = [(hist[i*2][1][np.argmax(hist[i*2][0])] + hist[i*2][1][np.argmax(hist[i*2][0]) + 1])/2
130 for i in range(len(hist)//2)]
131 maxn = [(hist[i*2 + 1][1][np.argmax(hist[i*2 + 1][0])] + hist[i*2 + 1][1][np.argmax(hist[i*2 + 1][0]) + 1])/2
132 for i in range(len(hist)//2)]
133 plt.figure(figsize = (10,7))
134 plt.scatter(ts, maxp, label = 'W')
135 plt.scatter(ts, maxn, label = '-W')
136 plt.xlabel('tiempo')
137 plt.ylabel('W')
138 plt.title('Trabajo más probable')
139 plt.legend()
140 plt.savefig('mas_prob.jpg')
141
142 #Gráfica del error relativo
143 err_p = [abs((prom[i*2] + lib)/lib) for i in range(len(prom)//2)]
144 err_n = [abs((prom[i*2 + 1] + lib)/lib) for i in range(len(prom)//2)]
145 plt.figure(figsize = (10,7))
146 plt.scatter(ts, err_p, label = 'W')
147 plt.scatter(ts, err_n, label = '-W')
148 plt.xlabel('tiempo')
149 plt.ylabel('Error relativo')
150 plt.legend()
151 plt.savefig('comp_err_rel.jpg')
A.4 ESE
Con el siguiente script se realizaron las simulaciones para el protocolo ESE. El mostrado
es para el caso en que el tiempo de cambio del protocolo era 0,1, pero con el mismo, solo
cambiando el valor de t s, y modificando el arreglo de tiempos, se obtuvieron todas las
gráficas presentadas en la sección 3.4.
1 import numpy as np
2 import matplotlib.pyplot as plt
3 import matplotlib.colors as col
4 from scipy.stats import norm
33
5
6 l_0 = 1
7 l_1 = 2
8 elib = (l_0/l_1)**0.5
9 lib = -np.log(elib)
10 ts = 0.1
11 times = np.linspace(0, ts, int(ts*10000) + 1)
12 N = 100000
13
14 def step_ESE(x_b, t):
15 x_n = -times[1]*ESE(t)*x_b + np.sqrt(times[1])*np.random.normal(0,1) + x_b
16 return x_n
17
18 def step_lin(x_b, t):
19 x_n = -times[1]*linear(t)*x_b + np.sqrt(times[1])*np.random.normal(0,1) + x_b
20 return x_n
21
22 def ESE(t):
23 s = t/ts
24 d = l_1 - l_0
25 return (3*d*s*(1-s))/(ts*(l_0 + d*(3*s**2 - 2*s**3))) + l_0 + d*(3*s**2 - 2*s**3)
26
27 def d_ESE(t):
28 k = (l_1 - l_0)/(ts**2)
29 g = l_0 + k*(3*t**2 - (2*t**3)/ts)
30 dg = k*(6*t - (6*t**2)/ts)
31 f = t - (t**2)/ts
32 df = 1 - 2*t/ts
33 return 3*k*(df*g - f*dg)/(g**2) + dg
34
35 def linear(t):
36 return t*l_1/ts + (ts - t)*l_0/ts
37
38 ldot = d_ESE(times)
39
40 init_cond1 = np.random.uniform(0, 1, N)
41 init_cond = norm.ppf(init_cond1, 0, np.sqrt(1/(2*l_0)))
42
43 #Gráfica del protocolo ESE comparado con el cambio lineal
44 _=plt.plot(times, ESE(times), label = 'ESE')
45 _=plt.plot(times, linear(times), label = 'Lineal')
46 plt.xlabel('Tiempo')
47 plt.ylabel(r'$\lambda$')
48 plt.legend()
49 plt.savefig('prot_t1.jpg')
50
51 #Simulación
52 ework_ESE = []
53 ework_lin = []
54 work_ESE = []
55 work_lin = []
56 pos_ESE = []
57 pos_lin = []
58 for k in range(N):
59 x_ESE = [init_cond[k]]
60 x_lin = [init_cond[k]]
61 for j in range(1, len(times)):
62 x_ESE.append(step_ESE(x_ESE[j-1], times[j-1]))
63 x_lin.append(step_lin(x_lin[j-1], times[j-1]))
64 x_ESE = np.array(x_ESE)
65 x_lin = np.array(x_lin)
66 int1 = np.trapz(ldot*x_ESE*x_ESE, times)
67 int2 = ((l_1 - l_0)/ts)*np.trapz(x_lin*x_lin, times)
68 ework_ESE.append(np.exp(-int1))
69 ework_lin.append(np.exp(-int2))
34
70 work_ESE.append(int1)
71 work_lin.append(int2)
72 pos_ESE.append(x_ESE)
73 pos_lin.append(x_lin)
74
75 #Histograma de los trabajos
76 plt.figure(figsize = (7,5))
77 _=plt.hist(work_ESE, bins = 100, density = True, alpha = 0.5,
78 range = (-1,10), color = 'blue', label = 'ESE')
79 _=plt.hist(work_lin, bins = 100, density = True, alpha = 0.5,
80 range = (-1,10), color = 'green', label = 'Lineal')
81 plt.axvline(x=lib, c = 'black', label = r'$\Delta F$')
82 plt.axvline(x=np.mean(work_ESE), c = 'blue', label = r'$\langle W \rangle$')
83 plt.axvline(x=np.mean(work_lin), c = 'green', label = r'$\langle W \rangle$')
84 plt.xlabel('W')
85 plt.title(r'$t_s = 1$')
86 plt.xlim(-0.5,3)
87 plt.legend()
88 plt.savefig('comparison_w_t1.jpg')
89
90 #Preparación para los histogramas 2D
91 pos_lin = np.array(pos_lin)
92 pos_ESE = np.array(pos_ESE)
93 pos_ESE_1 = pos_ESE.ravel()
94 pos_lin_1 = pos_lin.ravel()
95 timess = [times[i%len(times)] for i in range(len(times)*N)]
96 left = np.array([-times[1]])
97 right = np.array([times[(len(times)-1)] + times[1]])
98 binsx = np.concatenate((left, times, right), axis = 0)
99 binsy = np.array([-2 + i*0.04 for i in range(101)])
100 N = col.Normalize()
101
102 #Histograma 2D, ESE
103 _=plt.hist2d(timess, pos_ESE_1, bins = [binsx, binsy], cmap=plt.cm.jet, norm = N)
104 plt.xlabel('Tiempo')
105 plt.ylabel('x')
106 plt.title('ESE')
107 cbar = plt.colorbar()
108 cbar.ax.set_ylabel('Conteos')
109 plt.savefig('profile_ESE_t1.jpg')
110
111 #Histograma 2D, lineal
112 _=plt.hist2d(timess, pos_lin_1, bins = [binsx, binsy], cmap=plt.cm.jet, norm = N)
113 plt.xlabel('Tiempo')
114 plt.ylabel('x')
115 plt.title('Lineal')
116 cbar1 = plt.colorbar()
117 cbar1.ax.set_ylabel('Conteos')
118 plt.savefig('profile_lin_t1.jpg')
119
120 #Histogramas de posiciones finales
121 plt.figure(figsize = (13,4))
122 plt.subplot(1,2,1)
123 _=plt.hist(pos_lin[:,len(times)-1], bins = 100, range = (-2.5,2.5), density = True)
124 _=plt.plot(np.linspace(-2,2,1000),
125 np.sqrt(l_1/np.pi)*np.exp(-l_1*np.linspace(-2,2,1000)**2),
126 label = r'$\sqrt{\frac{\lambda_1}{\pi}}\, e^{-\lambda_1x^2}$')
127 _=plt.plot(np.linspace(-2,2,1000),
128 np.sqrt(l_0/np.pi)*np.exp(-l_0*np.linspace(-2,2,1000)**2),
129 label = r'$\sqrt{\frac{\lambda_0}{\pi}}\, e^{-\lambda_0x^2}$')
130 plt.title('Lineal')
131 plt.xlabel(r'$x(t_s)$')
132 plt.legend()
133
134 plt.subplot(1,2,2)
35
135 _=plt.hist(pos_ESE[:,len(times)-1], bins = 100, density = True)
136 _=plt.plot(np.linspace(-2,2,1000),
137 np.sqrt(l_1/np.pi)*np.exp(-l_1*np.linspace(-2,2,1000)**2),
138 label = r'$\sqrt{\frac{\lambda_1}{\pi}}\, e^{-\lambda_1x^2}$')
139 _=plt.plot(np.linspace(-2,2,1000),
140 np.sqrt(l_0/np.pi)*np.exp(-l_0*np.linspace(-2,2,1000)**2),
141 label = r'$\sqrt{\frac{\lambda_0}{\pi}}\, e^{-\lambda_0x^2}$')
142 plt.title('ESE')
143 plt.xlabel(r'$x(t_s)$')
144 plt.legend()
145
146 plt.savefig('final_dist_t1.jpg')
36
Bibliografı́a
[Jarzynski, 1997b] Jarzynski, C. (1997b). Nonequilibrium Equality for Free Energy Diffe-
rences. Physical Review Letters, 78(14):2690–2693.
[Klages et al., 2013] Klages, R., Just, W., and Jarzynski, C., editors (2013). Nonequilibrium
statistical physics of small systems: fluctuation relations and beyond. Reviews in nonlinear
dynamics and complexity. Wiley-VCH-Verl, Weinheim. OCLC: 835334647.
[Martı́nez et al., 2016] Martı́nez, I. A., Petrosyan, A., Guéry-Odelin, D., Trizac, E., and
Ciliberto, S. (2016). Engineered swift equilibration of a Brownian particle. Nature Physics,
12(9):843–846.
[Risken, 1989] Risken, H. (1989). The Fokker-Planck Equation, volume 18 of Springer Series
in Synergetics. Springer Berlin Heidelberg, Berlin, Heidelberg.
37