Я хотел бы как-то сократить свои уравнения ОДУ, потому что иначе код станет грязным. Я попытался использовать вспомогательные функции, такие как 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. | (по умолчанию 15 октября 2017 г., 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') Traceback (большинство
последний звонок последний):
Файл
"C: \ Anaconda3 \ Lib \ сайт-пакеты \ IPython \ ядро \ interactiveshell.py",
строка 2862, в run_code
exec (code_obj, self.user_global_ns, self.user_ns)
Файл "", строка 1, в
runfile ('C: / Users / Matteo S / Desktop / vocaboli tedesco / untitled0.py', wdir = 'C: / Users / Matteo S / Desktop / vocaboli tedesco')
Файл
"C: \ Anaconda3 \ Lib \ сайт-пакеты \ Spyder \ Utils \ сайт \ sitecustomize.py",
строка 710, в runfile
execfile (имя файла, пространство имен)
Файл
"C: \ Anaconda3 \ Lib \ сайт-пакеты \ Spyder \ Utils \ сайт \ sitecustomize.py",
строка 101, в execfile
exec (compile (f.read (), filename, 'exec'), пространство имен)
Файл "C: / Users / Matteo S / Desktop / vocaboli tedesco / untitled0.py", строка
17
def fe (P [0]):
^ SyntaxError: неверный синтаксис