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.

Why does this:

Simplify[Abs[x + I], Element[x, Reals]]

give me

Abs[x + i]

Is there a way to force Mathematica to give me the following answer?

$\sqrt{x^2+1}$

share|improve this question
    
@Kuba Thanks for the tip. But I'll wait for someone to tell me why the above doesn't work –  Priyatham Mar 29 at 8:39
1  
The fastes way is to use ComplexExpand which assumes that all constants are real: ComplexExpand@Abs[I + x]. Default ComplexityFunction is LeafCount which gives 6 for Abs form and 9 for Sqrt, that's why it is left. –  Kuba Mar 29 at 8:55
1  
closely related –  Kuba Mar 29 at 9:00

2 Answers 2

If you steal the wizard's explanation an apply it to your case

cf[e_] := 100 Count[e, _Abs, {0, Infinity}] + LeafCount[e]

Then

FullSimplify[Abs[x + I], x \[Element] Reals, ComplexityFunction -> cf]

(* Sqrt[x^2+1] *)

but once again I just copied and vaguely adapted the link provided by kuba

share|improve this answer
    
I understand that LeafCount gives the number of trees in the expression tree. Is there a place where I can read more about it and the ComplexityFunction? –  Priyatham Mar 29 at 13:58
1  
    
how about if you Count[..,I,..]? may be more general if it works (sorry cant try frm here) –  george2079 Mar 29 at 15:17
    
@george2079 cf[e_] := 100 Count[e, _Complex, {0, Infinity}] + LeafCount[e] works too –  chris Mar 29 at 15:33
    
You can also type ComplexityFunction in the find button on the left above in the menu bar... –  chris Mar 29 at 20:03

How about using ComplexExpand

ComplexExpand[Abs[x + I]]

Gives:

Sqrt[1 + x^2]
share|improve this answer

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.