# Reduce / Solve cannot solve simple equation

Why does

Reduce[{a^b*c^b == c, 0 < b < 1, a > 0, c > 0}, c, Reals]


give

Reduce::nsmet: This system cannot be solved with the methods available to Reduce. >>


?

This

Reduce[{a*c^b == c, 0 < b < 1, a > 0, c > 0}, c, Reals]


works without problems

a > 0 && 0 < b < 1 && c == (1/a)^(1/(-1 + b))

• Interestingly some variants of this work while others don't: (a c)^b == c also reduces fine (in 10.1) while a^b c^(b - 1) == 1 gives the same error.
– nben
May 8, 2015 at 16:11
• Also: Reduce[{(a c)^b == c, 0 < b < 1, a > 0, c > 0}, c, Reals] works. May 8, 2015 at 23:02

Sometimes it is better not to use too many constraints even if they appear to be "natural".

Adopting the strategy to use the fewest number of constraints we obtain the solutions

\$Version

(*
Out[12]= "8.0 for Microsoft Windows (64-bit) (October 7, 2011)"
*)


1) Solving for a

Reduce[{a^b c^b == c}, a, Reals]

(*
Out[1]= (b > 0 && c == 0 && a == 0) || (C[2] \[Element] Integers && c == 0 &&
C[2] >= 1 && b == C[2] && a < 0) || (b > 0 && c == 0 &&
a > 0) || (((1 + b)/2 | C[1]) \[Element]
Integers && ((C[1] <= -1 && b == C[1] && c < 0 &&
a == (-(-c)^-b c)^(1/b)) || (C[1] >= 1 && b == C[1] && c < 0 &&
a == (-(-c)^-b c)^(1/b)))) || (b == 0 && c == 1 &&
a < 0) || ((b/2 | C[1]) \[Element]
Integers && ((C[1] <= -1 && b == C[1] && c > 0 &&
a == -(c^(1 - b))^((1/b))) || (C[1] >= 1 && b == C[1] && c > 0 &&
a == -(c^(1 - b))^((1/b))))) || (b == 0 && c == 1 &&
a > 0) || (b != 0 && c > 0 && a == c^(-1 + 1/b))
*)


2) Solving for b

Reduce[{a^b c^b == c, a > 0, c > 0}, b, Reals]

(*
Out[7]= (a == 1 && c == 1) || (Log[a c] != 0 && a > 0 && c > 0 &&
b == Log[c]/Log[a c])
*)


3) Solving for c

Solve[{a^b c^b == c}, c]


During evaluation of In[11]:= Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information. >>

(*
Out[11]= {{c -> (a^b)^(1/(1 - b))}}
*)


The message can be ignored as we have found all solutions. Trying Reduce[] takes forever.

• To state the point of this answer compactly: KISS. ;) May 9, 2015 at 6:08
• @Guess who it is: Thanks a lot. I take it literally, hoping KISS is not meant as an acronym for something ... May 9, 2015 at 13:01
• It's actually an acronym, Herr Doktor… :) May 9, 2015 at 13:05
• @Guess who it is: ok, found it in Wikipedia: "Keep it simple, stupid." which I don't understand in this context because the question was not to find the (simple) mathematical solution but to show how MMA can solve it (for c it can't be simpler). Perhaps you can rephrase your statement in clear text. May 9, 2015 at 13:21
• I was alluding to the point of not using too many constraints. Probably more polite is Einstein's (apocryphal?) admonition to keep things as simple as possible, but not simpler. May 9, 2015 at 13:33