Skip to content

2D bifurcation for 3+ D dynamical systems #629

Open

Description

@nosratullah

Hi, Thanks for the awesome software.
I was wondering if there's a way to do 2D bifurcation on more than 2D dynamical systems in your software.

Please:

  • Check for duplicate requests.
    I checked that there's an example for FastSlow2D systems which indeed it provided bifurcation analyzing for 3D system, but the problem is that it's still reduces the dimension of the system to 2D (probably with time-scale separation methods).
    And more importantly, (I think) it only allows you to set one of the variable (dimensions) as the control parameter which is not desired.
  • Describe your goal, and if possible provide a code snippet with a motivating example.
@bp.odeint
def int_x(x, t, y, z, Iext, a):
    return F(x,y,z, Iext, a)

@bp.odeint
def int_y(y, t, x, z, Iext, a):
    return G(x,y,z, Iext, a)
@bp.odeint
def int_z(x, t, x, y, Iext, a):
    return H(x,y,z, Iext, a)

analyzer = bp.analysis.Bifurcation2D(
    model = [int_x, int_y, int_z],
    target_vars=dict(x=[-3, 3], y=[-3., 3.], z=[-3, 3]),
    target_pars=dict(a=[0.5, 1.], Iext=[0., 1.]),
    resolutions={'a': 0.01, 'Iext': 0.01},
)
analyzer.plot_bifurcation(num_rank=10, tol_aux=1e-9)
analyzer.show_figure()

Another example which I guess it's more common to use is analyzing the 2D bifurcation diagram of 4D Hodgkin-Huxley model . Maybe with this example I can rephrase my question which is can we perform low-dimensional bifurcation analysis on high-dimensional dynamical system with your software?
Many thanks.

Activity

  1. chaoming0625 commented on Feb 21, 2024

    @chaoming0625
    Member

    This is a good question. I will show you inspirational examples, and their limitations.

  2. nosratullah commented on Feb 22, 2024

    @nosratullah
    Author

    Great!
    Maybe a good example is provided in this link with PyDSTool. It is a 4D predator-prey system with 2D bifurcation analysis.

  3. chaoming0625 commented on Feb 29, 2024

    @chaoming0625
    Member

    Currently, brainpy does not implement the continuation analysis. However, we can do bifurcation analysis using fast-slow bifurcation analysis: fixing one variable first, then do bifurcation analysis of two remaining variables. For your cases, we can use:

    @bp.odeint
    def int_x(x, t, y, z, Iext, a):
        return F(x,y,z, Iext, a)
    
    @bp.odeint
    def int_y(y, t, x, z, Iext, a):
        return G(x,y,z, Iext, a)
    @bp.odeint
    def int_z(x, t, x, y, Iext, a):
        return H(x,y,z, Iext, a)
    
    analyzer = bp.analysis.FastSlow2D(
      [int_x, int_y, int_z],
      fast_vars={'x': [-3, 3], 'y': [-3., 3.]},
      slow_vars={'z': [-3., 3.]},
      pars_update={'a': 0.5, 'Iext': 0.5},
      resolutions={'a': 0.01, 'Iext': 0.01}
    )
    analyzer.plot_bifurcation(num_rank=20)
    analyzer.show_figure()
    

    Hoping this message can help you.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions