2016-04-16 24 views
0

私はプログラミングがかなり新しいです。私はクラスでいくつかのRとMatlabを取り上げましたが、私はPythonに精通しています。私は、複数の初期条件を与えられた微分方程式の系を数値的に近似するモデルをコード化しようとしています。私は現在持っているコードは以下の通りです:Pythonの複数の初期条件

import matplotlib.pyplot as plt 

# parameters 
sigma=10 
gamma=1 
alpha=50 
delta=2.1 
# initial conditions 
B=[100,200] 
P=[1,10] 
t=0 
# counter 
dt=0.00005 
stop=1 
# vector 
Bstor=[] 
Pstor=[] 
tstor=[] 
# let's go 

for i in B: 
    for j in P: 
     while t<=stop: 
      Bstor.append(i) 
      Pstor.append(j) 
      tstor.append(t) 
      i=i+(sigma-gamma*i-alpha*i*j)*dt 
      j=j+(alpha*i*j-delta*j)*dt 
      t=t+dt 

plt.figure(1) 
plt.plot(tstor,Bstor,'-b') 
plt.plot(tstor,Pstor,'-r') 
plt.xlabel('Time') 
plt.ylabel('Number') 
plt.show() 

これは私が方程式は、各可能な組み合わせ(P[0],B[0]; P[1],B[0]; P[1],B[0]; P[1],B[1])のために実行してもらうにはどうすればよい非常にうまく計算を行うが、唯一のPとBの最初の値についてのだろうか?

ありがとうございます!

+1

最初の値はどういう意味ですか?ネストされた 'for'は必要な順列を作ります。 –

答えて

1

何も問題ありません。それは小さなバグです。あなたはforの前にt = 0を再初期化するのを忘れています。それで、t <= stopが内部ループの1回の反復だけを保持するため、1回実行されます。だからこそ、あなたは最初の価値を得ています。

+0

ありがとう、Cパンダ!あなたの助言に従って、反復の別のバグを洗い流した後、それは魅力のように働いた! – Dan