# newbie question about symbolic integration in sage

Hi,

I am new to sage and my question can be naive, I apologize in advance. I would like to use sage for some symbolic integration operations to avoid human mistake. Here is my first test (which is going to important for my application).

Integration of Normal distribution from -infinity to +infinity. Obviously the result should be one and I am wondering why I don't get it:

x, sigma, mu = var('x','sigma','mu')

q = 1/((2*pi)^(1/2)*sigma)*exp(-(x - mu)^2/(2*sigma^2))

show(q)

import sympy

show((sympy.integrate(q, (x,-sympy.oo, sympy.oo))).simplify())


## Here is the result:

Integral(2**(1/2)*exp(-mu**2/(2*sigma**2))*exp(-x**2/(2*sigma**2))*exp(mu*x/sigma**2)/(2*pi**(1/2)*sigma),(x,-oo,oo))


I am wondering why I don't get 1? Am I missing anything?

Thanks

edit retag close merge delete

Sort by » oldest newest most voted
sage: x, sigma, mu = var('x','sigma','mu')
sage: q = 1/((2*pi)^(1/2)*sigma)*exp(-(x - mu)^2/(2*sigma^2))
sage: assume(sigma>0)
sage: integral(q,(x,-oo,oo))
1

more

Thank you :) It is true that sign of sigma matters and what you said works and it yields "1". But when I type: integral(-q*log(q),(x,-oo,oo)) to compute entropy. it is still confused about sign of mu ?! even after assuming mu>0 produces stack overflow!

Notice that @achrzesz used Maxima's integration (Sage's default integral mode) and not Sympy. Apparently sympy can't do the integral in question, perhaps because of the lack of an assumption framework, who knows...