PERCOLACIÓN

1

¿Qué es percolación?

Próximos vecinos: cuadrados con lado común (nn) Siguientes próximos vecinos: cuadrados con vértice común(nnn)
2

Cluster: Grupo de cuadrados nn ocupados. Teoría de la Percolación: Propiedades de los clusters. Percolación random: cada sitio de la red se ocupa aleatoriamente con probabilidad p. Ejercicio Escribir un programa que “dibuje” los sitios ocupados y vacíos en un retículo 15x15 para p = 0.3, p = 0.5 y p = 0.7. Identificar los clústers mayores.
3

p=0.300000 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 4 .

p=0.500000 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 5 .

700000 1 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 6 .p=0.

Para p = 0. Cluster percolante: ocupa casi todo el retículo Probabilidad crítica pc donde aparece por primera vez cluster percolante Fenómenos críticos: fenómenos cerca de pc. 7 . Teoría de scaling escala: trata de describirlos.7 sólo hay 4 clusters. Si L ≈ 106 sitios. necesitamos un ordenador para analizar los clusters.

La “vida” del fuego es el número de barridos necesarios para que el fuego termine. Fuego termina cuando no quedan árboles encendidos o el fuego llega a la última fila. a derecha Un árbol encendido prende a su vecino nn a la derecha y al de abajo (si existen). Cuadrado ocupado: árbol verde. Resultado: Existe un valor crítico de p (ocupación) cerca de 0.5928 para el que la vida del fuego 8 . Al cabo de un barrido completo el árbol está quemado no puede seguir encendiendo a los vecinos.Aplicaciones: 1.-Fuego en los bosques Simular un bosque por una red cuadriculada. ¿Cuánto tiempo tarda un fuego en penetrar en el bosque o en extinguirse? Simulación: Encender todos los árboles de la primera fila Recorremos la red (bosque) por filas de izda.

6 p 9 .4 0. De hecho aumenta con el tamaño del bosque T 0.aumenta.5 0.

-¡Buscar petróleo! Simular un material poroso que contiene gas o petróleo. La probabilidad de ocupación p se llama porosidad de la roca. Cuadrado ocupado: petróleo. Resultado: Si p < pc el petróleo está distribuido en clusters finitos. Para ganar dinero hay que perforar si p > pc. 10 .2. Si p < pc al perforar al azar lo más probable será pinchar un cluster pequeño y el pozo será poco rentable.

Por lo tanto en d = 1 pc = 1 P Se cumple que s sns = p. de un cluster de 4 es 4 2 p (1 − p) Si L → ∞ #4-clusters= Lp4(1 − p)2 (sin efectos de borde) Densidad de s-clusters: ns = ps(1 − p)2 ns: Probabilidad de que un punto arbitrario de la cadena sea el extremo izdo. En d = 1 si p < 1. algún punto de la cadena está vacío.Solución exacta en d = 1 La probabilidad de que un punto de la red (cadena ahora) sea el extremo izdo. p < pc(∗) Demostración: La probabilidad de que un sitio arbitrario pertenezca a un s-cluster es sns Todo sitio ocupado pertenece a un cluster 11 . de un cluster de s elementos.

Probabilidad de que un sitio ocupado pertenezca a un cluster finito de tamaño s ns es ws = P ns s s 12 .La probabilidad de que un sitio arbitrario pertenezca a un cluster de tamaño arbitrario es la probabilidad de que esté ocupado p. s = ∞ lo que invalida la fórmula anterior. Por la misma razón se ha impuesto p < pc. P Comprobación: s P sps(1 − p)2 = (1 − p)2 s p dp = s dp 2 d P s p dp d 1 = (1 − p)2p dp ( 1−p ) = p = (1 − p) p Para d > 1 la fórmula (*) sigue siendo válida excluyendo de la suma los clusters infinitos. Si p = pc = 1 entonces sólo hay un cluster que ocupa toda la cadena.

