a = 3/2
使用scipy.integrate.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)
从0到无穷大的积分?
到目前为止,我已尝试过一些代码,但我被告知" quad:第一个参数不可调用"。
这是我使用的代码:
$.ajax({
...
data : { email : resource[0] }
...
});
答案 0 :(得分:1)
您可以定义f
为a
采用参数,如下所示:
def f(x, a):
return x**(a-1) * np.exp(-x)
请注意f
将第一个参数设为x
是必要的,因为这是我们要进行整合的变量。
要进行整合,您可以使用a
将f
的值传递给args
:
>>> a = 3./2
>>> scipy.integrate.quad(f, 0, np.inf, args=a)
(0.8862269254536111, 9.077554263825505e-10)
其他几点:
quad
需要一个函数(或可调用)对象作为其第一个参数。编写f(...)
会传递函数返回的值,而不是函数对象本身。3/2
将给出整数1,而不是float 1.5。你需要使其中一个数字成为一个浮点数来触发真正的除法(Python 3没有这个问题)。