Escolar Documentos
Profissional Documentos
Cultura Documentos
Una vez obtenida la malla se pasa a identificar En donde el valor de 𝑃𝐵 (𝑊𝐿) varia desde 0.1
los vecinos ubicados a la izquierda, derecha, hasta 0.9 durante la simulación.
arriba y debajo de cada autómata (Casillas j de
la Figura 1) por medio del código presente en Debido a que el parámetro de Joining es igual
el Anexo D. a 1 cuando el vecino en la posición k es vacío y
también es igual a 1 en los tres casos
k presentados en la tabla 1, se puede hacer la
siguiente simplificación de la ecuación 1.
j
k j i j k (𝑃𝐵 )𝑛
𝑝𝑚 (𝑑) = (𝐸𝑐. 3)
4−𝑛
j
k Obteniendo de esta manera que la
probabilidad de que se mueva el autómata
Figura 1. Esquema del vecindario extendido de von
será:
Neumann. 4−𝑛
(𝑃𝐵 )𝑛
Luego se paso a realizar el movimiento de un 𝑝 = ∑( ) (𝐸𝑐. 4)
4−𝑛 𝑑
autómata al azar, calculando la probabilidad 𝑑=1
de que el autómata se mueva a uno de sus En donde la probabilidad obtenida con la
vecinos inmediatos vacíos con la ecuación 1. ecuación 4 se compara con un número
4−𝑛 aleatorio (𝜉) y si se cumple que 𝜉 ≤ 𝑝 el
𝑝 = ∑ 𝑝𝑚 (𝑑) (𝐸𝑐. 1) autómata se mueve a uno de los vecinos vacíos
𝑑=1 y se actualiza la malla donde se ubican los
autómatas y el vector de coordenadas para
1
𝑝𝑚 (𝑑) = (𝐸𝑐. 2) cada autómata.
4−𝑛 1
1+( − 1) ×
(𝑃𝐵 )𝑛 𝐽(𝑑) Después se pasa a realizar el cálculo de
numero de enlaces de hidrogeno presentes en
la malla, con lo cual se cuenta únicamente el
Y teniendo los parámetros de 𝑃𝐵 y 𝐽 numero de paredes en común entre dos
presentados en la tabla 1. autómatas tipo W.
Este procedimiento se llevo a cabo 1 millón de
veces, con el fin de asegurar 476 jugadas, una
vez terminado el numero de jugadas se paso a
calcular la fracción de autómatas tipo W que
estaban rodeadas por 4 autómatas tipo W (𝑓4 )
y se realizo el promedio del número de enlaces
de hidrogeno (𝑛̅𝐻𝐵 ). Los resultados de 𝑓4 y de
(𝑛̅𝐻𝐵 ) se presentan a continuación en la tabla
2.
Tabla 2. Valores de 𝑓4 y de 𝑛̅𝐻𝐵 .
Calculados Teórico
𝑃𝐵 (𝑊𝐿) 𝑓4 (𝑊) 𝑛̅𝐻𝐵 𝑓4 (𝑊) 𝑛̅𝐻𝐵
0.1 0.269 2.816 0.28 2.90
0.2 0.274 2.854 0.29 2.91
0.3 0.274 2.863 0.29 2.92
0.4 0.270 2.870 0.30 2.93
0.5 0.280 2.889 0.32 2.96
0.6 0.289 2.893 0.31 2.97
0.7 0.296 2.926 0.32 2.97
0.8 0.310 2.918 0.34 3.00
0.9 0.338 2.946 0.33 3.00
%% Probabilidad de Breaking
PbW=0.25; %PB Agua-Agua
PbL=0.10; %PB Lípido-Lípido
PbWL=0.1; %[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9]; %PB Agua-Lípido
%% Parámetro de Joining
JW=1; %J Agua-Agua
JWL=1; %J Agua-Lípido
JL=1; %J Lípido-Lípido
for iter=1:numIter
i_mueve=fix(rand()*numAutomatas)+1; %Selección del autómata al azar
f_s=coordenadas(i_mueve,1); %Fila del Autómata seleccionado
c_s=coordenadas(i_mueve,2); %Columna del Autómata seleccionado
[f1,c1]=ind2sub([numfil,numcol], pos_llega);
coordenadas(i_mueve,:)=[f1 c1];
if i_mueve<=2000
Am=1;
else
Am=2;
end
malla(f1,c1)=Am;
end
%% Resultados
pcolor(malla)
disp(['f4= ',num2str(f41)])
disp(['nHB= ',num2str(nHB1)])
Anexo C. Funciones de posicionamiento a azar de los autómatas.
function Salida= posAzarAutomataW(numAutomatas,numFilas,numCols)
global malla coordenadasW
nAsig=0;
while (nAsig<numAutomatas)
pos_x=fix(rand()*numFilas)+1;
pos_y=fix(rand()*numCols)+1;
if (malla(pos_x,pos_y)==0)
malla(pos_x,pos_y)=1;
nAsig=nAsig+1;
coordenadasW(nAsig,1)=pos_x;
coordenadasW(nAsig,2)=pos_y;
end
end
Salida=nAsig;
end
while (nAsig<numAutomatas)
pos_x=fix(rand*numFilas)+1;
pos_y=fix(rand*numCols)+1;
if (malla(pos_x,pos_y)==0)
malla(pos_x,pos_y)=2;
nAsig=nAsig+1;
coordenadasL(nAsig,1)=pos_x;
coordenadasL(nAsig,2)=pos_y;
end
end
Salida=nAsig;
end
Anexo D. Funcion de identificación de los vecinos de cada autómata.
function salida = idVecinos(numfil,numcol)
global vecinosMalla
for i=1:numfil
for j=1:numcol
switch i
case 1
i_v_sup=numfil;
i_v_inf=2;
case 2
i_v_sup=1;
i_v_inf=3;
case numfil-1
i_v_sup=numfil-2;
i_v_inf=numfil;
case numfil
i_v_sup=numfil-1;
i_v_inf=1;
otherwise
i_v_sup=i-1;
i_v_inf=i+1;
end
switch j
case 1
j_v_izq=numcol;
j_v_der=2;
case 2
j_v_izq=1;
j_v_der=3;
case numcol-1
j_v_izq=numcol-2;
j_v_der=numcol;
case numfil
j_v_izq=numcol-1;
j_v_der=1;
otherwise
j_v_izq=j-1;
j_v_der=j+1;
end
vecinosMalla(i,j,1)=sub2ind([numfil,numcol],i,j_v_izq);
vecinosMalla(i,j,2)=sub2ind([numfil,numcol],i,j_v_der);
vecinosMalla(i,j,3)=sub2ind([numfil,numcol],i_v_sup,j);
vecinosMalla(i,j,4)=sub2ind([numfil,numcol],i_v_inf,j);
end
end
salida=4;
end
Anexo E. Funcion de movimiento para los autómatas.
function salida= trataMover( fila_sale, col_sale,PbW,PbL,PbWL)
global vecinosMalla malla
PB=Pb(1)*Pb(2)*Pb(3)*Pb(4);
probMover=PB./(nVecLibres);
acumMover=0;
%% Calculo de la probabilidad acumulada según el vecino encontrado
for k=1:4
if Av(k)==0
acumMover=acumMover+probMover;
if numAzar<=acumMover
salida=k;
break
end
end
end
end
end