DiracDelta没有给出正确的结果

时间:2016-04-20 21:25:02

标签: python sympy integrate

我必须在一个复杂的积分中使用dirac delta,并希望看到它如何与一个简单的情况一起工作,但它返回错误的答案。我在下面做错了什么线索?

from sympy import DiracDelta
from scipy import integrate

def f(x):
     return x*DiracDelta(x-1)

b, err = integrate.quad(f, 0, 5)    
print b

这不会返回0.0

2 个答案:

答案 0 :(得分:5)

似乎sympy函数与scipy整合不兼容。一个人需要使用sympy整合。以下给出正确答案

from sympy import *
x = Symbol('x')
print integrate(x*DiracDelta(x-1), (x, 0, 5.0))    

虽然,我不确定sympy.integrate是否与scipy.integrate一样强大且多才多艺。

答案 1 :(得分:1)

胡舒的回答是正确的。我要补充一点,狄拉克δ函数是一种将函数评估表示为积分的符号方法。它作为符号抽象很有用,但如果你只关心数值计算,那就做功能评估吧。那不是

b
⌠
⎮ f(x)⋅DiracDelta(x - 1) dx
⌡
a

只需使用

f(1) if a <= 1 <= b else 0