Le jeudi 20 mai 2010 à 01:48 -0700, Dan a écrit :
> Hi folks,
>
> I'm trying to integrate a function but I can't understand why sympy is
> producing the wrong output.
>
> The equation is,
>
> var('C E kT xmin')
> Assume(kT > 0)
> Assume(xmin >=0)
> integrate(C * x**2 * exp(-x/kT), (x, xmin, oo))
>
> which gives,
> -oo - C*(-2*kT**3*exp(-xmin/kT) - kT*xmin**2*exp(-xmin/kT) -
> 2*xmin*kT**2*exp(-xmin/kT))
>
> This is correct apart from negative infinity the appears at the
> beginning. Am I doing something wrong?
>
> When I tried this with Maxima is asked what the sign of kT is (hence
> the use of Assume above), but it then goes on to give the correct
> answer. Help very much appreciated.
Despite the name, Assume doesn't do anything, it's just an inert object.
To do what you want, you need:
kT = Symbol('kT', positive=True)
With that, it works:
In [11]: print integrate(C * x**2 * exp(-x/kT), (x, xmin, oo))
-C*(-2*kT**3*exp(-xmin/kT) - kT*xmin**2*exp(-xmin/kT) -
2*xmin*kT**2*exp(-xmin/kT))
The fact that you get a result containing oo is, obviously, a bug.
Ronan
--
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.