(377). AVANZANDO EN LA COMPLEJIDAD; DOBLE DEPENDENCIA

[MONOTEMA] Una vez introducidos en los campos direccionales y en la filosofía de análisis de las ecuaciones diferenciales, vamos a complicar un poco más el caso a estudiar. Ahora, tenemos que el crecimiento de la población de individuos, es decir, la derivada de la población con respecto al tiempo no sólo depende de la propia población (y del tiempo, claro), sino que lo hace también de otra población que actúa como limitante.

Pensemos en una población de presas (conejos) y una de predadores (zorros). A la primera la llamaremos x, y a la segunda y. En este post vamos a mostrar qué sucede cuando existe esa dependencia, mostrando la propuesta de Lotka-Volterra.

Ecuaciones de Lotka-Volterra

Comenzamos especificando la ecuación:

Ahora tenemos dos parámetros más, alfa y beta. El primero representa la tasa de natalidad de las presas (conejos), y el segundo la de mortalidad cuando se encuentran con los predadores (zorros). Por tanto, el crecimiento dependerá de la diferencia entre los que nazcan y los que mueran.

Del mismo modo, podemos pensar que la población de zorros depende de la de conejos, si no hay otras presas que cazar. La ecuación de crecimiento para los zorros sería:

Aquí representa una especie de tasa de transferencia energética en cada interacción entre zorros y conejos, y la tasa de mortalidad de los zorros.

Se crea, por tanto, una interdependencia entre ambas poblaciones, siendo complejo a nivel intuitivo predecir cómo evolucionarán en el tiempo.

Solución de la ecuación

Podemos dividir ambas ecuaciones, y llegar a esta expresión:

De este modo, podemos intentar resolverla con Maxima. Para ello, hemos de especificar un valor para los 4 parámetros, y también unas condiciones iniciales para las dos variables: conejos y zorros.

En cuanto al valor de los parámetros, especificamos lo siguiente:

Y también exploramos dos condiciones iniciales. En la primera (y=6 , x=2), y en la segunda (y=2 , x=2).  Podemos ya, entonces, programar el siguiente código:

A:0.5;B:0.5;C:0.5;D:0.5;
ecuacionLotkaVolterra: ‘diff(y,x) -(((C*x*y)-(D*y))/((A*x)-(B*x*y)))=0;
solucionLotkaVolterra: ode2(ecuacionLotkaVolterra,y,x);
solucionfinal_1: ic1(solucionLotkaVolterra,y=6,x=2);
solucionfinal_2: ic1(solucionLotkaVolterra,y=2,x=2);
load(implicit_plot);
implicit_plot([solucionfinal_1,solucionfinal_2] ,[y,0,8],[x,0,8], [ylabel, “Zorros”], [xlabel, “Conejos”], [legend, false]);

Hay que observar que, aunque el tiempo se incremente indefinidamente la dinámica del sistema está regida por el conjunto límite que representa cada una de las curvas solución. Las poblaciones crecen y decrecen siempre de la misma forma.

Podemos representar los campos direccionales también:

load(drawdf)$
drawdf([x*(0.5-0.5*y),-y*(0.5-0.5*x)],[x,0,8], [y,0,8],[xlabel=”Conejos”], [ylabel=”Zorros”],[trajectory_at,2,6],[trajectory_at,2,2]);

b377_3

Conejos y zorros en el tiempo

Nos falta ahora conocer la evolución de los conejos y zorros en el tiempo. En realidad ya hemos visto que deber ser un recorrido periódico, aunque nos queda la duda de qué sucede realmente en el caso en que y=6 y x=2, porque parece que hay un momento en el que la trayectoria indica que la población de conejos y zorros es cero.

Para representar esa evolución temporal de las poblaciones, hemos de emplear el método de Runge-Kutta para obtener una solución numérica.  Vamos a ayudarnos del material creado por el profesor Renato Álvarez.

Para el caso de 2 conejos y 2 zorros (x=2, y=2), obtenemos lo siguiente:

kill (all);

