solving two dimension-differential equations in python with scipy

前端 未结 1 1792
北荒
北荒 2020-12-20 04:13

i am a newbie to python. I have a simple differential systems, which consists of two variables and two differential equations and initial conditions x0=1, y0=2

相关标签:
1条回答
  • 2020-12-20 04:31

    Apply trick to desingularize the division by y, print all ODE function evaluations, plot both components, and use the right differential equation with the modified code

    import matplotlib.pyplot as pl
    import numpy as np
    from scipy.integrate import odeint
    
    def func(z,t):
        x, y=z
        print t,z
        return [6*y, (2*t-3*x)*y/(4*y**2+1e-12)]    
    
    z0=[1,2]
    t = np.linspace(0,1,501)
    xx=odeint(func, z0, t)
    pl.figure(1)
    pl.plot(t, xx[:,0],t,xx[:,1])
    pl.legend()
    pl.show()
    

    and you see that at t=0.64230232515 the singularity of y=0 is assumed, where y behaves like a square root function at its apex. There is no way to cross that singularity, as the slope of y goes to infinity. At this point, the solution is no longer continuously differentiable, and thus this is the extremal point of the solution. The constant continuation is an artifact of the desingularization, not a valid solution.

    0 讨论(0)
提交回复
热议问题