Mostrando entradas con la etiqueta intuicion. Mostrar todas las entradas
Mostrando entradas con la etiqueta intuicion. Mostrar todas las entradas

miércoles, septiembre 28, 2011

Juego de la vida de Conway (parte 3):

En la parte 2 mostraba el código fuente del programa hecho en VB.NET.
Alguien me ha dicho que le gustaría verlo en ejecución, así que aquí va una muestra de algunas estructuras simples y otras complejas del autómata celular de Conway:

Hay formas básicas que no se mueven y otras que apenas te guiñan un ojo:



Esto lo tenéis que ver porque las formas creadas de forma totalmente aleatoria tienen su propia belleza y proporción (lo he grabado por pura casualidad. Por eso hay algún tiempo muerto y algún intento de meter más puntos en el tablero. Luego he visto que la vida evoluciona en bonitas formas similares a letras y dibujos sugerentes, así que lo he subido como está).



Por último aquí vemos que la complejidad puede ir en aumento sin límite alguno. Bueno, la limitación de mi programa es que todo se reduce a un array de 20x20.


domingo, septiembre 25, 2011

El juego de la vida de Conway (parte 2):


En la parte 1 de este tema, comentaba que Alan Turing siguiendo su propia intuición descubrió y demostró matemáticamente la AUTOORGANIZACIÓN.

Posiblemente las células de los seres vivos evolucionen de forma similar. No tienen una comunicación clara con el resto de células, y tampoco hay nada que controle todas la células, pero cada una de ellas termina teniendo una función diferenciada.

Turing abrió el camino, pero luego otros se dedicaron a "diseñar" sus propios "autómatas celulares". En 1970 John Horton Conway publicó su autómata en Scientific American en la sección dedicada a juegos matemáticos.

Hoy en día es el autómata celular más conocido y se llama "JUEGO DE LA VIDA". Las reglas son muy sencillas:

Es un juego en el que tenemos un tablero dónde inicialmente colocamos una serie de células vivas.

Generación a generación las células del tablero irán naciendo o muriendo siguiente estas reglas:

1.-Si una célula viva tiene a su alrededor menos de 2 células vivas se muere por "soledad".
2.-Si una célula viva tiene a su alrededor más de 3 células vivas se muere por "superpoblación".
3.-En una celda que esté rodeada por exactamente 3 células vivas surgirá vida en forma de una célula viva.

Este es el programa que he hecho en VB.NET.

Muestra un tablero de 20 x 20, dónde podemos marcar las celdas con células vivas.
Hay tres botones:
  1. Haciendo clic en "Una hora más" aplicamos las reglas para pasar a ver cómo queda la siguiente generación de células.
  2. Pinchando "Lanzar hasta el final" vemos como evolucionan las células hasta el infinito.
  3. Para terminar la simulación clic en "FIN".
En el próximo post publicaré en algún sitio el ejecutable (se aceptan sugerencias), y algunas de las figuras más conocidas que se crean, y que reciben un nombre que describe su comportamiento.

El código fuente:




Option Explicit On
Option Strict On

Imports System.Drawing.Drawing2D
Imports System.Math 'para truncate()
Imports System.Threading.Thread 'para usar sleep()

Public Class Form1

Dim oPen As Pen
Dim oGrafico As Graphics
Dim cuadro(20, 20) As Boolean

Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Me.BackColor = Color.Gray
Dim i, j As Integer
For i = 1 To 20
For j = 1 To 20
cuadro(i, j) = False
Next
Next
End Sub

Private Sub Form1_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseClick
Dim punto As Point
Dim cuadroX As Integer
Dim cuadroY As Integer
If e.Location.X > 30 And e.Location.X < 630 And e.Location.Y > 30 And e.Location.Y < 630 Then
cuadroX = CInt(Truncate(e.Location.X / 30))
cuadroY = CInt(Truncate(e.Location.Y / 30))
cuadro(cuadroX, cuadroY) = True
punto.X = cuadroX * 30
punto.Y = cuadroY * 30
'Dibujamos un círculo negro...
oGrafico.FillEllipse(New SolidBrush(Color.Black), New Rectangle(punto, New Size(30, 30)))
End If
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint

Dim x, y As Integer
oGrafico = Me.CreateGraphics
oPen = New Pen(Color.White, 1)

For x = 1 To 21
'Ponemos 21 columnas:
Dim pt1 As New Point(30 * x, 30)
Dim pt2 As New Point(30 * x, 630)
oGrafico.DrawLine(oPen, pt1, pt2)

