PABLETE EN LA RED
Página dedicada a Ana Rosa Fernández Sánchez
4. LISTADOS DE LOS PROGRAMAS
4.1. PROGRAMAS COMUNES
Programa principal(princip)
clc;
disp ('1.- Generar matriz aleatoria')
disp ('2.- Leer desde fichero A.dat')
o=input ('Introduce opción ');
if o==1
n=input ('Introduce la dimension ');
A=crear(n);
else
load A.dat;
end
clc;
MIT=input('Introduce el número máximo de iteraciones ');
KIT=input('Introduce el número de iteraciones entre dos pausas');
J=1;
spy(A)
pause;
for I=1:MIT
A=const(A);
if J==KIT
spy(A);
pause;
J=1;
else
J=J+1;
end
end
spy (A);
función crear(n)
Dicho programa crea una matriz aleatoria de ceros y unos. Utiliza como parámetro la dimensión de la matriz que genera, a la que llama n.
function A=crear(n)
A=rand (n);
for I=1:n
for J=1:n
if A(I,J)>0.5
A(I,J)=0;
else
A(I,J)=1;
end
end
end
Función const(A)
A es la matriz que representa el espacio celular. La función const va pasando elemento a elemento de A y forma la matriz auxiliar AUX, que representa las celdas adyacentes a la actual. Evalúa la función f sobre cada uno de ellos y actualiza el
elemento correspondiente de A. cuando se termina el proceso se ha realizado una iteración sobre A.
function B = const(A)
B=A;
D=size (A);
for I=2:D(1)-1
for J=2:D(2)-1
for K=-1:1:1
for L=-1:1:1
AUX(K+2,L+2)=A(I+K,J+L);
end
end
B(I,J)=f(AUX);
end
end
4.2. EL JUEGO DE LA VIDA
function y=f(A)
m = A(2,1)+A(2,3);
for I=1:2:3
for J=1:3
m = m+A(I,J);
end
end
y=0;
if m==3
y=1;
else if m==2
y=A(2,2);
end
end
4.3. ESTRUCTURAS AUTOSEMEJANTES
Triángulo (Ejemplo 1)
function y=f(A)
if A==0
y=0;
else
m = A(3,1)+A(3,2)+A(3,3);
y=0;
if m==1
y=1;
else
y=0;
end
end
Seudocopo de nieve (Ejemplo 2)
En este caso, mostraremos aquí la f del probabilístico. La de los otros dos es la misma cambiando simplemente las probabilidades:
function y=f(A)
if A(2,2)==1
y=A(2,2);
else
x=rand(1);
if x>=0.5
m=A(1,1)+A(1,3)+A(3,1)+A(3,3);
if m==1
y=1;
else
y=0;
end
else
m=A(1,2)+A(3,2)+A(2,1)+A(2,3);
if m==1
y=1;
else
y=0;
end
end
end
4.4. TRIÁNGULO DE PASCAL
En este caso la matriz se representa de modo distinto, así que no sólo cambia la función f sino también la principal:
Princip
clc;
load A.dat;
MIT=input('Introduce el número máximo de iteraciones ');
KIT=input('Introduce el número de iteraciones entre dos pausas');
J=1;
A
pause;
for I=1:MIT
A=const(A);
if J==KIT
A
pause;
J=1;
else
J=J+1;
end
end
A
Const
function B = const(A)
B=A;
D=size (A);
for I=2:D(1)-1
for J=2:D(2)-1
for K=-1:1:1
for L=-1:1:1
AUX(K+2,L+2)=A(I+K,J+L);
end
end
B(I,J)=f(AUX);
end
B(I,1)=A(I-1,2);
B(I,D(2))=A(I-1,D(2)-1);
end
B(D(1),1)=A(D(1)-1,2);
B(D(1),D(2))=A(D(1)-1,D(2)-1);
for J=2:D(2)-1;
B(D(1),J)=A(D(1)-1,J-1)+A(D(1)-1,J+1);
end
Función f
function y=f(A)
% Triangulo de Pascal
if A(2,2)==0
y=A(1,1)+A(1,3);
else
y=A(2,2);
end
4.5. REGLA ANTIMAYORÍA
función f
function y=f(A)
m=A(2,1)+A(2,3);
for I=1:2:3
for J=1:3
m=m+A(I,J);
end
end
y=0;
if m>=1
if m<=4
y=1;
end
end
Trabajo realizado por Andrés García Mirantes
Página diseñada por Pablo López Cienfuegos
e-mail : [email protected]
Última modificación: 02 ENE 99