DiracDelta no da resultado correcto.

Tengo que usar dirac delta en una integral complicada y esperaba ver cómo funciona con un caso simple, pero devuelve la respuesta incorrecta. ¿Alguna pista de lo que hice mal en lo siguiente?

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 

Esto devuelve 0.0 mientras no debería.

Parece que sympy funciones sympy no son compatibles con scipy integra. Uno tiene que utilizar sympy Integrar. Lo siguiente da la respuesta correcta

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

Aunque, no estoy seguro de si sympy.integrate es tan poderoso y versátil como scipy.integrate .

La respuesta de HuShu es correcta. Agregaré que la función Dirac δ es un método simbólico para representar la evaluación de funciones como una integral. Es útil como una abstracción simbólica, pero si solo te importa la evaluación numérica, simplemente haz la evaluación de la función. Eso es en lugar de

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

Solo usa

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