Next
For y = 1 To 21
'Ponemos 21 filas:
Dim pt1 As New Point(30, 30 * y)
Dim pt2 As New Point(630, 30 * y)
oGrafico.DrawLine(oPen, pt1, pt2)
Next
dibujarCelulas()
End Sub

Private Sub btnUnaHoraMas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUnaHoraMas.Click
nuevaGeneracion()
End Sub

Private Sub btnLanzarHastaElFinal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLanzarHastaElFinal.Click
Timer1.Enabled = True
End Sub

Private Sub nuevaGeneracion()
Dim i, j, numVecinos As Integer
Dim cuadroNuevo(20, 20) As Boolean
For i = 1 To 20
For j = 1 To 20
cuadroNuevo(i, j) = cuadro(i, j)
numVecinos = vecinos(i, j)
If cuadro(i, j) Then 'si la célula está viva...
If numVecinos <> 2 And numVecinos <> 3 Then
cuadroNuevo(i, j) = False
End If
Else 'si la célula está muerta...
If numVecinos = 3 Then cuadroNuevo(i, j) = True
End If
Next
Next
cuadro = cuadroNuevo
dibujarCelulas()
End Sub

Private Sub dibujarCelulas()
Dim punto As Point
'dibujar la nueva situación:
For i = 1 To 20
For j = 1 To 20
punto.X = i * 30
punto.Y = j * 30
If cuadro(i, j) Then
'Dibujamos círculo negro
oGrafico.FillEllipse(New SolidBrush(Color.Black), New Rectangle(punto, New Size(30, 30)))
Else 'Dibujamos círculo gris que es como borra ya que el fondo es gris.
oGrafico.FillEllipse(New SolidBrush(Color.Gray), New Rectangle(punto, New Size(30, 30)))
End If
Next
Next
End Sub

Private Function vecinos(ByVal i As Integer, ByVal j As Integer) As Integer
Dim numero As Integer = 0
If i > 1 And j > 1 Then
If cuadro(i - 1, j - 1) Then numero = numero + 1
End If
If i > 1 Then
If cuadro(i - 1, j) Then numero = numero + 1
End If
If i > 1 And j < 20 Then
If cuadro(i - 1, j + 1) Then numero = numero + 1
End If
If j > 1 Then
If cuadro(i, j - 1) Then numero = numero + 1
End If
If j < 20 Then
If cuadro(i, j + 1) Then numero = numero + 1
End If
If i < 20 And j > 1 Then
If cuadro(i + 1, j - 1) Then numero = numero + 1
End If
If i < 20 Then
If cuadro(i + 1, j) Then numero = numero + 1
End If
If i < 20 And j < 20 Then
If cuadro(i + 1, j + 1) Then numero = numero + 1
End If
Return numero
End Function

Private Sub btnFin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFin.Click
Timer1.Enabled = False
Application.Exit()
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
nuevaGeneracion()
End Sub
End Class

miércoles, septiembre 21, 2011

Cómo surge la vida? Qué tiene que ver con la matemática/informática esto? Parte 1






Bueno, empezamos una serie de posts algo filosóficos, algo matemáticos, algo informáticos, algo místicos. Cada uno que reflexione y decida por sí mismo.


Me gusta decir que Alan Turing fue el primer informático. Desde luego es uno de los más grandes matemáticos, y el teórico más importante en la creación del computador moderno. Aunque la gente no lo sepa fue además un gran corredor de larga distancia.



El caso es que, antes de morir en extrañas circunstancias (envenenado al comer una manzana), hizo un trabajo inédito que tenía mucho que ver con un misterio de la biología (todavía hoy en día sigue en estudio), y consiguió probar matemáticamente lo que intuitivamente parece imposible.



Echarle un vistazo al reportaje de la BBC (La vida secreta del caos), que merece la pena (más teniendo en cuenta lo mal que está la TV hoy en día). Arriba he puesto la parte 1 de 7 que es la que se centra en el trabajo de Turing.



Más o menos recuerdo esto (el video lo vi en vacaciones):



Hay una célula. La célula se divide en dos células iguales. Es la multiplicación celular. El proceso sigue y sigue, hasta que las células van agrupándose según la función que van a desempeñar (se especializan). De esa especialización surgirán los órganos.



Ahora bien, si las células son exactamente iguales, ¿cómo es posible que sepan cómo agruparse, y cual es su "misión"?. En principio no hay comunicación entre ellas y no hay un ente central que las maneje.



Turing en su estudio explica como funciona la Autoorganización, y es curioso que tenga que ser un informático el que inicio el camino para aclarar este misterio.