Función de Correlación g(r): probabilidad de que un sitio a distancia r de un 13 . siempre que se excluya el cluster infinito. Cálculo de S en d = 1 Denominador= p “ ”2 P 2P 2 s 2 s d Numerador= (1 − p) p dp s s p = (1 − p) sp S= 1+p (p < pc) 1−p No es sorprendente que el tamaño medio de los clusters S diverja cuando p → pc. resultado similar en d > 1. Recordar que hemos excluido el cluster infinito.Tamaño medio de los clusters es S= X X ns s2 ws s = P ns s Precaución: La fórmula anterior es válida en dimensión arbitraria.

éste y los (r − 1) sitios que hay por medio deben estar ocupados luego g(r) = pr Esta expresión puede escribirse en forma exponencial (p < 1) introduciendo la longitud de correlación ξ « „ −r g(r) = exp ξ donde 1 1 (si p pc) ξ=− log p pc − p Vemos que ξ → ∞ cerca del punto crítico ξ y S están relacionados. g(r = 0) = 1 trivialmente g(r = 1) = p la probabilidad de que un vecino esté ocupado es p Para un sitio a distancia r .sitio ocupado pertenezca al mismo cluster. En d = 1 cerca de pc = 1 S 2 = 2ξ 1−p 14 .

ν = 1. γ = 43/18 en d = 2 ν = 0. γ = 1 en d = 1 ν = 4/3.En d > 1 estas relaciones se generalizan: ξ ∼ |p − pc| −ν S(p) ∼ |p − pc| −γ Los exponentes ν y γ se llaman exponentes críticos.80 en d = 3 15 . caracterizan el comportamiento crítico.88. Universalidad: modelos aparentemente no relacionados tienen exponentes críticos comunes. γ = 1.

1e4 400000 200000 .4e+06 1e+05 1.04 0.04 16 .98 1 p 1.96 0.1e5 800000 600000 .96 0.02 1.8e+06 1e+06 1.2e+06 1e+06 .98 1 p 1.1e3 0 0.02 1.1.6e+06 1.

En d = 1 P∞ = 0 si p < pc P∞ = 1 si p = pc = 1 En d > 1 P∞ = 0 si p < pc P∞ ∼ (p − pc)β si p ∼ pc β = 0? en d = 1 β = 5/36 en d = 2 β = 0.41 en d = 3 17 .Parámetro de orden P∞: probabilidad de que un sitio pertenezca al cluster percolante.

P∞ es parámetro de orden porque distingue entre las dos fases. 1 0.4 0.6 1.4 0.6 0.6 0.8 1 p 1.2 0.8 2 18 .2 1.4 1.2 0 0 0.8 0.

como las transiciones ferromagnéticas o las térmicas. S(p) sería la susceptibilidad. El análogo ferromagnético de P∞ sería la magnetización. Relación de hiperescala: los exponentes críticos no son independientes. Se demuestra que están ligados por la relación de hiperescala 2β + γ = νd 19 .Estos comportamientos son típicos de las transiciones de fase.

Finite Size Scaling: (Escalado de Tamaño Finito?) En un retículo finito. Lo que observamos cerca del punto crítico es que ξ ∼ L luego L ∼ |p − pc| es decir −ν |p − pc| ∼ L −1/ν En un retículo finito de tamaño L × L. ξ no puede ser divergente. × L tenemos los comportamientos P∞(p) ∼ (p − pc) ∼ L β −β/ν S(p) ∼ |p − pc| −γ ∼L γ/ν 20 ... como el que siempre usamos.

si random#< p se ocupa (0). si está ocupado (0) analizo el cluster. asigno al sitio el número de cluster.Programa que identifica los clusters Llenar los sitios con probabilidad p: generar un número aleatorio. (autorecurrente. ◦ Creación del cluster: Recorro los 4 vecinos nn. si están ocupados les asigno el número de cluster y vuelvo a Crear el cluster del sitio actual. si no. Recorrer los sitios de la red. • Análisis del cluster: numero el cluster. se deja vacio (-1). en C se puede) 21 . creo el cluster.

} if(xa>0) 22 . long cluster.h> #include <stdlib. crear_cluster(xa+1.h> #include <math.h> #define L 10 #define Norm 1/((float) RAND_MAX +1.0F) #define RAND() rand()*Norm long campo[L][L].ya). long ya) { if(xa<(L-1)) if (campo[xa+1][ya]==0) { campo[xa+1][ya]=cluster.#include <stdio. void crear_cluster(long xa.

