我尝试使用pydelay来解决大型DDE系统,如下所示:
我的做法似乎完全是愚蠢的。我试着把这个方程写成字符串,然后把不同的部分连接起来。以下是我的尝试:
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是这样的函数:
目前没有回答
相关问题 更多 >
编程相关推荐