anterior arriba avanzar

Fractales en la naturaleza

Autor: Eliseo Martínez

Existen fractales en la matemática y existen fractales en la naturaleza. Y espero que, como a veces ha ocurrido en el pasado en varios temas científicos, no haya un divorcio entre naturaleza y teoría. En rigor debería ser el mismo concepto. También espero que con los ejemplos anteriores haya quedado claro lo que se intentó explicar de manera indirecta: la característica esencial de un fractal. Una figura en la naturaleza es un fractal si bajo una escala determinada  la forma de una sección es similar a la figura de la cual se tomó la sección. O de otra manera, tomada una forma de la naturaleza, a una escala menor, los patrones de su formación se mantienen siguiendo ciertas pautas de regularidad. Si se analizan estas estructuras a distintas escalas, se encuentran los mismos elementos básicos. Finalmente, queremos decir que lo que caracteriza a una figura fractal es que es invariante bajo diferentes escalas.

Lo que se conoce como fractales en matemática, o a veces geometría fractal, se expresa mediante algoritmos, es decir, por medio de procedimientos secuenciales e iterativos, que por lo general requieren la ayuda de un ordenador. Vamos a intentar bosquejar las ideas de un fractal matemático. La idea esencial es que mediante un proceso iterativo, que es bastante sencillo en su concepto aunque engorrosa posiblemente la manipulación de los datos obtenidos, se logre construir una figura que tenga lo esencial de lo que ya entendemos por fractal, que sea invariante a diferentes escalas. Vamos entonces a explicar lo que entendemos por un proceso iterativo (siguiendo con una difícil norma, daremos un proceso iterativo que esté asociado a la naturaleza o a fenómenos naturales). Vamos a explicar un proceso iterativo mediante la llamada ecuación logística.

La ecuación logística: un modelo poblacional.

Supongamos que tenemos en estudio una determinada población. Definiremos el tamaño de la población como N(t) para el tiempo t. Vamos a suponer que la unidad de tiempo está medida en unidades discretas (semanas, meses o años), de modo que tiene sentido saber la evolución de esta población a través del tiempo, como por ejemplo saber los valores de N(0), N(1), N(2), ..., N(n). Parece natural suponer que

N(n+1) = N(n) + los que nacen en el tiempo n - los que mueren en el tiempo n

Podemos pensar, a  riesgo de equivocarnos pero con el objetivo de tener un modelo accesible de cálculo, de que los que mueren en un determinado tiempo son proporcionales a la población de ese tiempo, así como los que nacen serán proporcionales a la población de ese tiempo. De otra forma estamos diciendo que las tasas de nacimiento (b) y de muerte (d) son constantes a través del tiempo y son valores que determinan la fracción de gente que nacerá y morirá. De modo que nuestra ecuación para modelar la población queda como:

                                  N(n+1) = N(n) + b N(n) - d N(n)

                                  N(n+1) = N(n) + (b-d) N(n)

Donde el valor de (b-d) lo designaremos por s, y se interpretará como tasa de sobrevivencia, y esperamos que sea positiva, esto es que b > d, para que la población no desaparezca a través del tiempo. Entonces

                                  N(n+1) = N(n) + s N(n)

de modo que tenemos lo siguiente

                                  N(n+1) = (1 + s) N(n)

Para hacerlo más sencillo, hagamos 1 + s = a; entonces tenemos la siguiente ecuación de iteración,

                                  N(n+1) = a N(n)             (*)

Observemos lo siguiente, si tenemos la suerte de tener el valor de N(0), entonces podemos calcular el valor de N(1), mediante

                                  N(1) = a N(0)

y toda vez que tengamos el valor de N(1), podemos obtener el valor de N(2) mediante

                                  N(2) = a N(1)

y así sucesivamente. Este es un ejemplo de iteración. Muchas veces, por un cierto abuso de lenguaje a la población simplemente se le designa por N, y entonces la ecuación en (*) se denota como

                                  N <---- a N

entendiendo esto como lo siguiente: para un valor de N se calcula aN, y una vez obtenido este nuevo valor pasa a ocupar el papel de N nuevamente para seguir calculando aN, y así sucesivamente. Espero que no traiga complicaciones. En definitiva así actúa una función iterada.

