我想以某种方式缩短我的ODE方程,因为否则代码将变得混乱。我已经尝试过使用诸如fe()的辅助函数,但这是行不通的。以下代码仅是示例,欢迎任何建议!谢谢!
# Import the required modules
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
# Here the parameters
a,b,c,d = 1,1,1,1
def fe(P[0]):
return d*P[0]
# Define a function which calculates the derivative
def dP_dl(P, l):
return [P[0]*(a - b*P[1]),
-P[1]*(c - fe(P[0]) )]
ts = np.linspace(0, 12, 100)
P0 = [1.5, 1.0]
Ps = odeint(dP_dl, P0, ts)
prey = Ps[:,0]
predators = Ps[:,1]
plt.plot(ts, prey, "+", label="Rabbits")
plt.plot(ts, predators, "x", label="Foxes")
plt.xlabel("Time")
plt.ylabel("Population")
plt.legend();
这是我从python控制台获得的。
Python 3.6.3 | Anaconda,Inc. | (默认值,2017年10月15日,07:29:16)[MSC v.1900 32位(Intel)]键入“版权”,“信用”或“许可证” 更多信息。
IPython 6.1.0-增强的交互式Python。
runfile('C:/ Users / Matteo S / Desktop / vocaboli tedesco / untitled0.py', wdir ='C:/ Users / Matteo S / Desktop / vocaboli tedesco')追溯(大多数 最近通话结束):
文件 “ C:\ Anaconda3 \ lib \ site-packages \ IPython \ core \ interactiveshell.py”, 第2862行,在run_code中 exec(code_obj,self.user_global_ns,self.user_ns)
文件“”,第1行,在 运行文件
文件 “ C:\ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py”, 运行文件中的第710行 execfile(文件名,命名空间)
文件 “ C:\ Anaconda3 \ lib \ site-packages \ spyder \ utils \ site \ sitecustomize.py”, 第101行,在execfile中 exec(compile(f.read(),文件名,'exec'),命名空间)
文件“ C:/用户/ Matteo S /桌面/ vocaboli tedesco / untitled0.py”,行 17 def fe(P [0]): ^ SyntaxError:语法无效
答案 0 :(得分:1)
函数不应该知道您正在传递迭代器的第一个元素,他应该只知道您正在传递数字。另一方面,函数dP_dl的样式设置为分离组件以使其更具可读性。
users := []model.User{}
db.Find(&users, map[string]interface{}{"foo": "bar"})