números rectangulares
TRANSCRIPT
Números rectangulares
Para la siguiente actividad necesitaremos una hoja cuadriculada y algunas
lentejas.
Con las lentejas trataremos de formar rectángulos de la siguiente manera:
Escoge un número entre 1 y 100
Toma la misma cantidad de lentejas que el número que elegiste.
Sobre tu cuadricula acomoda las lentejas de manera que
puedas formar un rectángulo Por ejemplo, si escogiste el número 12
puedes formar estos rectángulos:
El rectángulo formado por 3 renglones y 4 columnas
El rectángulo formado por 2 renglones y 6 columnas
¿Se podrán formar más rectángulos con el número 12?
Lo que has hecho es escribir al número 12 como una multiplicación,
3 x 4 = 12
2 x 6 =12 ¿Qué pasará si escogemos el número 15?
¿Cuántos rectángulos se formarán?
Elige otros números: Para que no te pierdas puedes apuntar tus
resultados en una tabla como esta
NúmeroNo. de
renglones
No. de
columnasMultiplicación
12 3 4 3 x 4 = 12
12 2 6 2 x 6 = 12
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
Hay algunos números con los que sólo se pueden formar dos rectángulos,
por ejemplo pensemos en el número 13.
¿Cuáles rectángulos se pueden formar con él?
El de 1 renglón y 13 columnas, o sea, 1x13
y el de 13 renglones y 1 columna, o sea 13x1
y con este número no se pueden hacer más rectángulos.
Estos números se llaman números primos.
Un número primo solamente es múltiplo de 1 y de él mismo.
Número pseudo-aleatorio
Un número pseudo-aleatorio es un número generado en un proceso
que parece producir números al azar, pero no lo hace realmente. Las
secuencias de números pseudo-aleatorios no muestran ningún patrón o
regularidad aparente desde un punto de vista estadístico, a pesar de haber
sido generadas por un algoritmo completamente determinista, en el que las
mismas condiciones iniciales producen siempre el mismo resultado.
Los mecanismos de generación de números aleatorios que se utilizan
en la mayoría de los sistemas informáticos son en realidad procesos pseudo-
aleatorios.
Generación de Números Aleatorios
Una parte fundamental con el trabajo de algoritmos genéticos es la
generación de números al azar que son usados para crear los algoritmos y
mutarlos.
Como estoy programando en Visual C++ 6.0, he usado la función
rand( ) con que viene este lenguaje. Debo tener en cuenta que un generador
de números pseudo-aleatorios (porque no es azar puro) debe ser inicializado
apropiadamente y tiene un periodo: la secuencia de números pseudo-
aleatorios se repite después de N números generados, el objetivo es tener un
N muy grande.
Para la inicialización, la semilla es seleccionada según la hora exacta
de la máquina y para evitar períodos cortos, cada cierto número de veces de
generación o mutación de algoritmos genéticos, vuelve y se inicializa la
semilla con otro valor (hora exacta de la máquina en segundos).
Sin embargo, como tengo un nuevo PC y algoritmo rápidos, al tratar
de inicializar la semilla con la hora exacta de la máquina me topé con el
problema que no pasaba ni un solo segundo entre inicializaciones, por lo
tanto, el generador de números pseudo-aleatorios siempre arrancaba con la
misma secuencia (algo que no es recomendable en simulación). Forcé que el
tiempo entre inicializaciones al menos fuera de un segundo pero eso hizo
que el algoritmo se tornara lento. Cambié la inicialización usando como
semilla un numero generado al azar por el mismo generador. Sin embargo,
esta idea no me gustó porque no se si hay una distribución uniforme
estadística en la generación de los números pseudo-aleatorios y tampoco se
el tamaño del periodo.
Buscando generadores de números aleatorios
En Internet existen variados algoritmos para la generación de números
pseudo-aleatorios. Llama la atención: el MT19937 de Makoto Matsumoto y
Takuji Nishimura, es un algoritmo de libre uso (GNU), tiene un período muy
largo: 2^19937 y ha pasado las pruebas mas fuertes en distribución uniforme
y según se lee en su página Web es más rápido que la función rand ( ) de
Visual C++ 6.0.
El MT19937 es también conocido como un generador "Mersenne
Twister".
¿Por que usar períodos muy largos?
El nuevo motor requiere generar 10 números pseudo-aleatorios por
cada instrucción del algoritmo genético, si cada algoritmo genético tiene
como máximo 150 instrucciones, se requieren 10*150 = 1500 números
pseudo-aleatorios, si la simulación generara 10 millones de algoritmos
genéticos, requeriría de 15.000 millones. Es decir un período sería excelente
si superara los 15.000 millones o 2^34, y el algoritmo MT19937 supera
dramáticamente esta cifra.
Para la siguiente actualización, el nuevo motor tendrá este generador
de números pseudo-aleatorios.
Método de Monte Carlo
Método no determinístico o estadístico numérico usado para
aproximar expresiones matemáticas complejas y costosas de evaluar con
exactitud. El método se llamó así en referencia al Casino de Montecarlo
(Principado de Mónaco) por ser “la capital del juego de azar”, al ser la ruleta
un generador simple de números aleatorios. El nombre y el desarrollo
sistemático de los métodos de Monte Carlo datan aproximadamente de 1944
y se mejoraron enormemente con el desarrollo de la computadora.
El uso de los métodos de Monte Carlo como herramienta de
investigación, proviene del trabajo realizado en el desarrollo de la bomba
atómica durante la segunda guerra mundial en los Álamos. Este trabajo
conllevaba la simulación de problemas probabilísticos de hidrodinámica
concernientes a la difusión de neutrones en el material de fusión, la cual
posee un comportamiento eminentemente aleatorio. En la actualidad es parte
fundamental de los algoritmos de trazado de rayos para la generación de
imágenes sintéticas.
En la primera etapa de estas investigaciones, John von Neumann y
Stanislaw Ulam refinaron esta ruleta rusa y los métodos "de división" de
tareas. Sin embargo, el desarrollo sistemático de estas ideas tuvo que
esperar el trabajo de Harris y Herman Kahn en 1948. Aproximadamente en el
mismo año, Enrico Fermi, Metropolis y Ulam obtuvieron estimadores para los
valores característicos de la ecuación de Schrödinger para la captura de
neutrones a nivel nuclear usando este método.
El método de Monte Carlo proporciona soluciones aproximadas a
una gran variedad de problemas matemáticos posibilitando la realización de
experimentos con muestreos de números pseudoaleatorios en una
computadora. El método es aplicable a cualquier tipo de problema, ya sea
estocástico o determinista. A diferencia de los métodos numéricos que se
basan en evaluaciones en N puntos en un espacio M-dimensional para
producir una solución aproximada, el método de Monte Carlo tiene un error
absoluto de la estimación que decrece como en virtud del teorema del
límite central.
Ejemplo de la Aplicación del Método usando La variable
aleatoria
Se denomina variable aleatoria, a una variable X que puede tomar un
conjunto de valores {x0, x1, x2, ... xn-1}, con probabilidades {p0, p1, p2, ... pn-1}.
Por ejemplo, en la experiencia de lanzar monedas, los posibles resultados
son {cara, cruz}, y sus probabilidades son {1/2, 1/2}. En la experiencia de
lanzar dados, los resultados posibles son {1, 2, 3, 4, 5, 6} y sus
probabilidades respectivas son {1/6, 1/6, 1/6, 1/6, 1/6, 1/6}.
Realicemos ahora la experiencia de hacer girar una ruleta y apuntar el
número del sector que coincide con la flecha. En la ruleta de la izquierda de
la figura los resultados posibles son {0, 1, 2, 3, 4, 5, 6, 7}, y la probabilidad de
cada resultado es 1/8. En la ruleta de la derecha de la figura los posibles
resultados son {0, 1, 2, 3}, y las probabilidades respectivas {1/4, 1/2, 1/8,
1/8}, proporcionales al ángulo del sector.
En los tres primeros ejemplos, la variable aleatoria X se dice que está
uniformemente distribuida, ya que todos los resultados tienen la misma
probabilidad. Sin embargo, en el último ejemplo, la variable aleatoria X, no
está uniformemente distribuida.
El problema crucial de la aplicación de los métodos de Montecarlo es
hallar los valores de una variable aleatoria (discreta o continua) con una
distribución de probabilidad dada por la función p(x) a partir de los valores de
una variable aleatoria uniformemente distribuida en el intervalo [0, 1),
proporcionada por el ordenador o por una rutina incorporada al programa.
Para simular un proceso físico, o hallar la solución de un problema
matemático es necesario usar gran cantidad de números aleatorios. El
método mecánico de la ruleta sería muy lento, además cualquier aparato
físico real genera variables aleatorias cuyas distribuciones difieren, al menos
ligeramente de la distribución uniforme ideal. También, se puede hacer uso
de tablas de cifras aleatorias uniformemente distribuidas, comprobadas
minuciosamente en base a pruebas estadísticas especiales. Se emplean
solamente cuando los cálculos correspondientes a la aplicación del método
de Montecarlo se realiza a mano, lo que en estos tiempos resulta
inimaginable. En la práctica, resulta más conveniente emplear los
denominados números pseudoaleatorios, se trata de números que se
obtienen a partir de un número denominado semilla, y la aplicación reiterada
de una fórmula, obteniéndose una secuencia {x0, x1, x2, ... xn} de números
que imitan los valores de una variable uniformemente distribuida en el
intervalo [0, 1).
Variable aleatoria discreta
Para simular la ruleta situada a la derecha de la figura, se procede del siguiente
modo: se hallan las probabilidades de cada resultado, proporcionales al ángulo de
cada sector y se apuntan en la segunda columna, la suma total debe de dar la unidad.
En la tercera columna, se escriben las probabilidades acumuladas.
Resultado Probabilidad P. acumulada
0 0.25 0.25
1 0.5 0.75
2 0.125 0.875
3 0.125 1
Se sortea un número aleatorio g uniformemente distribuido en el
intervalo [0, 1), el resultado del sorteo se muestra en la figura. En el eje X se
sitúan los distintos resultados que hemos nombrado x0, x1, x2, x3 . En el eje
vertical las probabilidades en forma de segmentos verticales de longitud igual
a la probabilidad pi de cada uno de los resultados, dichos segmentos se
ponen unos a continuación de los otros, encima su respectivo resultado xi. Se
obtiene así una función escalonada. Cuando se sortea una variable aleatoria
g, se traza una recta horizontal cuya ordenada sea g. Se busca el resultado
cuya abscisa sea la intersección de dicha recta horizontal y del segmento
vertical, tal como se señala con flechas en la figura. Si el número aleatorio g
está comprendido entre 0.25 y 0.75 se obtiene el resultado denominado x1.
La tabla describe el sorteo de una variable discreta, siendo g una variable
aleatoria uniformenente distribuída en el intervalo [0,1).
Condición Resultado
0<=g<0.25 0
0.25<=g<0.75 1
0.75<=g<0.875 2
0.875<=g<1 3
Una vez visto un caso particular, el problema general puede
formularse del siguiente modo:
Si X es una variable aleatoria discreta cuyos posible resultados son {x0, x1,
x2 , ... xn-1} y sean {p0, p1, p2, ... pn} sus respectivas probabilidades. Al sortear
un número aleatorio g, uniformemente distribuido en el intervalo [0, 1), se
obtiene el resultado xi, si se verifica la siguiente condición
(1)
Variable aleatoria continua
Comprendido el concepto de transformación de una variable discreta,
y el procedimiento para obtener un resultado cuando se efectúa el sorteo de
una variable aleatoria uniformemente distribuida, no reviste dificultad el
estudio de la variable continua. Si X es una variable aleatoria continua, y p(x)
es la probabilidad de cada resultado x, construimos la función que se
representa en la figura.
(2)
El resultado del sorteo de una variable g uniformemente distribuida en el
intervalo [0 ,1) se obtiene a partir de la ecuación.
(3)
Gráficamente, se obtiene trazando una recta horizontal de ordenada g. La
abscisa x del punto de corte con la función es el resultado obtenido. En la
figura se señala mediante flechas.
Un ejemplo sencillo es la transformación de una variable aleatoria que está
uniformemente distribuida en el intervalo [a, b) si
Integrando (2) obtenemos la función
que es una línea recta, que vale cero cuando x=a, y uno cuando x=b,
tal como puede verse en la figura inferior. Utilizando la fórmula (3) de la
transformación de la variable aleatoria continua y despejando x, se obtiene
Generador de números aleatorios
Existen varias fórmulas para obtener una secuencia de números
aleatorios, una de las más sencillas es la denominada fórmula de
congruencia: se trata de una fórmula iterativa, en la que el resultado de una
iteración se utiliza en la siguiente.
x=(a*x+c)%m;
donde a, c, m, son constantes cuyos valores elige el creador de la rutina, así
por ejemplo tenemos
a=24298 c=99491 m=199017
a=899 c=0 m=32768
República Bolivariana de Venezuela
Ministerio de Educación Superior
Instituto Universitario de Tecnología Industrial
Rodolfo Loero Arismendi
Extensión Valera
Terry Casique
C.I. 11.323.106
Valera, Abril 2007