0
我試圖解決使用scipy.integrate.odeint衰變方程。我試圖從字典中獲得初始值,但它不起作用,我不確定它是否可以工作。這裏是我正在使用的代碼:使用scipy.integrate.odeint與字典[Python]
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
def decay(init,t):
f0 = - init['a']/.5
f1 = init['a']/.5 - init['b']/.2
f2 = init['b']/.2
return [f0,f1,f2]
if __name__ == '__main__':
init = {'a':5, 'b':0, 'c':0}
time = np.linspace(0, 10, 101)
soln = odeint(decay, init ,time)
a = soln[:,0]
b = soln[:,1]
c = soln[:,2]
print a
print b
print c
plt.plot(time, a, color = 'g')
plt.plot(time, b, color = 'r')
plt.plot(time, c, color = 'b')
plt.show()
它的工作原理是,如果預期的,而不是一本字典我用像這樣的列表:
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
def decay(init,t):
a,b,c = init
f0 = - a/.5
f1 = a/.5 - b/.2
f2 = b/.2
return [f0,f1,f2]
if __name__ == '__main__':
init = [5,0,0]
time = np.linspace(0, 10, 101)
soln = odeint(decay, init ,time)
a = soln[:,0]
b = soln[:,1]
c = soln[:,2]
print a
print b
print c
plt.plot(time, a, color = 'g')
plt.plot(time, b, color = 'r')
plt.plot(time, c, color = 'b')
plt.show()
不過,我需要使用一個字典我的目的。有沒有辦法使用字典來調用初始值?
根據文檔,第二個參數應該是一個數組 - 'numpy'將列表轉換爲數組非常好,但它不會將字典轉換爲數組...所以您要求的可能是是不可能的... – mgilson
哦,是的,現在我明白了。好眼睛 – greenthumbtack