【问题标题】:Python odeint usagePython odeint 用法
【发布时间】:2011-03-20 21:17:02
【问题描述】:

谁能告诉我如何为python的odeint函数输入参数以获得积分。

我试图让 e^x 的积分从 0 到 2,但我不确定如何输入参数。文档对我来说不是那么清楚。

谢谢

【问题讨论】:

    标签: python scipy


    【解决方案1】:

    这是一个假设 y(0) = 1 的示例。

    import scipy
    import scipy.integrate
    
    
    def integrateExp(y0, a, b):
      limits = [a, b]
      integral = scipy.integrate.odeint(lambda y, t : scipy.exp(t), y0, limits)
      return integral[1]
    
    print integrateExp(1, 0, 2)
    

    第一个参数应该采用 (y,t) 并返回相应的导数。我在这里使用了 lambda,因为 d/dt exp(t) 是微不足道的。

    【讨论】:

    • 您好,您能否告诉我如何在函数中使用它。我的意思是我可以定义一个像 def calc(x, a, b): 这样的函数并将代码粘贴到那里吗?如果在参数中指定了函数,我无法弄清楚如何将函数放在 odeint 中。它说 x 没有声明
    • 您好,谢谢。我一直在玩同样的事情,但我不知道如何添加其他功能..比如从 0-1 的 x**2 ..请查看这个线程 stackoverflow.com/questions/5372321/…
    • 嗨 Kartik,您需要自己计算导数,无论是解析还是数值。
    【解决方案2】:

    如果你只想计算积分,而不是求解微分方程,你也可以使用

    from numpy import exp
    from scipy.integrate import quad
    
    def f(x):
        return exp(x)
    
    result, error = quad(f, 0, 2)
    

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 1970-01-01
      • 2021-11-14
      • 2018-08-11
      • 2012-07-18
      • 2018-10-11
      • 2014-05-26
      • 1970-01-01
      • 2019-02-04
      相关资源
      最近更新 更多