crear_cluster(xa.ya-1). crear_cluster(xa. } } 23 . } if(ya<(L-1)) if (campo[xa][ya+1]==0) { campo[xa][ya+1]=cluster. crear_cluster(xa-1.if (campo[xa-1][ya]==0) { campo[xa-1][ya]=cluster.ya).ya+1). } if(ya>0) if (campo[xa][ya-1]==0) { campo[xa][ya-1]=cluster.

ya++) { for(xa=0.xa<L.ya).ya. for(ya=0. } } } } 24 .void analiza_clusters(void) { long xa. cluster=0. campo[xa][ya]=cluster. crear_cluster(xa.ya<L.xa++) { if (campo[xa][ya]==0) { cluster++.

copias=1.9. long x.y<L.2) { for (x=0. } } 25 . x< L.y++) { campo[x][y]=-1.void main(void) { int j. float p. y. x++) { for (y=0.p+=0. p=0.4. /*llenamos la red */ for(p=0.8. if (RAND()<p) campo[x][y]=0.k.p<0.

/* Pinto la red analizada*/ for(y=L-1. for (x=0.x++) printf("%4i"./* Pinto la red -1 vacio 0 ocupado.y--) { printf("\n"). el vertice inferior izquierd for(y=L-1.x<L. /* Analizo los clusters: los numero*/ analiza_clusters().campo[x][y]). } printf("\n").x<L.y--) { printf("\n").y>=0.y>=0.campo[x][y]).x++) printf("%4i". } printf("\n"). 26 . for (x=0.

} } 27 .

p = 0.4 -1 0 -1 0 0 -1 -1 -1 0 -1 -1 12 -1 10 10 -1 -1 -1 3 -1 -1 0 -1 -1 -1 -1 -1 0 -1 -1 -1 12 -1 -1 -1 -1 -1 1 -1 -1 0 -1 0 0 -1 0 -1 0 0 0 15 -1 11 11 -1 7 -1 1 1 1 -1 0 -1 -1 -1 -1 0 -1 -1 -1 -1 13 -1 -1 -1 -1 6 -1 -1 -1 -1 0 -1 -1 0 0 -1 -1 -1 -1 -1 13 -1 -1 8 8 -1 -1 -1 -1 0 -1 0 0 0 -1 -1 0 0 -1 16 -1 8 8 8 -1 -1 4 4 -1 -1 -1 -1 0 -1 0 -1 -1 -1 0 -1 -1 -1 8 -1 9 -1 -1 -1 2 0 -1 -1 0 -1 -1 -1 -1 0 -1 17 -1 -1 8 -1 -1 -1 -1 5 -1 -1 0 -1 0 0 -1 -1 -1 0 -1 -1 14 -1 8 8 -1 -1 -1 5 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 8 -1 -1 -1 -1 -1 -1 28 .

p = 0.6 0 -1 0 -1 -1 0 -1 -1 0 0 -1 0 0 0 0 0 0 0 0 -1 0 -1 0 -1 -1 -1 -1 0 0 0 -1 0 -1 0 -1 0 0 0 0 0 -1 -1 -1 -1 0 0 0 0 -1 0 -1 0 0 0 0 0 0 0 -1 -1 0 -1 0 -1 0 -1 0 0 -1 0 -1 -1 0 0 0 0 -1 0 0 -1 -1 0 -1 0 0 -1 0 0 0 0 -1 -1 -1 -1 -1 0 -1 -1 -1 0 7 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 8 -1 1 -1 -1 -1 -1 1 1 1 -1 5 -1 4 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 9 -1 1 -1 1 -1 1 1 -1 2 -1 -1 1 1 1 1 -1 1 1 -1 -1 6 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 3 -1 -1 -1 1 29 .

p = 0.8 0 -1 -1 0 0 0 -1 -1 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 -1 -1 0 0 0 -1 0 -1 0 0 0 -1 -1 -1 0 0 0 0 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 30 .

P∞(p) ∼ (p − pc)β Usar el Cumulante de Binder Programa: medir S(p) medir P∞ ≡: tamaño del cluster mayor 31 .Buscando pc en d = 2 desesperadamente P Divergencia en S(p) = nss2/p S(p) ∼ |p − pc|−γ Cero de P∞(p).

Cumulante de Binder: Hemos visto cómo un observable en un retículo finito se comporta cerca del punto crítico. L) ∼ L−β/ν f (L/ξ).. P∞(p. La idea es construir un observable adimensional y medirlo para diferentes retículos. Teniendo en cuenta que ξ ∼ |p − pc|−ν resulta P∞(p. 32 .correcciones La función f es adimensional y en el punto crítico vale lo mismo para todos los retículos: f (0). el punto de corte nos permite situar pc. L) ∼ L−β/ν f (L1/ν (p − pc)) + . por ejemplo. 2 Medimos P∞ / P∞ 2 Cálculo de exponentes críticos Cálculo de γ/ν y β/ν a partir de los resultados obtenidos para los diferentes retículos en el punto crítico pc..

010357 0.258841 σP 0.265747 0.010223 0.012502 0.146055 39.285344 0.034210 Realizamos los ajustes de dos parámetros P∞(L) = a1L 2 .094986 210.906311 1545.645020 σS 12.201416 2195.L 20 40 60 80 100 P∞ 0.013599 95.009529 S 103.575912 150. S(L) = b1L donde a2 = −β/ν y b2 = γ/ν Obviamente es más fácil a b2 log P ∞ = log a1 + a2 log L log S = log b1 + b2 log L 33 .321150 0.986938 966.259272 0.010568 0.295242 453.

34 .

. Sea la relación teórica y = f (x. a2) = a1 + a2x. {ak })2 i=1 2 σi Condiciones de mínimo ∂χ2/∂ak = 0 . con errores (desviaciones típicas) σi en los puntos (exactos) xi. a1... n) los valores medidos. luego para un conjunto de n datos las condiciones de mínimo son 35 .. m) En el caso de que f (x. f (x. {ak }). en nuestro caso.Ajuste de n datos experimentales a una función Sean yi. (i = 1. En el caso que nos ocupa sólo tenemos 2. donde {ak } representa un conjunto de parametros (k < n). Objetivo: encontrar los mejores parámetros Principio de máxima verosimilitud: los mejores parámetros minimizan la expresión χ = 2 n X (yi − f (xi.. (k = 1. . ak ) = a1f1(x)+a2f2(x)+. la solución es fácil..

M12 = y M22 = 2 2 2 σi σi σi i=1 i=1 i=1 EL sistema lineal de ecuaciones se escribe en forma matricial Y = Ma Con solución −1 a=M Y 36 . Y2 = 2 2 σi σi i=1 i=1 n n n X 1 X xi X x2 i M11 = .n X i=1 n X i=1 (yi − a1 − a2xi)/σi = 0 2 2 (yi − a1 − a2xi)xi/σi = 0 Definiendo n n X yi X xiyi Y1 = .

Cálculo de los errores en los parámetros Sean αk los valores “exactos” de los parámetros. Caculemos el siguiente valor medio (ak − αk )(aq − αq ) de acuerdo con la solución encontrada X fj (xi) −1 (M )kj (ak − αk ) = (yi − yi) 2 σi ji Por otra parte (yi − yi)(yj − yj ) = σi δil Por tanto 2 X fj (xi)fp(xi) −1 −1 (ak − αk )(aq − αq ) = (M )kj (M )qp 2 σi jipl 37 .

de acuerdo con la definición de la matriz M (ak − αk )(aq − αq ) = (M −1 )kq Conclusión σ(ak ) = q (M −1)kk 38 .

79 ν 24 Para calcular ν usamos la relación de hiperescala dν = γ + 2β 39 .88(8) ν β 5 = = 0. ν 48 γ 43 = = 1. ν a comparar con los resultados “exactos” γ = 1.10 .14(3) .Para los datos recogidos en la tabla anterior resulta β = 0.