sol:rk([x*(0.5-0.5*y),-y*(0.5-0.5*x)],[x,y],[2,2],[t,0,40,0.1]);

x:makelist([sol[k][1],sol[k][2]],k,1,length(sol))$
y:makelist([sol[k][1],sol[k][3]],k,1,length(sol))$
ciclo:makelist([sol[k][2],sol[k][3]],k,1,length(sol));

wxplot2d([[discrete,x],[discrete,y]],[legend, “Conejos”, “Zorros”],
[xlabel, “Tiempo”], [ylabel, “Población de conejos y zorros”] );

b377_5Pero para el caso de 2 conejos y 6 zorros (x=2, y=6), obtenemos lo siguiente:

kill (all);

sol:rk([x*(0.5-0.5*y),-y*(0.5-0.5*x)],[x,y],[2,6],[t,0,40,0.1]);

x:makelist([sol[k][1],sol[k][2]],k,1,length(sol))$
y:makelist([sol[k][1],sol[k][3]],k,1,length(sol))$
ciclo:makelist([sol[k][2],sol[k][3]],k,1,length(sol));

wxplot2d([[discrete,x],[discrete,y]],[legend, “Conejos”, “Zorros”],
[xlabel, “Tiempo”], [ylabel, “Población de conejos y zorros”] );

b377_4

Por tanto, los conejos se extinguen en esta segunda situación y, si no hay un repoblamiento o entran nuevos conejos en el hábitat, la población de zorros también se extinguirá.

Un recomendable texto para introducirse en el significado de la interdependencia puede encontrarse aquí.  Al mismo tiempo, los estudiantes pueden explorar de manera interactiva el comportamiento del sistema acoplado en las demostraciones de Wolfram.

Como puede verse en estos dos “pantallazos”, los resultados concuerdan con nuestra programación (los colores están cambiados)

b377_6b377_7

Conclusión

En esta simple introducción a la dinámica de la interacción para ilustrar la complejidad, los alumnos de marketing pueden comprobar que, cuando existe acoplamiento, el comportamiento de las poblaciones es extremadamente difícil de inferir sin ayuda de las matemáticas.

Los parámetros pueden variar (aquí los hemos mantenido todos igual a 0.5), y las condiciones iniciales también. Es más, el modelo se puede complicar con la introducción de competencia en el hábitat (los conejos compiten por recursos limitados de alimentación) y otras restricciones en las ecuaciones.

Todo esto nos sirve para entender que cuando se planea una intervención sobre un sistema acoplado que está en homeóstasis, las consecuencias sobre el sistema pueden ser contra intuitivas o indeseables  Y aquí el alumno puede imaginar sistemas biológicos, económicos, políticos, etc.

Todos los posts relacionados




