【问题标题】:Using scipy.integrate.quad to integrate gamma function使用 scipy.integrate.quad 集成 gamma 函数
【发布时间】:2016-02-24 19:10:54
【问题描述】:

a = 3/2 使用scipy.integrate.quad 时,如何求Gamma(x) = x^(a-1) * e^-x 从0 到无穷大的积分?

到目前为止,我已经尝试了一些代码,但我被告知“quad:第一个参数不可调用”。

这是我使用的代码:

import numpy as np 
import math as m 
import matplotlib.pyplot as plt
from math import exp
from scipy import *
import scipy.integrate

def f(a):
    return x**(a-1)*exp(-x)

a = 3/2

print scipy.integrate.quad(f(a), 0, inf)

【问题讨论】:

    标签: python scipy integration gamma-function


    【解决方案1】:

    您可以定义fa 提供参数,如下所示:

    def f(x, a):
        return x**(a-1) * np.exp(-x)
    

    请注意,f 有必要将第一个参数作为 x,因为这是我们将对其进行积分的变量。

    要集成,您可以使用argsa 的值传递给f

    >>> a = 3./2
    >>> scipy.integrate.quad(f, 0, np.inf, args=a)
    (0.8862269254536111, 9.077554263825505e-10)
    

    其他几点:

    • 您最初的错误是因为quad 需要一个函数(或可调用)对象作为其第一个参数。编写 f(...) 传递从函数返回的值,而不是函数对象本身。
    • 在 Python 2 中,表达式 3/2 将给出整数 1,而不是浮点数 1.5。您需要将其中一个数字设为浮点数才能触发真正的除法(Python 3 没有这个问题)。

    【讨论】:

      猜你喜欢
      • 2019-11-13
      • 2022-12-22
      • 2023-03-11
      • 2018-09-06
      • 1970-01-01
      • 2023-02-05
      • 1970-01-01
      • 2014-04-20
      相关资源
      最近更新 更多