En cuanto tenga un par de horas programamos el más famoso de los autómatas celulares, pero se disfruta más sabiendo el origen de todo esto, así que si tienes unos minutos echa un vistazo al documental.



Saludos.

martes, febrero 08, 2011

A veces es mejor no decir nada...

El domingo estuve viendo un programa llamado "El Conquistador del fin del mundo" que se emite en la televisión local ETB.

Participan 3 equipos y tienen que superar varias pruebas. Al equipo ganador les dieron a elegir entre 3 cofres. Uno tenía comida, otro estaba vacío, y el tercero tenía algo valioso para la aventura. El mejor regalo era la comida.

El capitán de equipo ganador (Jose Luis Corta), eligió el cofre de la izquierda.
Después de mucho hablar el presentador del programa abre el cofre del centro y se ve que era el regalo intermedio. Quedan por lo tanto 2 cofres sin abrir, el de la izquierda y el de la derecha.

Llegados a este punto, el presentador le da al capitán la posibilidad de cambiar de elección.

La elección racional que todo el mundo debería elegir es cambiar y solicitar llevarse el cofre de la derecha. Eso quedó demostrado en el post que escribí en 2008.

Yo me estaba imaginando a mí mismo en el programa intentando convencer a mi capitán de que cambie de elección. Tendría que hacer enormes esfuerzos porque es un cabezón de tomo y lomo. Finalmente le suplicaría por todo lo que quisiera que cediera, que confiara en mí, que yo se un poquitín de esto y que lo mejor es elegir el otro...

Al final seguro que lograba que cambiara, y en lugar de coger el de la izquierda cogería el de la derecha, y después...

Pues lo que os imagináis, la comida estaba a la izquierda y el de la derecha estaba vacío.

Seguro que después de la metedura de pata conocía al Korta verdadero:



Eso fue una de las cosas que me llamo la atención del episodio de Numbers dónde salía este problema de las tres opciones. El protagonista de la serie se arriesgó a cambiar, pero lejos de mostrar la lógica duda que tienes que tener ante la probabilidad de 1/3 de fracaso, mostraba una seguridad total. Esto sólo pasa en las películas.

Saludos.

martes, enero 04, 2011

paraboloide de revolucion en c++

Ya os decía el otro día que "elkarmaexiste" me planteó un problema en los comentarios de un post.

Se trata de hacer un programa que calcule el volumen que hay entre el plano z=0 y un paraboloide de revolución.

Para ver lo que es un paralelogramo de revolución y cómo se calcula el volúmen por medio de una integral doble definida podemos ir a este otro post que escribí el 12 de diciembre.

De todas formas pongo una imagen de la wikipedia:


El resultado de la integral definida para x e y entre 0 y 1 es exactamente 2/3.
O sea: 0,66666666666667

Pues este es el programa de C++ que, tal y como me pedían, calcula el volumen con distintas precisiones según el número de puntos que utilizados para el cálculo:

Lo que hago es calcular la función z=x*x + y*y para puntos cogidos al azar. Hago la suma de esos resultados y lo divido entre el número de puntos. Me imaginaba que daría como resultado el volumen, y así ha sido.

A medida que voy utilizando más puntos la precisión aumenta.



Y el resultado:



Saludos.

domingo, diciembre 12, 2010

Cálculo del volumen con la integral doble

En el post del otro día, en la zona de comentarios, elkarmaexiste me planteaba una pregunta.

Como lo leo todo deprisa y corriendo entendí que se quería conseguir una aproximación a pi por el método de montecarlo.

Hoy he vuelto a leer la pregunta y creo que me pedían hacer el programa para el cálculo del volúmen.

En cualquier caso es muy interesante conocer ese volumen que hay entre la superficie y el plano z=0 que es lo que voy a explicar hoy:

La primera función que planteaban era: f(x,y) = x^2 + y^2

Lo primero que da al ojo es que se parece mucho a la ecuación de una esfera.

Mirando en el mejor libro de cálculo del mundo, el de N.Piskunov, me entero que la figura que representa se llama paraboloide de revolución. Es lógico porque es una parábola puesta boca abajo y a la que le das vueltas.

Ayer descubrí que en Mac OSX viene una utilidad para dibujar gráficos llamada Grapher. Este sería el paraboloide de revolución dibujado por Grapher:


La intuición:

Según leí el comentario yo pensaba que lo que querían era sacar la fórmula del volumen que queda entre el plano z=0 y la superficie de la función.

Pensaba incorrectamente que la fórmula del volumen ese tendría por medio el número pi ya que por la ecuación se parece a la esfera.

