4
$\begingroup$

I have variables in an expression that have been previously expanded into their real and imaginary parts, that I later wish to recombine to a single variable. For example, a function or operation that would be able to convert $\sqrt{2} \,\textrm{Re}(a) - i \sqrt{2} \,\textrm{Im}(a)$ back to $\sqrt{2} \,a^*$, etc.

Is there a function I am missing that already does this? FullSimplify does achieve this, but also converts the $\sqrt{2}$ into a decimal and takes a lot of time for longer expressions, which is not ideal.

$\endgroup$

3 Answers 3

5
$\begingroup$

This should be pretty fast:

replaceReIm = {Re[x_] :> (x + Conjugate[x])/2, 
   Im[x_] :> (x - Conjugate[x])/(2 I)};

Simplify[Sqrt[2] Re[a] - I Sqrt[2] Im[a] /. replaceReIm]

(* ==> Sqrt[2] Conjugate[a] *)
$\endgroup$
3
$\begingroup$

ComplexExpand is good for the rewriting part and following up with Expand combines like terms. For ComplexExpand one needs to specify that the variable is explicitly complex-valued, and also one needs to give desired "target" functions.

Expand[
 ComplexExpand[Sqrt[2] Re[a] - I Sqrt[2] Im[a], {a}, 
  TargetFunctions -> {Conjugate}]]

(* Out[831]= Sqrt[2] Conjugate[a] *)
$\endgroup$
1
$\begingroup$

The following works:

Sqrt[2] Re[a] - I Sqrt[2] Im[a] // FullSimplify

This yields:

Sqrt[2] Conjugate[a]
$\endgroup$
2
  • $\begingroup$ Correct, FullSimplify does work, but as mentioned above, is not ideal. The expression I am applying FullSimplify to is quite complicated and large, and FullSimplify tries to do much more than just look for much more than is required, causing it to have a very long runtime. Also, when I execute the above operation, I do not receive Sqrt[2] Conjugate[a] but 1.41421 Conjugate[a], which is not ideal. $\endgroup$ Aug 15, 2016 at 17:04
  • 1
    $\begingroup$ Then, I guess, there must be some other reason why it converts this to a numeric expression. For example, if you type 2. instead of 2, it treats the expression numerically. $\endgroup$
    – andy269
    Aug 15, 2016 at 17:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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