Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am experiencing a curious behaviour of Simplify when handling expressions involving powers of $\mathbf{i}$, such as $\mathbf{i}^x$ where $x$ is unknown.

For example, when I take the equation 2^x a == 0, and I ask Mathematica to simplify it for me by calling Simplify[2^x a == 0], it rightly answers that the original equation is equivalent to a==0; hence clearly Mathematica's Simplify "knows" that taking a power of something non-zero cannot produce a zero. However, if I ask about I^x a == 0, then the result of Simplify is merely I^x a == 0, i.e. what I started with. This remains true after adding the assumption that $x$ is an integer or changing Simplify to FullSimplify (i.e. FullSimplify[I^( x) a == 0, Assumptions -> {Element[x, Integers]}]. It would be much more convenient if

This is obviously not a serious problem, but it can be a nuisance when I need to simplify a number of equations and would like to quickly see the result in a relatively uncluttered form. Also, I am curious about why things work the way they do, i.e. why complex powers are treated so much differently than real powers. Thank you for any solution to the problem, and/or explanation of this phenomenon. (A solution would be a way to "teach" Mathematica to eliminate factors like I^( x) in equations like I^( x)*(something)==0).

share|improve this question
Well, I think in your example the two problems are mathematically different. As $x$ goes to $-\infty$, $i^x$ certainly takes the values $1$ and $-1$ infinitely often (for $x$ congruent to $4$ and $2$ modulo $4$, respectively). After replacing $I$ by $2I$ in your example, the limit comes out as $0$. – Jakub Konieczny Oct 31 '13 at 0:15
On V 9.01, I get Simplify[2^x a == 0] as 2^x a ==0 not a==0 ? screen shot !Mathematica graphics – Nasser Oct 31 '13 at 0:28
@Nasser: I'm using V 8.0. I didn't realise this would differ between versions. – Jakub Konieczny Oct 31 '13 at 0:30
up vote 10 down vote accepted

We can actually 'teach' Simplify using the option TransformationFunctions.

dropPows[Power[_?NumericQ, _] a_ == 0] := a == 0

Simplify[I^x a == 0, TransformationFunctions -> {Automatic, dropPows}]
(* a == 0 *)
share|improve this answer
Thanks! It works as I was hoping it would. – Jakub Konieczny Oct 31 '13 at 0:12

Maybe this is a difference in versions (9.0.1), but when I do:

FullSimplify[2^x a == 0, x \[Element] Reals]
a == 0

Replacing 2 with I gives the same answer

FullSimplify[I^x a == 0, x \[Element] Reals]
a == 0
share|improve this answer

While TransformationFunction is really the way to go, a quick way is to use replacement rules directly:

I^x a == 0 /. {Power[_?NumericQ, _] x_ == 0 :> x == 0}

a == 0

share|improve this answer

Your Answer


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.