1

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

到目前为止,我已经尝试了一些代码,但有人告诉我“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)
4

1 回答 1

1

您可以定义如下f参数:a

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

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

要集成,您可以将 的值传递afusing args

>>> 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 没有这个问题)。
于 2015-11-22T18:08:20.677 回答