Objetivo
Diseñar redes complejas y autómatas celulares, sistemas no lineales y analizar la teoría de caos, a través de los cuales se va a poder discernir entre los diseños más convenientes para el desarrollo del sistema.
Introducción
Implementa un autómata celular con la regla especificada (cada quien debe hacer una diferente). El programa debe recibir como entrada los valores de las celdas en t=0 y la cantidad de iteraciones (pasos de tiempo) a realizar.
Implementa un autómata celular con la regla especificada (cada quien debe hacer una diferente). El programa debe recibir como entrada los valores de las celdas en t=0 y la cantidad de iteraciones (pasos de tiempo) a realizar.
Desarrollo
- Regla con la que se está trabajando: Mi programa lo hice de una manera que se ajusta a la regla que el usuario desea convirtiendo el numero decimal a binario y después los ocho posibles casos son almacenados e impresos para el usuario con el siguiente código:
01 for(i=0; i<8; i++){REGLA[i]=0;} 02 printf("REGLA: "); 03 scanf("%d",&n); 04 //for(n=1;n<=256;n++){ 05 m=6; 06 for(bin=1;bin<=n;bin*=2) 07 j=bin; 08 for(j=bin;j>=1;j=(bin/=2)){ 09 for(j=bin;j>=1;j=(bin/=2)){ 10 n_tem=n; 11 k=n_temp; 12 n_temp=n_tem%j; 13 if(n_tem>=j){ 14 n_temp1=k/j; 15 REGLA[m]=n_temp1; 16 m--;}}} 17 18 printf("\n"); 19 printf("XXX XX0 X0X X00 0XX 0X0 00X 000 \n"); 20 for(i=0; i<8; i++){if(REGLA[i]==1){printf(" X ");} 21 else{printf(" 0 ");}}
- Determinación del valor de una celda para t=k+1 dado su valor y el de sus vecinos para t=k
- Determinación de los valores en t=k+1 para una ristra de celdas (relacionado con lo anterior).
- Impresión del resultado final.
- En el siguiente pedazo de código se observa lo pedido anteriormente. Desde los valores de las celdas y la de sus vecinos hasta la impresión del resultado final
01 if(/*PASADO*/CLIENTE[x-2][j]==1&&/*PRESENTE*/CLIENTE[x-1][j]==1&&/*FUTURO*/CLIENTE[0][j]==1) {CLIENTE[x-1][j+1]=REGLA[0];}//CASO1 02 if(/*PASADO*/CLIENTE[x-2][j]==1&&/*PRESENTE*/CLIENTE[x-1][j]==1&&/*FUTURO*/CLIENTE[0][j]==0) {CLIENTE[x-1][j+1]=REGLA[1];}//CASO2 03 if(/*PASADO*/CLIENTE[x-2][j]==1&&/*PRESENTE*/CLIENTE[x-1][j]==0&&/*FUTURO*/CLIENTE[0][j]==1) {CLIENTE[x-1][j+1]=REGLA[2];}//CASO3 04 if(/*PASADO*/CLIENTE[x-2][j]==1&&/*PRESENTE*/CLIENTE[x-1][j]==0&&/*FUTURO*/CLIENTE[0][j]==0) {CLIENTE[x-1][j+1]=REGLA[3];}//CASO4 05 if(/*PASADO*/CLIENTE[x-2][j]==0&&/*PRESENTE*/CLIENTE[x-1][j]==1&&/*FUTURO*/CLIENTE[0][j]==1) {CLIENTE[x-1][j+1]=REGLA[4];}//CASO5 06 if(/*PASADO*/CLIENTE[x-2][j]==0&&/*PRESENTE*/CLIENTE[x-1][j]==1&&/*FUTURO*/CLIENTE[0][j]==0) {CLIENTE[x-1][j+1]=REGLA[5];}//CASO6 07 if(/*PASADO*/CLIENTE[x-2][j]==0&&/*PRESENTE*/CLIENTE[x-1][j]==0&&/*FUTURO*/CLIENTE[0][j]==1) {CLIENTE[x-1][j+1]=REGLA[6];}//CASO7 08 if(/*PASADO*/CLIENTE[x-2][j]==0&&/*PRESENTE*/CLIENTE[x-1][j]==0&&/*FUTURO*/CLIENTE[0][j]==0) {CLIENTE[x-1][j+1]=REGLA[7];}//CASO8 09 10 printf("\n"); 11 for(i=0; i<x; i++){if(CLIENTE[i][j]==1){printf("X");} 12 else{printf(" ");}}
Código
Conclusiones
En esta practica se observo como un autómata celular funciona de una forma dinámica, y va cambiando con el paso del tiempo. Y como distintas reglas cambian dramáticamente el comportamiento de cada caso en particular, y como a partir de algo simple, se obtiene un comportamiento complejo.
Referencias
No hay comentarios:
Publicar un comentario