用pydelay求解大时滞微分方程组

2024-04-23 07:50:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用pydelay来解决大型DDE系统,如下所示:

enter image description here

我的做法似乎完全是愚蠢的。我试着把这个方程写成字符串,然后把不同的部分连接起来。以下是我的尝试:

def funcE(n,C,D): 
    '''
    n is 0 .. N number of nodes in connectome
    '''
    En = ['Exc'+str(i)  for i in range(n)]
    In = ['Inh'+str(i)  for i in range(n)]
    E_str = ['' for i in range(n)]
    coffE = ['' for i in range(n)]
    sE = ['' for i in range(n)]
    Se = ['' for i in range(n)]
    Ip = ['P' for i in range(n)]
    #Ip = ['P'+str(i) for i in range(n)]

    for k in range(n):
        coffE[k] = str(1./tauE)+'*(-'+En[k]+'+('+str(kE-rE)+'*'+En[k]+')'
        print coffE    
        exit(0)


    for k in range(n):
        temp2 = []
        temp1 = []
        for l in range(n):
            if (k==l):
                continue
            else:
                temp1.append( str(C[k,l])+'*'+En[l]+'(t-'+str(D[k,l])+')')
        temp2 = '+'.join(temp1)
        sE[k] = str(c1)+'*'+En[k]+'-'+str(c2)+'*'+In[k]+'+'+Ip[k]+'+'+str(eta)+'/'+str(float(n))+'*('+temp2+')'

    for k in range(n):
        Se[k] = '(1./(1+ exp(-'+str(aE)+'*('+sE[k]+'-'+str(thetaE)+')))-'+str(1./(1.+exp(aE*thetaE)))
        E_str[k] = coffE[k]+'*'+Se[k]+')'

    return E_str

#---------------------------------------------------------#
def funcI(n): 
    '''
    n is 0 .. N number of nodes in connectome
    '''
    En = ['Exc'+str(i)  for i in range(n)]
    In = ['Inh'+str(i)  for i in range(n)]
    I_str = ['' for i in range(n)]
    coffI = ['' for i in range(n)]
    sI = ['' for i in range(n)]
    Si = ['' for i in range(n)]
    Iq = ['Q' for i in range(n)]

    for k in range(n):
        coffI[k] = str(1./tauI)+'*(-'+In[k]+'+('+str(kI-rI)+'*'+In[k]+')'

    for k in range(n):
        sI[k] = str(c3)+'*'+En[k]+'-'+str(c4)+'*'+In[k]+'+'+Iq[k]

    for k in range(n):
        Si[k] = '(1./(1+ exp(-'+str(aI)+'*('+sI[k]+'-'+str(thetaI)+')))-'+str(1./(1.+exp(aI*thetaI)))
        I_str[k] = coffI[k]+'*'+Si[k]+')'

    return I_str
#---------------------------------------------------------#

其中ckl和{}中的C是方程中的\tau。 这里的问题是求和的部分,使得方程很长。 它适用于小的N,但对大的N无效,并快速填充ram。谢谢你的指导和评论。在

编辑 f或g是这样的函数:

enter image description here


Tags: inipforrangeen方程sestr