循环写入多个文件会给出相同的文件
Writing to multiple files in a loop gives identical files
正在尝试通过循环求解一些具有不同初始条件的方程。
由于'while'循环,我想获取多个文件,每个文件代表不同的初始条件,但每个文件都是一样的,数据不会改变。看不出哪里错了。
from scipy.integrate import odeint
P = 0 # birth rate
d = 0.0001 # natural death percent (per day)
B = 0.0095 # transmission percent (per day)
G = 0.0001 # resurect percent (per day)
A = 0.0001 # destroy percent (per day)
# solve the system dy/dt = f(y, t)
def f(y, t):
Si = y[0]
Zi = y[1]
Ri = y[2]
# the model equations (see Munz et al. 2009)
f0 = P - B*Si*Zi - d*Si
f1 = B*Si*Zi + G*Ri - A*Si*Zi
f2 = d*Si + A*Si*Zi - G*Ri
return [f0, f1, f2]
Si0 = 50
Zi0 = 20
Ri0= 20
for i in range(20):
while Zi0 < 105:
Zi0 += 5
y0=[Si0,Zi0,Ri0]
print(Zi0)
y = odeint(f, y0, [k*500 for k in range(40)], mxstep=1000)
print('\n'.join(','.join('%+13.5f'%x for x in row) for row in \
y),file=open("test_"+str(i)+".txt", "a"))
问题可能是您没有重置 Zi0。所以第一次在 for 循环中它执行 while 循环直到 Zi0 是 105。然后第二个 for 循环开始并且 Zi0 已经是 105,所以它跳过 while 循环并打印,并继续跳过并打印其余部分for 循环。
不完全确定你想在每个 for 循环中更改什么,所以无法帮助你...抱歉。
正在尝试通过循环求解一些具有不同初始条件的方程。
由于'while'循环,我想获取多个文件,每个文件代表不同的初始条件,但每个文件都是一样的,数据不会改变。看不出哪里错了。
from scipy.integrate import odeint
P = 0 # birth rate
d = 0.0001 # natural death percent (per day)
B = 0.0095 # transmission percent (per day)
G = 0.0001 # resurect percent (per day)
A = 0.0001 # destroy percent (per day)
# solve the system dy/dt = f(y, t)
def f(y, t):
Si = y[0]
Zi = y[1]
Ri = y[2]
# the model equations (see Munz et al. 2009)
f0 = P - B*Si*Zi - d*Si
f1 = B*Si*Zi + G*Ri - A*Si*Zi
f2 = d*Si + A*Si*Zi - G*Ri
return [f0, f1, f2]
Si0 = 50
Zi0 = 20
Ri0= 20
for i in range(20):
while Zi0 < 105:
Zi0 += 5
y0=[Si0,Zi0,Ri0]
print(Zi0)
y = odeint(f, y0, [k*500 for k in range(40)], mxstep=1000)
print('\n'.join(','.join('%+13.5f'%x for x in row) for row in \
y),file=open("test_"+str(i)+".txt", "a"))
问题可能是您没有重置 Zi0。所以第一次在 for 循环中它执行 while 循环直到 Zi0 是 105。然后第二个 for 循环开始并且 Zi0 已经是 105,所以它跳过 while 循环并打印,并继续跳过并打印其余部分for 循环。
不完全确定你想在每个 for 循环中更改什么,所以无法帮助你...抱歉。