2016-04-16 57 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和B的第一个值我如何为每个可能的组合(P[0],B[0]; P[1],B[0]; P[1],B[0]; P[1],B[1])运行方程?

谢谢!

+1

你是什么意思的第一个值?嵌套的'for'将进行所需的排列。 –

回答

1

迭代没有错。这是一个小错误。你只是忘记在内部for之前重新初始化t = 0。这就是为什么它只运行一次,因为t <= stop仅适用于内循环的一次迭代。这就是为什么你得到第一个值。

+0

谢谢,C熊猫!在遵循你的建议并在迭代中消除另一个错误之后,它就像一个魅力! – Dan