Aquí el resultado:

En el mismo libro de Piskunov leo, a la vez que intento recordar, que el volúmen entre el plano z=0 y la función se calcula con una integral doble.

Aquí hay una explicación gráfica en vivo con el que se entiende perfectamente el cálculo del volumen por medio de la integral doble.



La persona que me hacía la consulta ya me indicaba los límites: para x e y entre 0 y 1.

La integral doble se resuelve por medio de dos integrales:
1.-Primero integro cogiendo como variable "X" y tratando "Y" como si fuera una constante.
2.-Luego integramos cogiendo como variable "Y" y tratando "X" como si fuera constante.

Estas son integrales definidas. El área de integración está delimitado entre valores X0 e X1 por ejemplo.
Si la función integrada es F(X) tenemos que hacer F(x1) - F(x0).


Siguiente paso:

Creo que realmente me pedían hacer un programa en FORTRAN que cogiendo 10, 100, 1000, 10000, 100000 puntos calcule de forma aproximada el volumen.

Hoy no voy a poder y mañana quien sabe. Eso sí, en el siguiente post espero publicar el programa.

Saludos.

viernes, agosto 20, 2010

El truco de los laberintos




A veces suelo hacer algunos pasatiempos. Mis preferidos son los Sudokus pero hoy comentaré un bonito truco matemático de los laberintos.
Si los de la película "Dentro del Laberinto" (1986) supieran topología no habrían tenido tantos problemas para llegar al castillo.

Fijaros cómo he resuelto este laberinto:

No hace falta ni pensar. Si algún día tenéis que hacer un programa que encuentre la salida recordad lo siguiente:

Si el laberinto tiene un entrada y una salida (lo normal) y no hay discontinuidades por ahí (también lo normal), lo único que hay que hacer es ir bien pegadito a la pared que encuentras al entrar.

No importa si coges la pared de la derecha o de la izquierda. Pon la mano en la pared y a andar.

No será el camino más corto pero no te perderás.


Saludos.

domingo, marzo 28, 2010

Este blog sirve para algo...


Estaba leyendo un periódico y me he encontrado con un artículo atípico. ¡¡¡Hablaba de matemáticas!!! y realmente no era un artículo sino que tenía la forma de artículo de opinión.

Tampoco es un artículo de opinión al uso. El autor menciona una novela. En la novela el protagonista comenta un caso real. El caso real trata sobre un concurso televisivo donde un concursante tiene que elegir entre tres puertas cerradas.

En una de la puertas hay un premio. El concursante elige una puerta. Entonces el presentador descubre una de las puertas que tiene un premio malo. Le ofrece la oportunidad de cambiar de puerta. Al parecer, según el artículo, cuando un conocido super Guinnes de la inteligencia dijo cual era la mejor opción, "docenas de doctores en matemáticas le enmendaron la plana, algunos de forma bastante airada".

¿Os suena?, sí, en julio de 2008 comenté el mismo problema, sólo que yo lo vi en una serie americana.
En el artículo de opinión el autor no da la solución, pero realmente plantea el problema y su historia de una forma excelente. Lo tenéis disponible en http://blogs.publico.es/ciencias/general/915/el-azar-y-la-necedad-bis/

La solución en aquel viejo post: http://aitoreus.blogspot.com/2008/07/otro-fallo-de-la-intuicin.html

Saludos y recordad, cuidado con la intuición.

lunes, enero 04, 2010

Galileo Galilei y la Torre de Pisa


Mañana ya veréis a donde quiero ir a para con esto...

Seguro que habéis visto un montón de veces la imagen de Galileo tirando dos objetos desde la Torre de Pisa.

Creo que en el "Libro de Petete", que yo apreciaba mucho de pequeño, había una ilustración en la que se le ve arrojando una pluma y una piedra.

Teníamos que creernos que los dos objetos caían al suelo al mismo tiempo, ya que supuestamente es lo que quería demostrar Galileo. El caso es que todos los chavales sabíamos por experiencia propia que no iba a ser así. Es por la resistencia del aire nos decían.

¿Qué es la resistencia?

No es una pregunta fácil y es que hasta 1781 no se conocían las Leyes que gobiernan el rozamiento. Fue Coulomb el que las estableció (sí, el de la carga eléctrica) experimentalmente.

Para empezar hay dos rozamientos diferentes: el estático y el dinámico. Tienen propiedades diferentes:

Rozamiento estático

Es la resistencia que opone el objeto a moverse.
Se cumple que:

