This is my first time using Mathematica for the purpose of solving complex integrals. I have to compute few complex integrals which have many coefficients. For example, $$\int_0^\infty \frac{k^2\, (k^2 + p^2)^{1/2}}{(k^2 + u^2)^2\, (2\, k^2 + 2\,p^2 + m\,(k^2 + p^2)^{1/2}\,)}\, dk $$

When I am trying to calculate it with Integrate, the result is always with a ConditionalExpression with some real and imaginary conditions. I know that there is a solution to this integral because my professor calculated it some time ago and I have to repeat it.

I also have few principal value integrals to calculate. But the results of them are even more complex.

Could you give me some advice on what should I do to get rid of the conditions?



Assuming[u>0 && m>-2,
  Integrate[k^2 Sqrt[k^2+p^2]/((k^2+u^2)^2 Sqrt[2 k^2+2 p^2+m (k^2+p^2)]),

instantly returns Pi/(4 Sqrt[2+m] u).

If you look at the arguments inside the Conditional and what I put inside my Assuming then you might see how this is done.

You can use slightly different assumptions and still eliminate the conditional.

int = Integrate[
  k^2 Sqrt[k^2 + p^2]/((k^2 + u^2)^2 Sqrt[2 k^2 + 2 p^2 + m (k^2 + p^2)]), {k,
    0, Infinity}]

(*  ConditionalExpression[
   Pi/(4*Sqrt[2 + m]*u), 
   Re[u] > 0 && Re[m] > -2 && 
     Im[m] == 0]  *)

You can extract the desired result from the answer using Part


(*  Pi/(4*Sqrt[2 + m]*u)  *)

As shown by @Bill, you can use assumptions consistent with the conditions given in the ConditionalExpression

Assuming[{m > -2, u > 0},
  k^2 Sqrt[k^2 + p^2]/((k^2 + u^2)^2 Sqrt[2 k^2 + 2 p^2 + m (k^2 + p^2)]), {k,
    0, Infinity}]]

(*  Pi/(4*Sqrt[2 + m]*u)  *)

Or you can tell Mathematica to not generate conditions (EDIT: this has some risk as pointed out in the comment by @mattiav27)

Integrate[k^2 Sqrt[
    k^2 + p^2]/((k^2 + u^2)^2 Sqrt[2 k^2 + 2 p^2 + m (k^2 + p^2)]), {k, 0, 
  Infinity}, GenerateConditions -> False]

(*  (Pi*Sqrt[1/u^2])/(4*Sqrt[2 + m])  *)

Which may then need simplification with assumptions to arrive at the same end result

Simplify[%, u > 0]

(*  Pi/(4*Sqrt[2 + m]*u)  *)
  • 2
    $\begingroup$ You should also say that using GenerateConditions->False might be dangerous: see this answer: mathematica.stackexchange.com/a/108578/8822 and also the documentation of Integrate. The problem is that it will "Generate a result without conditions that is valid only for some values of parameters" $\endgroup$
    – mattiav27
    Aug 8 '16 at 19:45
  • $\begingroup$ The canonical way to remove the ConditionalExpression is by using Normal (see docs on Normal). $\endgroup$
    – QuantumDot
    Aug 11 '16 at 13:00
  • $\begingroup$ @QuantumDot - Thanks $\endgroup$
    – Bob Hanlon
    Aug 11 '16 at 16:14

Thank you guys for help. However in your code, there was a small mistake in denominator. It should look like this:

Integrate[k^2 Sqrt[k^2 + p^2]/((k^2 + u^2)^2 (2 k^2 + 2 p^2 + m Sqrt[k^2 + p^2])), {k, 0, Infinity}, GenerateConditions -> False]

This makes calculations much longer. The result is really long with some signs that I don't fully understand. This is a part of result:

                                2    2
           2  2         I Sqrt[p  - u ]
    (2 I) m  p  Log[1 - ---------------] + 

                             2    2
           4         I Sqrt[p  - u ]
    (8 I) p  Log[1 - ---------------] + 

Do you know what that "I" means? I tried to find it in some library as a special function or constant but without success.

I also have a problem with functions containing logarithm:

int = Integrate[k Log[(Sqrt[k^2 + p^2]+k)/(Sqrt[k^2 +  p^2]-k)]/((k^2 + u^2)^2 (2 k^2 + 2 p^2 + m Sqrt[k^2 + p^2])), {k,0, Infinity}]

A computer that I am working on at my University simply don't want to give me the result probably because of some time limit. Is there a way to force Mathematica to compute the result in such a situation?

Thank you for help one more time. :)


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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