我想模擬使用python數組進行基本單元劃分。我具有u,這是通過定義一個數組的數組:將數組中的一個元素更改爲兩個,然後刪除原始數據(單元劃分模擬)
n=2 #number of elements that can describe each cell
N=2 # number of cells
u=[np.zeros((n,n)) for i in range(N)]
V=2.0
epsilon=2.0
每個U [i]表示在系統中的小區和u是整個系統。接下來,我定義一些函數,稍後我將用它來爲我的細胞分裂算法。
Mx=np.zeros((n,n))
My=np.zeros((n,n))
for x in range (n):
Mx[x]=x-n/2
for y in range (n):
My[y]=y-n/2
在這裏,我初始化我的細胞,使他們採取1或0的值:
for i in range(N):
for x in range(n):
for y in range(n):
if (x-n/2)**2+(y-n/2)**2<5: u[i][x,y]=1
我傳播我的手機後,我想檢查已經不是長大了的細胞,讓我們說,體積V
for i in range (N):
if (np.sum([i]>V):
theta=random.uniform(0, 2*math.pi)
u.append(np.zeros((n,n)))
u[-1]=u[i]/2.0* (1+np.tanh((math.cos(theta)*Mx+math.sin(theta)*My/epsilon))
u[i]=u[i]/2.0* (1-np.tanh((math.cos(theta)*Mx+math.sin(theta)*My)/epsilon))
N+=1
現在我說,如果我的體積比規定的體積V越大,那麼我單元添加到系統中(通過附加爲零的數組),我定義我的兩個子細胞
u[-1]=u[i]/2.0*(1-np.tanh((math.cos(theta)*Mx+math.sin(theta)*My/epsilon))
和
u[i]=u[i]/2.0* (1+np.tanh((math.cos(theta)*Mx+math.sin(theta)*My/epsilon))
其中新U [I]數組代替我原來的一個。 可替換地,我試圖追加2個np.zero((N,N))陣列和定義我的兩個子細胞如
u[-1] and u[-2]
然後刪除與
del u[i]
但沒與原始親本細胞也不行。在我運行這段代碼之後,我得到的數組比我更多。如果N = 2,那麼細胞分裂後我應該有N = 4。
理想我想我原來ü陣列看起來是這樣的:
u=[array([[0,1], [1,0]]), array([[1,1],[1,0]])]
,我要檢查,如果
np.sum(u[0])>V
話,我會定義兩個新的組件集成到U,即
u[-1] and u[i]
其中新的u [i]代替原來的u [i]
因爲
np.sum(u[0]) and np.sum(u[1]) are both > V
然後我的新ü陣列應類似於此:
u=[array([[1,1], [1,0]]),
array([[1,1], [1,0]]),
array([[1,1], [1,0]]),
array([[1,1], [1,0]])]
(這在我的數組值只是示例值。真正的價值取決於我的功能
u[-1]=u[i]/2.0*(1+np.tanh((math.cos(theta)*Mx+math.sin(theta)*My/epsilon))
u[i]=u[i]/2.0*(1- np.tanh((math.cos(theta)*Mx+math.sin(theta)*My)/epsilon))
我已經更新了我的帖子,希望我這次更清楚了。 V和epsilon只是我可以定義的常量,我們給它們賦值爲2.0。 – myblackdress
請告訴我,如果我的更新接近你想要做的。 – Mantxu