DiracDelta 没有给出正确的结果
DiracDelta not giving correct result
我必须在一个复杂的积分中使用狄拉克三角洲,并希望看到它如何处理一个简单的情况,但它 returns 是错误的答案。任何线索我在下面做错了什么?
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
这 returns 0.0
而它不应该。
似乎 sympy
功能与 scipy
集成不兼容。需要使用 sympy
整合。以下给出正确答案
from sympy import *
x = Symbol('x')
print integrate(x*DiracDelta(x-1), (x, 0, 5.0))
不过,我不确定sympy.integrate
是否像scipy.integrate
一样强大和多才多艺。
虎叔的回答是正确的。我要补充一点,Dirac δ 函数是一种将函数评估表示为积分的符号方法。它作为符号抽象很有用,但如果您只关心数值评估,只需进行函数评估即可。那不是
b
⌠
⎮ f(x)⋅DiracDelta(x - 1) dx
⌡
a
只需使用
f(1) if a <= 1 <= b else 0
我必须在一个复杂的积分中使用狄拉克三角洲,并希望看到它如何处理一个简单的情况,但它 returns 是错误的答案。任何线索我在下面做错了什么?
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
这 returns 0.0
而它不应该。
似乎 sympy
功能与 scipy
集成不兼容。需要使用 sympy
整合。以下给出正确答案
from sympy import *
x = Symbol('x')
print integrate(x*DiracDelta(x-1), (x, 0, 5.0))
不过,我不确定sympy.integrate
是否像scipy.integrate
一样强大和多才多艺。
虎叔的回答是正确的。我要补充一点,Dirac δ 函数是一种将函数评估表示为积分的符号方法。它作为符号抽象很有用,但如果您只关心数值评估,只需进行函数评估即可。那不是
b
⌠
⎮ f(x)⋅DiracDelta(x - 1) dx
⌡
a
只需使用
f(1) if a <= 1 <= b else 0