使用pydelay

时间:2016-11-29 16:55:08

标签: python differential-equations

我正在尝试使用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
#---------------------------------------------------------#

其中C中的cklD中的\tau是等式中的N。 这里的问题是使方程非常长的求和部分。 它适用于小N但对大group by factory_id无用,并且可以快速填充内存。感谢您的任何指导或评论。

修改 f或g是这样的函数:

enter image description here

0 个答案:

没有答案