Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I compared Mathematica's default integral evaluation to what you get by computing the indefinite integral and then plugging in the limits.

(I did this because the latter approach was much faster for some integrals.)

I got two different results:

integral=-Log[-a+b+2 a x+2 a Sqrt[(-1+x) x]]+Log[-a+b-2 b x+2 b Sqrt[(-1+x) x]]

integralDefault=Assuming[a>0&&b>0,Integrate[integral,{x,0,1}]]//Timing
(*I Pi/2*)

integralInDef[x]=Assuming[a>0&&b>0,Integrate[integral,x]]//Timing;
integralDef=Assuming[a>0&&b>0,Limit[integralInDef[x][[2]],x->1]-Limit[integralInDef[x][[2]],x->0]]//Timing
(*-I (a^2-8 a b+b^2) Pi/(4 a b)*)

The first result agrees with the numeric value.

Is this a known bug?

share|improve this question
4  
It does not look like a bug, known or unknown. It looks like an integral that might be crossing branch cuts. –  Daniel Lichtblau Oct 22 '12 at 19:15

1 Answer 1

up vote 6 down vote accepted

I think it's useful to manipulate the integrand before integration; notice you have a negative number under square root :

simplifiedIntegrand = Simplify[ComplexExpand[integral, TargetFunctions -> {Re, Im}], Assumptions -> {a > 0, b > 0, 0 < x < 1}]
(* I (-ArcTan[-a + b + 2 a x, 2 a Sqrt[(1 - x) x]] + 
       ArcTan[-a + b - 2 b x, 2 b Sqrt[(1 - x) x]]) *)

defIntegral =  Integrate[simplifiedIntegrand, {x, 0, 1}, Assumptions -> {a > 0, b > 0}]
(* ConditionalExpression[I Pi/2, a <= b] *)

indefIntegral = Integrate[simplifiedIntegrand, x, Assumptions -> {a > 0, b > 0}] ;

defIntegral2 =  Assuming[a > 0 && b > 0, Limit[indefIntegral, x -> 1, Direction -> +1] - Limit[indefIntegral, x -> 0, Direction -> -1]]
(* (I Pi)/2 *)

As pointed out by @Simon :

Integrate[simplifiedIntegrand, {x, 0, 1}, Assumptions -> {a > b > 0}]
(* (I Pi)/2 *)

which would establish the identity integral = I Pi /2 for any positive a, b.

However

general = Integrate[simplifiedIntegrand, {x, 0, 1}, Assumptions -> {a \[Element] Reals, b \[Element] Reals}]
(* ConditionalExpression[-(1/2) I (\[Pi] - 2 ArcTan[-a - b, 0] + 2 Arg[a + b]), 
    (b < 0 && (b <= a < 0 || 0 < a <= -b)) || (b > 0 && (-b <= a < 0 || 0 < a <= b))] *)

and

Simplify[general, Assumptions -> {0 < a < b}]
(* (I Pi)/2 *)

but

Simplify[general, Assumptions -> {a > b > 0}]
(* Undefined *)
share|improve this answer
    
If you do the integral Integrate[simplifiedIntegrand, {x, 0, 1}, Assumptions -> {a > b > 0}] you also get the answer I Pi / 2, so the result is stronger than the ConditionalExpression would have you think. –  Simon Oct 22 '12 at 23:20
    
@Simon Good point, please see edit. –  b.gatessucks Oct 23 '12 at 8:20

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.