DiracDelta 未给出正确结果

问题描述 投票:0回答:2

我必须在复杂的积分中使用狄拉克德尔塔,并希望看到它如何在简单的情况下工作,但它返回了错误的答案。有什么线索我在下面做错了什么吗?

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
,但它不应该返回。

python sympy symbolic-integration
2个回答
5
投票

似乎

sympy
功能与
scipy
集成不兼容。需要使用
sympy
整合。下面给出正确答案

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

尽管如此,我不确定

sympy.integrate
是否和
scipy.integrate
一样强大且用途广泛。


2
投票

胡舒的回答是正确的。我要补充一点,狄拉克 δ 函数是将函数评估表示为积分的符号方法。它作为符号抽象很有用,但如果您只关心数值计算,则只需进行函数计算即可。那是代替

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

只需使用

f(1) if a <= 1 <= b else 0
© www.soinside.com 2019 - 2024. All rights reserved.