(#376). CAMPOS DIRECCIONALES, COMENZANDO A REPRESENTAR LA COMPLEJIDAD

[MONOTEMA] Avanzando un poco más en la introducción a la complejidad de los fenómenos sociales, los alumnos de marketing de GADE se pueden encontrar con la dificultad de enteder la representación de la dinámica de los sistemas acoplados, como el de Lotka-Volterra.

Por ello, en este post vamos a comenzar con los primeros pasos para su comprensión, tratando de trabajar el concepto de campos direccionales y la representación de trayectorias sencillas.

Ecuación diferencial de partida

Comenzamos con uno de los ejemplos más simples que podemos plantear:

Vemos que esta ecuación tiene dos variables, una independiente (t) y otra dependiente (y). La primera de ellas es el tiempo, y la segunda es, por ejemplo, la población de individuos. De este modo, el cambio de la población de individuos con respecto al tiempo depende únicamente de los individuos que hay en cada momento.

Pese a que es una ecuación muy simple, refleja un fenónemo no lineal, que podemos programar así en Maxima:

ecuacion1: ‘diff(y,t) -y=0;

solucion1: ode2(ecuacion1,y,t);

Lo que hemos hecho en este código es reformular la ecuación como “ecuacion1”:

Y luego usar función “ode2” de Maxima para resolver la ecuación diferencial ordinaria, en este caso de primer orden, a la que hemos llamado “solucion1”.

Maxima nos dice que la solución es:

donde C representa una constante de integración. Cualquier alumno puede intentar llegar a esta misma solución integrando a mano:

que generarán dos constantes de integración que se pueden aglutinar en C.

Llamaremos D=B-A y tomamos exponenciales:

Por tanto, podemos espeficiar sin problema que que , ya que es un número constante, y llegamos a la solución anterior:

Para hallar el valor de C tenemos que especificar unas condiciones iniciales, es decir, cuánto vale y cuando t es cero (que es normalmente la condición de partida). En este caso especificamos que hay 1 individuo cuando el tiempo es 0 (y=1 , t=0):

solucion: ic1(solucion1,y=1,t=0);

La solución final es:

Por tanto, C=1, y ya podemos representar gráficamente la solución

plot2d(%e^t, [t,0,3],[y,0,10], [xlabel, “t”], [ylabel, “y”]);

b376_2Vemos como la población va creciendo exponencialmente en el tiempo.

Campos direccionales

Los campos direccionales son una forma de representar el camino que van a seguir las trayectorias de cada solución posible de la ecuación diferencial. Para cada punto (i,j) del plano (t,y), es decir, del plano (tiempo, individuos), tenemos una pendiente de la recta, ya que sabemos que una derivada representa precisamente eso:

Por tanto, tenenmos tantas derivadas (j,i) como puntos consideremos. Y una pequeña recta (o flecha) representando el valor de la derivada en esos puntos es lo que se llama campo direccional. Como esas rectas son tangentes a las soluciones, tenemos una especie de camino que esas soluciones deben seguir. Y lo tenemos aunque todavía no hayamos  calculado esas soluciones.

Lo podemos obtener con Maxima escribiendo el siguiente código:

load(drawdf)$
drawdf(y,[t,y],[t,0,5], [y,0,5],[xlabel=”t”], [ylabel=”y”]);

Y ahora simplemente le añadimos al código anterior la trayectoria en el punto (y=1 , t=0):

load(drawdf)$
drawdf(y,[t,y],[t,0,3], [y,0,10],[xlabel=”t”], [ylabel=”y”],[trajectory_at,0,1]);

b376_4

Y, como puede apreciarse, en rojo tenemos la misma curva exponencial que representábamos al comienzo tras resolver la ecucación diferencial para esas condiciones iniciales.

Manualmente podríamos hacerlo simplemente calculando la derivada en cada punto y luego computando el arcotangente para saber el ángulo de inclinación de la recta.

Si las condiciones iniciales cambian, la solución de la ecuación también, y evocionará en el tiempo siguiendo el camino que nos marcan los campos direccionales. Por ejemplo, podemos añadir varias trayectorias más representando condiciones inciales diferentes.

load(drawdf)$
drawdf(y,[t,y],[t,0,3], [y,0,10],[xlabel=”t”], [ylabel=”y”],[trajectory_at,0,0],[trajectory_at,0,1],[trajectory_at,0,2],[trajectory_at,0,3],[trajectory_at,0,4]);

b376_5

Observese que, aunque le hemos pedido una trayectoria en (0,0), no la ha dibujado. Y no lo ha hecho porque no es posible ninguna trayectoria, ya que en el tiempo cero le hemos dicho que no hay individuos. Como el cambio de individuos con el tiempo (la derivada) depende del número de individuos únicamente en cada estado de tiempo, si hay cero individuos al comienzo no es posible ninguna evolución, y siempre será cero.

Conclusión

En este primer acercamiento a la representación de la complejidad con ecuaciones diferenciales, hemos aprendido a definir los campos direccionales a partir de la especificación de la ecuación diferencial.

Entender este simple ejemplo nos ayudará a avanzar en el análisis de sistemas dinámicos interdependientes, objetivo al que nos iremos acercando poco a poco en sucesivos posts.

Todos los posts relacionados




(#310). MÁS ALLÁ DEL REDUCCIONISMO EN BIOLOGÍA

[REVISIÓN DE ARTÍCULO] En este ensayo publicado en Interdisciplina, los autores abogan por hacer efectivo un cambio de paradigma en la biología que se lleva gestando ya varias décadas, pero que todavía domina ciertas áreas, como es el reduccionismo mecanicista de la relación entre genotipo y fenotipo.

Al comenzar el artículo, los autores recuerdan que el progreso científico se consigue desafiando ideas aceptadas, y este debe ser el camino para cambiar la concepción en biología de una relación mecanicista entre los genes y su expresión, cuando los datos empíricos parecen contradecir ese paradigma. Asumir que, encontrando la base molecular de una mutación que está asociada a una determinada condición, podemos intervenir en una futura mutación similar, es reducir demasiado la complejidad de los mecanismos que subyacen a la expresión de los genes.

La asunción determinista de que los genes directamente causan el fenotipo está ya superada por una aproximación sistémica que considera la complejidad inherente a esa relación. E igual de limitado es también que exista un determinismo epigenético. Ese mapeado de uno-a-uno (one-to-one mapping), es fácil de comprender, y sencillo de aceptar, pero no refleja la realidad biológica de la relación entre genotipo y fenotipo.

El dogma central de la biología en entredicho

Francis Crick, en 1958, defendió que la información fluye en este sentido: ADN–>ARN–>Proteínas. Una interpretación explícita del dogma significa que un gen codifica una proteína. Una proteína es una biomolécula que tienen una función, que determina una característica observable de un individuo, es decir, su fenotipo. Hoy sabemos que ese dogma “falla”, o algunos prefieren decir que hay “excepciones”. Así, por ejemplo, en determinados casos el ARN puede producir ADN, y existen más proteínas que genes.

Los humanos tenemos 20389 genes codificantes y más de 25000 genes no codificantes. Esto significa que no todos los genes condifican proteínas. Los autores postulan que probablemente los genes que no codifican proteínas intervienen en la definición del fenotipo a través de la regulación génica y de la especificación del tipo de célula. El número de proteínas en humanos se estima que está entre 50000 y 500000.

La epístasis, la plietropía y la poligenia, son tres fenómenos que ponen el duda el dogma central. El primero se refiere a la interacción entre diferentes genes para expresar un carácter; el segundo alude a que un gen afecta a múltiples características, mientras que el tercero indica que una función puede estar afectada por varios genes. Así, se puede concluir que resultados diferentes pueden ser producidos por un conjunto casi idénticos de genes (el mismo genotipo produce diferente fenotipo), y que la expresión de rasgos virtualmente idénticos puden ser obtenidos usando genotipos extremadamente diferentes.

Implicaciones para diversas industrias

Los autores señalan que la concepción simplista del dogma central de la biología facilita la labor de mercadeo de medicamentos y también de desarrollo de plantas modificadas genéticamente (como por ejemplo resistentes a ciertos pesticidas). Así, es más fácilmente vendible que se tiene una diana a la que apuntar para cambiar el fenotipo, pero no se tiene en cuenta la complejidad de las interacciones que existen y que son inherentes a los sistemas dinámicos.

Es evidente que, en este artículo, los autores simplemente ponen sobre la mesa una idea que para nada es nueva, pero que necesita ser diseminada con mayor amplitud. No dan detalles sobre cómo manejar desde el punto de vista experimental esa complejidad; no obstante, es una llamada de atención a la hora de valorar el desarrollo de la biomedicina y de los transgénicos.

LEE EL ARTÍCULO ORIGINAL AQUÍ:

Dávila-Velderrain, J.& Álvarez-Buylla, E.  (2015).Linear Causation Schemes in Post-genomic Biology: The Subliminal and Convenient One-to-one Genotype-Phenotype Mapping Assumption. Interdisciplina, doi: 10.22201/ceiich.24485705e.2015.5.47627

Indicadores de calidad de la revista*

 

Impact Factor (2016)

Cuartil

Categoría

Thomson-Reuters (JCR)

 

Scimago (SJR)


 

* Es simplemente un indicador aproximado para valorar la calidad de la publicación

Todos los posts relacionados