4

I have an integral that I compute with Mathematica and as a result I get a seemingly complex expression (i.e. the expression contains the imaginary unit, $i$, at some places). However, if I try to numerically compute the values of this expression at some values of my variables, I notice that in fact the value of the result is always real (for real values of variables); the imaginary parts cancel out in a right way to make the result real. This is also evident from the fact that the expression is a solution to a physical problem that is supposed to give a real solution.

How do I make Mathematica simplify the expression so that it doesn't contain any imaginary units anymore?

Edit:

The expression I'm trying to simplify is:

$$\frac{\sqrt{1-\frac{2}{-i x+y+1}}}{x+i (y-1)}+\frac{\sqrt{1-\frac{2}{i x+y+1}}}{x-i (y-1)}$$

In Mathematica form:

Sqrt[1 - 2/(1 - I x + y)]/(x + I (-1 + y)) + Sqrt[1 - 2/(1 + I x + y)]/(x - I (-1 + y))
J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
Echows
  • 981
  • 1
  • 10
  • 13
  • Look at ComplexExpand. Otherwise please provide a sample problem. – Mr.Wizard Dec 17 '13 at 14:01
  • 1
    I provided the expression I'm trying to simplify. – Echows Dec 17 '13 at 14:12
  • 1
    You can't simplify your expression to another one explicitly real without appropriate assumptions. Try e.g. With[{x = -1, y = -1}, FullSimplify[ Sqrt[(1 - 2/(-I x + y + 1))/(x + I (y - 1))] + Sqrt[( 1 - 2/(I x + y + 1))/(x - I (y - 1))]]] which yields 2 I. This post shows how one could approach similar problems Simplifying expressions with square roots. – Artes Dec 17 '13 at 14:44
  • 3
    @Artes -- you've got the square root in the wrong place. The OPs function is f[x_, y_] := Sqrt[(1 - 2/(-I x + y + 1))]/(x + I (y - 1)) + Sqrt[(1 - 2/(I x + y + 1))]/(x - I (y - 1)) which is real-valued (at least at -1,-1). – bill s Dec 17 '13 at 15:24
  • The expression reduces to: $$ \sqrt{2} , \text{sign}(x) \frac{ \sqrt{ \left(x^2+(y-1)^2\right) \left( 1 + x^2 - y^2 + \sqrt{ 2 \left( x^2-1 \right) y^2 + \left( x^2+1 \right)^2 + y^4 } \right) } }{ \left( x^2+(y-1)^2 \right) \sqrt{x^2+y^2+2 y+1} } $$ but I cannot find an easy way to get Mathematica to produce it. – Hbar Dec 18 '13 at 06:07
  • Thanks for comments. I have tried using Assumptions in Fullsimplify, but it doesn't help. Thanks for solution, Hbar, I will check this myself and use it. However, I have also another (much longer) expression that I would also like to get in an explicitly real form so still I would like to see how to produce this with Mathematica. – Echows Dec 18 '13 at 09:36

1 Answers1

4

The problem with simplifying things with square roots is remaining in the branch while assuming that $\sqrt{a} \sqrt{b} = \sqrt{ a b}$. Getting this right usually requires analyzing the possible values of $a$ and $b$. For your expression, ComplexExpand gives just a few simple Args to deal with, making it possible to finish the problem with a substitution.

f = Sqrt[1 - 2/(1 - I x + y)]/(x + I (-1 + y)) + 
   Sqrt[1 - 2/(1 + I x + y)]/(x - I (-1 + y));
f1 = ComplexExpand[f];
modify[u_] := ArcTan@FullSimplify[
    ComplexExpand@Im[u]/ComplexExpand@Re[u]
    ];
f2 = f1 /. Arg[x_] :> modify[x];
result = FullSimplify[FunctionExpand@Simplify[f2]]

Not very elegant, but will work with simple roots.

Hbar
  • 245
  • 1
  • 8
  • It seems to work... almost. When I plot the expression I get as a result it looks like it differs from the original expression for arguments $|y|,|x|<1$. I don't really understand what this does, though. I guess my Mathematica knowledge is lacking. What does @ and :> do? – Echows Dec 19 '13 at 09:14
  • Nevermind, I figured out your code. I still have to figure out how to repair the wrong result for certain arguments. It probably has something to do with choosing the wrong branch of arctan or something. – Echows Dec 19 '13 at 09:27