首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏图像处理与模式识别研究所

    SIS模型

    import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint def dy_dt(y,t 1.0/i0) else: yAnaly=1.0/((lamda/(lamda-mu))+((1/i0)-(lamda/(lamda-mu)))*np.exp(-(lamda-mu)*t)) #odeint 数值解,求解微分方程初值问题 ySI=odeint(dy_dt,y0,t,args=(lamda,0))#SI模型 ySIS=odeint(dy_dt,y0,t,args=(lamda,mu))#SIS

    71720编辑于 2022-05-29
  • 来自专栏图像处理与模式识别研究所

    SIR模型

    import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint def dySIS(y,t 易感者比例的初值 Y0=(i0,s0)#微分方程组的初值 print("lamda={}\tmu={}\tsigma={}\t(1-1/sig)={}".format(lamda,mu,sigma,fsig)) #odeint 数值解,求解微分方程初值问题 ySI=odeint(dySIS,i0,t,args=(lamda,0))#SI模型 ySIS=odeint(dySIS,i0,t,args=(lamda,mu))#SIS 模型 ySIR=odeint(dySIR,Y0,t,args=(lamda,mu))#SIR模型 #绘图 plt.title("SI、SIS和SIR模型的比较") plt.xlabel('t-youcans

    61430编辑于 2022-05-29
  • 来自专栏图像处理与模式识别研究所

    SEIR模型

    import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint plt.rcParams[ t=np.arange(0.0,tEnd,1) i0=1e-3#患病者比例的初值 e0=1e-3#潜伏者比例的初值 s0=1-i0#易感者比例的初值 Y0=(s0,e0,i0)#微分方程组的初值 #odeint 数值解,求解微分方程初值问题 ySI=odeint(dySIS,i0,t,args=(lamda,0))#SI模型 ySIS=odeint(dySIS,i0,t,args=(lamda,mu))#SIS 模型 ySIR=odeint(dySIR,(s0,i0),t,args=(lamda,mu))#SIR模型 ySEIR=odeint(dySEIR,Y0,t,args=(lamda,delta,mu))

    81330编辑于 2022-05-29
  • 来自专栏数据结构和算法

    Scipy 中级教程——积分和微分方程

    微分方程求解 Scipy 提供了 odeint 函数用于求解常微分方程组。 y, t): dydt = -y return dydt # 初始条件 y0 = 1 # 时间点 t = np.linspace(0, 5, 100) # 求解微分方程 y = odeint 通过 odeint 函数,我们可以传递初始条件 y0 和时间点 t 来求解微分方程。最后,使用 Matplotlib 绘制结果。 3. 更复杂的微分方程 如果需要求解更复杂的微分方程组,可以通过定义更复杂的 model 函数和初始条件,然后使用 odeint 函数进行求解。 下面是一个示例,演示了如何求解二阶微分方程: import numpy as np from scipy.integrate import odeint import matplotlib.pyplot

    86910编辑于 2024-01-10
  • 来自专栏Python编程 pyqt matplotlib

    数值积分法求解常微分方程

    Scipy 的 integrate 模块的 odeint 函数可以用来以数值积分法求解常微分方程。 np.linspace(x0, x0-5, 100) # 初值处向x轴负方向延伸 xp = np.linspace(x0, x0+2, 100) # 初值处向x轴正方向延伸 yn = integrate.odeint (f_np, y0, xn) # 数值积分法求解常微分方程,负方向积分 yp = integrate.odeint(f_np, y0, xp) # 数值积分法求解常微分方程,正方向积分

    76610编辑于 2023-03-03
  • 来自专栏机器学习与统计学

    【实验楼-Python 科学计算】SciPy - 科学计算库(上)

    常微分方程 (ODEs) SciPy 提供了两种方式来求解常微分方程:基于函数 odeint 的API与基于 ode 类的面相对象的API。 通常 odeint 更好上手一些,而 ode 类更灵活一些。 这里我们将使用 odeint 函数,首先让我们载入它: fromscipy.integrate import odeint, ode 常微分方程组的标准形式如下: ? 当 ? 一旦我们定义了函数 f 与数组 y_0 我们可以使用 odeint 函数: y_t = odeint(f, y_0,t) 我们将会在下面的例子中看到 Python 代码是如何实现 f 与 y_0 。 (dy, y0, t, args=(0.0, w0)) # undamped y2 = odeint(dy, y0, t, args=(0.2, w0)) # under damped y3 = odeint

    1.8K10发布于 2019-04-10
  • 来自专栏图像处理与模式识别研究所

    SIR模型的相轨迹

    import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint #用来正常显示中文标签 plt.rcParams 每天被治愈的患病者人数占患病者总数的比例 fsig=1-1/sigma print("lamda={}\tmu={}\tsigma={}\t(1-1/sig)={}".format(lamda,mu,sigma,fsig)) #odeint 0.01,0.91,0.1) for s0 in s0List:#s0,易感者比例的初值 i0=1-s0#i0,患病者比例的初值 Y0=(i0,s0)#微分方程组的初值 ySIR=odeint

    63240编辑于 2022-05-29
  • 来自专栏图像处理与模式识别研究所

    SEIR模型的相轨迹

    import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint plt.rcParams[ 传染期接触数 tEnd=600#预测日期长度 t=np.arange(0.0,tEnd,1) e0List=np.arange(0.01,0.4,0.05) for e0 in e0List: #odeint 数值解 i0=0#潜伏者比例的初值 s0=1-i0-e0#易感者比例的初值 ySEIR=odeint(dySEIR,(s0,e0,i0),t,args=(lamda,delta

    64510编辑于 2022-05-29
  • 来自专栏数据分析1480

    【收藏】万字解析Scipy的使用技巧!

    (),下面讲解如果用odeint()计算洛伦茨吸引子的轨迹,洛伦茨吸引子由下面的三个微分方程定义 odeint()有许多的参数,这里用到的4个参数主要是: lorenz:它是计算某个位置上的各个方向的速度的函数 (x,y,z):位置初始值,他是计算常微分方程所需的各个变量的初始值 t:表示时间的数组,odeint()对此数组中的每个时间点进行求解,得出所有时间点的位置 args:这些参数直接传递给lorenz ,因此他们在整个积分过程中都是常量 from scipy.integrate import odeint def lorenz(w,t,p,r,b): #给出位置矢量w和三个参数p,r,b (lorenz,(0.0,1.00,0.0),t,args=(10.0,28.0,3.0)) track2=odeint(lorenz,(0.0,1.01,0.0),t,args=(10.0,28.0,3.0 )) ode类 使用odeint()可以很方便的计算微分方程组的数值解,只需要调用一次odeint()就能计算出一组时间点上的系统状态。

    4.5K20发布于 2020-09-22
  • 来自专栏Python编程 pyqt matplotlib

    数值积分法求解常微分方程组

    Scipy 的 integrate 模块的 odeint 函数也可以用来以数值积分法求解常微分方程组。下面的代码以 猎物-捕食者模型为例讲解其用法。 400 t = np.linspace(0, 50, 250) a,b = 0.2, 0.002 c,d = 0.001, 0.7 xy_t = integrate.odeint

    82610编辑于 2023-03-03
  • 来自专栏数据科学CLUB

    Scipy使用简介

    (),下面讲解如果用odeint()计算洛伦茨吸引子的轨迹,洛伦茨吸引子由下面的三个微分方程定义 odeint()有许多的参数,这里用到的4个参数主要是: lorenz:它是计算某个位置上的各个方向的速度的函数 (x,y,z):位置初始值,他是计算常微分方程所需的各个变量的初始值 t:表示时间的数组,odeint()对此数组中的每个时间点进行求解,得出所有时间点的位置 args:这些参数直接传递给lorenz ,因此他们在整个积分过程中都是常量 from scipy.integrate import odeint def lorenz(w,t,p,r,b): #给出位置矢量w和三个参数p,r,b (lorenz,(0.0,1.00,0.0),t,args=(10.0,28.0,3.0)) track2=odeint(lorenz,(0.0,1.01,0.0),t,args=(10.0,28.0,3.0 )) ode类 使用odeint()可以很方便的计算微分方程组的数值解,只需要调用一次odeint()就能计算出一组时间点上的系统状态。

    2.7K20发布于 2020-09-18
  • 来自专栏数据科学人工智能

    使用 SIR 模型进行疫情模拟预测

    基于之前的讲解,需要输入odeint()函数的参数:微分方程、初始值、t以及微分方程的相关参数,我们首先需要定义我们刚刚建立好的SIR微分方程: # 我们定义函数的名称为SIR def SIR(y, from scipy.integrate import odeint # 求解 solution = odeint(SIR, y0, t, args = (beta, gamma)) 这样,我们就获得了 # 确定观察的时间周期 T = len(infectious_real) # 设置估计疫情的时间跨度为T天 t = np.linspace(1,T,T) # 估计三种人数的数量 solution = odeint 确定观察的时间周期 T = len(infectious_valid) # 设置估计疫情的时间跨度为T天 t = np.linspace(1,T,T) # 估计三种人数的数量 solution = odeint class SIRModel: import numpy as np from scipy.integrate import odeint def __init

    14.5K83发布于 2020-04-24
  • 来自专栏图像处理与模式识别研究所

    SI模型

    import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint #用来正常显示中文标签 plt.rcParams 患病者比例的初值 tEnd=100#预测日期长度 t=np.arange(0.0,tEnd,1) yAnaly=1/(1+(1/i0-1)*np.exp(-lamda*t))#微分方程的解析解 yInteg=odeint

    51730编辑于 2022-05-29
  • 来自专栏云深之无迹

    Python绘制动图

    # -*- coding: utf-8 -*- from math import sin, cos import numpy as np from scipy.integrate import odeint dth = v dv = -b/l * v - g/l * sin(th) return dth, dv t = np.arange(0, 20, 0.1) track = odeint (pendulum_equations1, (1.0, 0), t, args=(leng,)) #track = odeint(pendulum_equations2, (1.0, 0), t, args

    82070发布于 2021-05-18
  • 来自专栏剑指工控

    讨论 PID 以外的闭环控制系统

    模型程序案例 (Python) import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt 非线性系统的具体方程根据应用场景而定 return dxdt # 定义初始条件和时间点 x0 = 0.1 t = np.linspace(0, 10, 100) # 模拟非线性系统的响应 x = odeint ) plt.ylabel('State') plt.title('Nonlinear System Response') plt.show() 这个非线性控制案例是一个简单的非线性系统模拟,其中通过 odeint

    88110编辑于 2024-04-16
  • 来自专栏数据科学CLUB

    Python洛伦兹混沌系统

    仿真结论: 确定系统表现出不确定性,即混沌特性 长期气象预报非常困难 %matplotlib notebook # %matplotlib qt from scipy.integrate import odeint r-z)-y, x*y-b*z]) t = np.arange(0, 10.0, 0.01) # 创建时间点 # 调用ode对lorenz进行求解, 用两个不同但很接近的初始值 track1 = odeint (lorenz, (1.0, 1.00, 10.0), t, args=(10.0, 28.0, 3.0)) track2 = odeint(lorenz, (1.0, 1.00, 10.1), t,

    1.7K20发布于 2020-06-12
  • 来自专栏计算机视觉理论及其实现

    python中的scipy模块

    特别是,scipy.integrate.odeint()是个使用LSODA(Livermore Solver for Ordinary Differential equations with Automatic odeint解决这种形式的一阶ODE系统:dy/dt = rhs(y1, y2, .., t0,...)作为简介,让我们解决ODEdy/dt = -2y,区间t = 0..4,初始条件y(t=0) = 解yvec的轨道现在可以被画出:另一个使用scipy.integrate.odeint()的例子是一个阻尼弹簧-质点振荡器(二阶振荡)。 : eps = cviscous / (2 * mass * np.sqrt(kspring/mass))In [28]: eps < 1Out[28]: True对于scipy,integrate.odeint -nuc * yvec[1] - omc * yvec[0]) ....: In [32]: time_vec = np.linspace(0, 10, 100)In [33]: yarr = odeint

    6.3K23编辑于 2022-09-04
  • 来自专栏张俊红

    最近疯传的SIR传染病模型是什么?

    t_start = 0.0 t_end = ND t_inc = TS t_range = np.arange(t_start, t_end+t_inc, t_inc) #生成日期范围 RES = spi.odeint

    1.3K20发布于 2020-02-19
  • 来自专栏数据科学人工智能

    人群接触网络中的 SIR 疫情模拟

    S*I/(S + I + R) - gamma*I     dRdt = gamma*I     return [dSdt,dIdt,dRdt] 接下来我们就开始运用 scipy.integrate.odeint  = 1 #初始感染人数 R0 = 0 #初始恢复人数 S0 = N - I0 - R0 # 设置初始值 y0 = [S0, I0, R0] from scipy.integrate import odeint # 求解 solution = odeint(SIR, y0, range(0,days), args = (beta, gamma)) 将模拟的结果使用matplotlib工具绘制出来,这里我们直接使用 然后使用 Scipy 中的 odeint 函数对其进行数值求解,模拟疫情的传播。 在基本的 SIR 模型中假设人之间的接触是随机的。而在真实情况中,人与人的接触以网络形式存在。

    9.3K43发布于 2020-05-06
  • 来自专栏学西

    【机器学习】因微知著,穷数通灵:微积分与机器学习的量化之美

    解常微分方程并比较解析解与数值解 3.2.1 项目目标 解常微分方程: \frac{dy}{dx} + 2y = e^{-x} 数值解法: 使用Python的scipy.integrate.odeint 3.2.2 Python代码实现 import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint 0.5 * np.exp(-x) # 定义x范围 x_values = np.linspace(0, 5, 100) # 初始条件 y(0) = 1 y0 = 1 # 数值解 y_numeric = odeint [-1]:.4f}") # 绘制数值解与解析解 plt.figure(figsize=(10,6)) plt.plot(x_values, y_numeric, 'b-', label='数值解 (odeint 0.0034 3.2.4 结果解读 解析解与数值解的比较 在本项目中,我们解了常微分方程: \frac{dy}{dx} + 2y = e^{-x} 通过Python的scipy.integrate.odeint

    86510编辑于 2025-01-09
领券