【发布时间】:2017-06-03 17:20:29
【问题描述】:
我想做类似this question的事情。
Nm, Mm = np.meshgrid(range(3), range(2))
y = lambda x: x*Nm + x*Mm
然后,y 返回一个 3x2 矩阵。我想将 y 从 a 积分到 b,例如我们可以选择 a=0 和 b=1。这意味着积分矩阵的 i, j 分量应该是 (x * i + x * j) dx 的从 0 到 1 的 int。如果我考虑其中一个答案:
>>> a = [sin, cos]
>>> vectorize(quad)(a, 0, pi)
显然a 是一个函数列表,但我拥有的是一个返回数组的函数,这是不同的。我明白了:
res = np.vectorize(integrate.quad)(y, 0, 1)
error: Supplied function does not return a valid float.
我该如何解决这个问题?感谢您的帮助
编辑:
想要的结果是
res = np.empty((3,2))
for i in range(3):
for j in range(2):
res[i, j] = quad(lambda x: x*i + x*j, 0, 1)[0]
【问题讨论】:
-
那么想要的结果与使用不同的
i和j值执行6 次quad相同吗?作为参考,请向我们展示如何使用显式循环来执行此操作。 -
是的@hpaulj 这就是想要的结果。