我必须在一个复杂的积分中使用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
。
答案 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