I tried the following code. The first portion is strictly trying to
integrate sympy's DiracDelta numerically. It obviously fails. The
second, however, is trying to use sympy to do it in different ways.

import sympy as sp
from sympy import oo,I,cos,sin,exp
from scipy.integrate import quad, inf

>>> print quad(lambda x: sp.DiracDelta(x), -1, 1)
>>> print quad(lambda x: sp.DiracDelta(x), -100, 100)
>>> print quad(lambda x: sp.DiracDelta(x), -10000000, 10000000)
>>> print quad(lambda x: sp.DiracDelta(x), -inf, inf)

Warning: The maximum number of subdivisions (50) has been achieved.
  If increasing the limit yields no improvement it is advised to
analyze
  the integrand in order to determine the difficulties.  If the
position of a
  local difficulty can be determined (singularity, discontinuity) one
will
  probably gain from splitting up the interval and calling the
integrator
  on the subranges.  Perhaps a special-purpose integrator should be
used.
(-1.#IND, 1.#QNAN)
Warning: The maximum number of subdivisions (50) has been achieved.
  If increasing the limit yields no improvement it is advised to
analyze
  the integrand in order to determine the difficulties.  If the
position of a
  local difficulty can be determined (singularity, discontinuity) one
will
  probably gain from splitting up the interval and calling the
integrator
  on the subranges.  Perhaps a special-purpose integrator should be
used.
(-1.#IND, 1.#QNAN)
Warning: The maximum number of subdivisions (50) has been achieved.
  If increasing the limit yields no improvement it is advised to
analyze
  the integrand in order to determine the difficulties.  If the
position of a
  local difficulty can be determined (singularity, discontinuity) one
will
  probably gain from splitting up the interval and calling the
integrator
  on the subranges.  Perhaps a special-purpose integrator should be
used.
(-1.#IND, 1.#QNAN)
(0.0, 0.0)

>>> x = sp.Symbol('x')
>>> e = sp.DiracDelta(x)

>>> print sp.integrate(e, (x,-oo,oo))
>>> print sp.Integral(e, (x,-oo,oo))
>>> print sp.Integral(e, (x,-oo,oo)).evalf()
>>> print sp.Integral(e, (x,-oo,oo)).evalf(method='mpmath')
>>> print sp.Integral(e, (x,-oo,oo)).evalf(method='scipy')
>>> print sp.Integral(e, (x,-oo,oo)).evalf(method='numpy')
>>> print sp.Integral(e, (x,-oo,oo)).evalf(method='')

1
Integral(DiracDelta(x), (x, -oo, oo))
Integral(DiracDelta(x), (x, -oo, oo))
Integral(DiracDelta(x), (x, -oo, oo))
Integral(DiracDelta(x), (x, -oo, oo))
Integral(DiracDelta(x), (x, -oo, oo))
Integral(DiracDelta(x), (x, -oo, oo))

I figure the first couple should work. The last two were just wild
guesses. Is there way to numerically integrate or at least quickly
symbolically integrate the DiracDelta? Maybe using mpmath?

-wflynny
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [email protected]
For more options, visit this group at http://groups.google.com/group/sympy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to