sábado, 1 de octubre de 2022

Brusselator

El Brusselator

El Brusselator es un sistema dinámico continuo que modela un proceso autocatalítico. Fue propuesto de manera conjunta por Ilya Prigogine y sus colaboradores de la Universidad Libre de Bruselas. Las reacciones químicas que describe están dadas por el siguiente sistema de ecuaciones diferenciales

$$\begin{equation}\begin{split} \dot{x}&= \alpha + x^{2} y - \beta x - x\\ \dot{y}&= \beta x - x^{2} y \end{split}\end{equation}\label{brus}\tag 1$$

El Brusselator tiene el punto de equilibrio

$$X(\alpha,\beta)=\left( \alpha, \frac{\beta}{\alpha} \right),\label{eqp}\tag 2$$

el cual es localmente asintóticamente estable para \( \beta< 1+\alpha^{2} \), tiende lentamente hacia el equilibrio (foco débil) en el valor crítico \( \beta= 1+\alpha^{2} \), y pierde su estabilidad cuando \( \beta>1+\alpha^{2} \); dando como resultado la aparición de una oscilación autosostenida ampliamente conocida en la literatura matemática como ciclo límite. En particular, a esta pérdida de estabilidad se le conoce como bifurcación de Hopf o de Andronov-Hopf. A diferencia del tipo de oscilaciones que aparecen en el sistema Lotka-Volterra, las oscilaciones en el sistema (\ref{brus}) no dependen de la cantidad inicial de elementos reactivos. De esta manera, dadas ciertas cantidades iniciales de reactivos, las órbitas en una vecindad del punto de equilibrio (\ref{eqp}) siempre tienden a un ciclo límite cuando \( \beta>1+\alpha^{2} \). Para mayores detalles consultar [1,2].

Simulación del Brusselator

Ciclo límite vía una bifurcación de Hopf en el sistema dinámico Brusselator.
Bifurcación de Hopf en el Brusselator


Código Wolfram Mathematica

       (*Parametric solution*)
     vf = ParametricNDSolveValue[
                             {
                               x'[t]==α+x[t]^2*y[t]-β*x[t]-x[t],
                               y'[t]==β*x[t]-x[t]^2*y[t],
                               x[0]==0,
                               y[0]==2
                             },
                               {x,y},
                               {t,0,100},
                               {α,β}
                          ];

       (*Frames*)
     frames = Animate[
   			Block[
    						{
     $PerformanceGoal = "Quality"
     					       },
    				With[
     						{
      					α = 1
      					       },
     					Show[
      						{
       ContourPlot[α + x^2 y - β x - x == 0, {x, 0, 
         3.5}, {y, 0, 3.5}, ContourStyle -> {Orange, Dashed}], 
       ContourPlot[β x - x^2*y == 0, {x, 0, 3.5}, {y, 0, 3.5}, 
        ContourStyle -> {Red, Dashed}], 
       StreamPlot[{α + x^2 y - β x - x, β x - 
          x^2*y}, {x, 0, 3.5}, {y, 0, 3.5}, 
        StreamStyle -> Directive[Opacity[0.5]]], 
       ParametricPlot[
        Evaluate[Through[vf[α, β][t]]], {t, 0, 70}, 
        PlotStyle -> Directive[Thickness[0.006], Black]]
       						},
      PlotRange -> All, FrameStyle -> Black,
      LabelStyle -> Directive[Small]
      ]
     ]
    ], {β, 0.5, 2.3, 0.01},
   AnimationDirection -> ForwardBackward
   ];


       (*Exporting frames to a GIF image*)
     Export[
         "Brusselator.gif",
          frames,
         "ControlAppearance"->None,
         "AnimationRepetitions"->Infinity,
         "AnimationRate"->Automatic,
         "DisplayDurations"->0.08
         ]

Referencias


[1] Strogatz, Steven H., Nonlinear Dynamics and Chaos, Westview Press, 1994.

[2] Field, Richard J., Burger, Maria, Oscillations and Traveling Waves in Chemical Systems, John Wiley and Sons, 1985.


No hay comentarios.:

Publicar un comentario