我收到了一个我无法分辨的ValueError
。我正在尝试执行一个简单的集成任务,在lambda
函数上使用integrate.quad
。代码如下:
import numpy as np
p = np.arange(0,1,1/1000)
x = 0
y = 1
z = 0.9
pdfl = lambda p: 2*(p-x)/((y-x)*(z-x)) if p<z else 2*(y-p)/((y-x)*(y-z))
h = lambda pp: integrate.quad(lambda p: p*pdfl(p), 0, pp)
在这个代码中,pdfl
是(倾斜)三角形分布的概率密度函数。现在,这个函数适用于特定的数字,也就是说,h(0.5)
会根据需要给我们一个答案。但是,我希望在p
中的每个元素计算h
。但是当我做h(p)
时,我得到了一个例外:
关于如何克服这个错误有什么建议吗?非常感谢。在
您可以从侧栏问题中看到,此错误是在需要标量True/False的上下文中使用数组的结果。在
我的猜测是}的边界。当您给它一个边界时,它工作得很好,例如
quad
正在测试pp
对{0.5
,但是当您给它一个边界数组p
时,它会产生这个错误。quad
一次只能处理一组边界,而不是数组。在我觉得你应该做点什么
也就是说,迭代,每次执行一个绑定值的集成。在
相关问题 更多 >
编程相关推荐