多重集成(使用Scipy或其他方式)

时间:2017-03-25 19:19:14

标签: python numpy scipy

f成为单个向量参数x的实值python函数,定义为x可以有多种长度。我希望在f长度x的所有m上({1}}数字地整合m,其中scipy.integrate.nquad是一些固定的正整数。 f似乎是几个变量中数值积分的一个很好的选择,但是,它要求输入函数m被定义为def f(x_1, x_2, ..., x_m): ...参数的函数,例如def f(x): ...而不是scipy。 (我假设argspec需要这个,因为它从f(x)或类似的东西中推断出积分变量的数量。)如何从我的函数m中获得这样的函数? (我希望能够为scipy.integrate.nquad的几个“大”值执行此操作,因此“手动”执行此操作并非可接受的答案。)

我也愿意接受import requests from bs4 import BeautifulSoup URL = 'http://www.nasdaq.com/symbol/amd/historical' page = requests.get(URL).text soup = BeautifulSoup(page, 'lxml') tableDiv = soup.find_all('div', id="historicalContainer") tableRows = tableDiv[0].findAll('tr') for tableRow in tableRows[2:]: row = tuple(tableRow.getText().split()) print ('"%s",%s,%s,%s,%s,"%s"' % row) 的更好替代方案。

1 个答案:

答案 0 :(得分:1)

你可以使用starargs,scipy会从集成限制中推断出参数的数量。琐碎的例子:

from scipy import integrate
def f(*args):
    x, y, z = args
    return x*y*z

integrate.nquad(f,[[0,1],[0,1],[0,1]])
# (0.12499999999999999, 5.527033708952211e-15)

所以你可以简单地包装你的函数:

def g(*args):
    return f(np.asanyarray(args))