Muy bien, vamos a hacer un modelo de crecimiento poblacional más real basado en este que hemos construido. Habíamos supuesto que la tasa de nacimiento b como constante, sin embargo podemos sospechar que si la población crece demasiado lo más probable es que esta tasa de nacimiento decaiga, puesto que el propio aumento de la población hará que los recursos de alimentación sean más escasos, de modo que en la expresión primitiva que la volvemos a repetir:

 N(n+1) = N(n) + los que nacen en el tiempo n - los que mueren en el tiempo n

el término "los que nacen en el tiempo n" que antes se modelaba por

                                  bN(n),

podemos modelarla mediante la expresión

                                  (b - k N(n)) N(n).

Debemos pensar que en rigor hemos cambiado la letra "b" que antes era constante, por la expresión "b - kN(n)", que simplemente dice, que mientras N(n) es pequeño, entonces el b sigue siendo casi igual, pero si N(n) es muy grande, entonces al b se le restara la expresión kN(n), lo cuál hará decaer el valor de b - kN(n) notablemente. (Nota: de algún modo la constante "k" representa la capacidad de que el nicho ecológico donde se mueve la población soporte hasta un cierto umbral)

Por otro lado, sigamos suponiendo que la tasa de mortandad es constante. De modo que tenemos ahora el siguiente modelo

                                  N(n+1) = N(n) + (b - k(N(n))N(n) - dN(n)

Trabajando con cuidado, nos queda

                                  N(n+1) = N(n) + (b - kN(n) - d)N(n)

                                  N(n+1) = N(n) + (b - d - kN(n)) N(n) 

                                  N(n+1) =  N(n) + (a - kN(n))N(n)         (**)

si hacemos a = b - d.

Ahora bien, para que esta población no se extinga necesariamente debe ocurrir que

                                  a > kN(n), para todo n

de otra forma se pide que el término (a - kN(n)) sea positivo en la expresión (**). Pero exigir esto significa asegurar que

                                  1 > (k/a)N(n) > 0

Observe que "esencialmente" N(n) y (k/a)N(n) están midiendo lo mismo, aunque con una leve diferencia. El primer término, N(n), mide cantidad de individuos, y el segundo término mide "densidad de individuos" o fracción de individuos en tanto por uno.

Vamos entonces a realizar el siguiente "cambio de variable"

                                  x(n) = (k/a)N(n)          (***)

Es decir vamos a trabajar con la densidad poblacional más que con el número de individuos. Observemos que esta igualdad es válida para todo n, en particular x(n+1) = (k/a)N(n).  Despejando el N(n) en la ecuación (***) y reemplazando el valor obtenido en (**) nos debería quedar la ecuación

                                  x(n+1) = a x(n)(1 - x(n))   (****)

Y esta ecuación ha producido ríos de tinta en física y matemática para la comprensión del caos, en varios artículos científicos.

Se puede notar que es una (clásica) función iterativa, esto es toda vez que se calcule x(n), se calcula x(n+1), y entonces se calcula x(n+2), y así sucesivamente. De otra forma si llamamos a x(n) simplemente por x, entonces

                                  x <--- a x (1 - x)

Ahora bien, vamos a ver algunos detallitos. En primer lugar, si queremos que x(n) se encuentre entre 0 y 1 para cualquier valor de n, debemos exigir una condición a la constante "a". En efecto, olvidándonos del "n" para que no nos moleste, queremos que el valor de ax(1 - x) esté entre 0 y 1, es decir si hacemos

                                  y = a x (1 - x)

que es una parábola, debemos exigir que el valor de "y" esté entre 0 y 1. Observemos que las raíces de esta parábolas están en x = 0 y x = 1, de modo que en el punto medio de ambas raíces se obtiene el máximo, en este caso, esto es en x = 1/2 se tiene que y = a/4, y puesto que se debe tener que

                                  0 < y < 1

se concluye que

                                  0 < a < 4

Entonces para que 0 < x(n) < 1, para todo n, debe ocurrir que 0 < a < 4.

Vamos a estudiar esta función iterativa en la próxima sección.

anterior arriba avanzar