Python相当于MATLAB的deval

时间:2018-05-27 12:54:11

标签: python matlab numpy scipy

正如标题所示,我正在寻找一个等效函数或建议如何在MATLAB中实现与deval相同的功能,但在Python中。

代码:

import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt

#define model function that returns ds/dt, di/dt/ and dr/dt

def epidemic_model(state, t):
     s, i, r = state
     d_s = -0.06 * s * i
     d_i = 0.06 *s * i - 7*i
     d_r = 7 * i
     return [d_s, d_i, d_r]


t = np.arange(0, 1, 0.01)
init_state = [990, 10, 0]

state = odeint(epidemic_model, init_state, t)
plt.xlabel('time')
plt.ylabel('population') 
plt.plot(t, state)

现在我的任务是找出感染人口和恢复人口的数量在哪个时间相同。

我会在使用deval的MATLAB中这样做,我正在寻找这个的Python版本。

1 个答案:

答案 0 :(得分:0)

检查以下dsolve包中的sympy功能:

http://docs.sympy.org/latest/modules/solvers/ode.html#dsolve

  

求解任何(支持的)常微分方程和常微分方程组。

此外,使用integrate.solve_ivp包中的scipy求解常微分方程组:

https://docs.scipy.org/doc/scipy/reference/generated/scipy.integrate.solve_ivp.html#scipy-integrate-solve-ivp

  

该函数在给定初始值

的情况下,数值积分了一个常微分方程组