1.-El rozamiento es independiente de la extensión de las superficies en contacto (Así es aunque no te lo creas).

2.-Depende de la naturaleza y estado de las superficies (material, rugosidad,...).

3.-Proporcional a la reacción normal (en un coche la fuerza normal es la que se opone a su propio peso).

4.-La fuerza de rozamiento está dirigida en sentido contrario a la velocidad relativa, siendo independiente de la misma.

Rozamiento dinámico o cinético

Es el rozamiento una vez que el objeto está en marcha y para enredar más las cosas su comportamiento es diferente al otro:

1.-Aquí se aplica la segunda Ley de Newton. Siendo F la fuerza que mantiene el objeto en movimiento y R la resistencia que va en sentido contrario: F + R = masa X aceleración.

2.-El coeficiente de rozamiento dinámico del material siempre es inferior al coeficiente de rozamiento estático.

Cosas curiosas que ocurren

El rozamiento lo originan sobre todo interacciones moleculares.

Estaría muy bien que no hubiera rozamiento para que nuestro coche corriera más, pero es que sin rozamiento ni siquiera podría ponerse en movimiento (recuerda lo que ocurre con la nieve).

A nivel atómico, cuanto más lisa es la superficie mayor el rozamiento. Si la superficie fuera lisa a nivel molecular, los materiales estarían prácticamente soldados. He colocado la explicación de esto en forma de comentario y es realmente curioso, por ser contradictorio y lógico a la vez.

Al utilizar un lubricante estamos variando el coeficiente de rozamiento.

Saludos,
A ver si sacamos provecho de esto para un programita...

domingo, julio 13, 2008

Programita que demuestra el post de ayer


Si, seguro que hay gente que no se cree que en el problemas de las tres puertas (vease post de ayer) es mejor pedir cambiar la selección.

El siguiente programa Pascal nos permite probar todas las veces que queramos para que nos convenzamos definitivamente.

En mi nuevo portátil Windows Vista no tenía compilador de Pascal.

En http://www.freepascal.org/ me he descargado la versión 2.2.0. Han sido 32 Mbytes de descarga.


El código fuente:




sábado, julio 12, 2008

Otro fallo de la intuición



Si, la intuición, ese sexto sentido al que siempre hay que prestar atención, muchas veces juega malas pasadas como vimos el otro día.
Estaba viendo la serie "NUMB3RS" y pusieron lo que después he sabido que es un problema típico de probabilidades.
El protagonista (o su hermano porque realmente no se quien es el protagonista principal de la serie) está impartiendo una clase en la universidad y para demostrar lo equivocados que estamos muchas veces plantea un problema.
Pone tres paneles de pie. Los alumnos están viendo la parte de atrás que está en blanco. Dice que en uno de los paneles hay un coche y los otros dos no hay regalo.
Le dice a una alumna (muy guapa por cierto) que seleccione un panel. Va ella y elige el del medio.
El profesor después de que la alumna haya hecho la selección (es un detalle muy importante), da la vuelta al panel de la derecha y se ve que está vacío.
Ahora le pregunta a la alumna a ver que quiere hacer, si decide cambiar de panel o se queda como está.
La alumna, que es tonta como nosotros, dice que como la probabilidad de que el coche esté en el panel de la izquierda es la misma que la que se encuentre en el centro, pues vaya, que prefiere dejarlo como está.
Y ahora es cuando el prota explica a toda leche que no, que si cambia de panel la probabilidad de conseguir el coche era de 2/3.
El profe descubre el panel de la izquierda donde estaba el super deportivo.
¿Que ha ocurrido aquí? ¿Es cierto lo que dicen? Te rompe todos los esquemas, ¡a que si!
La explicación es la siguiente:
¿Cuando elige la alumna cuales son las probabilidades? 1/3 de que acierte el deportivo.
Si selecciona justo el panel del deportivo y después de la selección del profesor cambia de panel, ¿que ocurre? Pues que pierde el deportivo. Adoptando la estrategia de cambio de panel tiene 1/3 de posibilidades de perder el deportivo.
¿Cuales son las probabilidades de que el deportivo esté en los otros 2 paneles? 2/3.
Bien, ahora el profesor coge el panel de la derecha y lo descubre. El no puede descubrir el de la izquierda ya que allí está el deportivo. Digamos que si el deportivo está en el de la derecha tiene que descubrir el de la izquiera. Por lo tanto, con la estrategia de cambio de panel tiene 2/3 de probabilidad de ganar el deportivo.
Bueno, yo he hecho lo que he podido, explicaciones magistrales aquí.

¿Quien lo diría eh?