# 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 '15 at 16:11
• Also: Reduce[{(a c)^b == c, 0 < b < 1, a > 0, c > 0}, c, Reals] works. – David G. Stork May 8 '15 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. ;) – J. M. will be back soon May 9 '15 at 6:08
• @Guess who it is: Thanks a lot. I take it literally, hoping KISS is not meant as an acronym for something ... – Dr. Wolfgang Hintze May 9 '15 at 13:01
• It's actually an acronym, Herr Doktor… :) – J. M. will be back soon May 9 '15 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. – Dr. Wolfgang Hintze May 9 '15 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. – J. M. will be back soon May 9 '15 at 13:33