# Why won't Solve work on this simple equation with a closed-form solution?

I have a fairly complicated equation that I am trying to solve in Mathematica, but have been unsuccessful so far.

Here is a simplified version of the command I'm trying to run that I think highlights the issue:

exp=y==((x*a)^((z-1)/z)+(x*b)^((z-1)/z))^(z/(z-1)); Solve[exp&&a>0&&b>0&&y>0&&0<z<1,x,Reals]

It returns the error, This system cannot be solved with the methods available to Solve. Same problem trying to use Reduce.

There seems to be a clear solution of

x=y*(a^{(z-1)/z}+b^{(z-1)/z})^{z/(1-z)}

What am I overlooking here?

Edit 1:

I've figured out that I can use the following code to arrive at the desired solution:

exp=PowerExpand[Simplify[PowerExpand[exp]]]; Solve[exp,x]

However, this seems like a wonky solution. Are there some obvious major drawbacks to applying this approach generally (keeping in mind the assumptions stated above)?

Edit 2:

If anyone is so inclined, the actual full equation I am trying to solve is:

y==A (q (x^(1-p) ((c p x)/(r-p r))^p)^((-1+z)/z)+(1-q) (((c (-1+q) x (x^(1-p) ((c p x)/(r-p r))^p)^(-1+1/z))/(d (-1+p) q))^z)^((-1+z)/z))^(z/(-1+z))

• How does one arrive at that result? Jul 26, 2017 at 19:50
• By distributing the exponents inside the outer parentheses, factoring out the x terms, distributing the outer exponent to arrive at y=x(a^{(z-1)/z}+b^{(z-1)/z})^{z/(z-1)}, then finally rearranging the y and x. Jul 27, 2017 at 19:28
• That's not bad. One way to improve in terms of forcing (not quite) validity is to use PowerExpand with Assumptions. Could do as follows. In:= assumed = {a > 0, b > 0, y > 0, 0 < z < 1}; exp = y == ((x*a)^((z - 1)/z) + (x*b)^((z - 1)/z))^(z/(z - 1)); Solve[ PowerExpand[exp, Assumptions -> assumed], x] During evaluation of In:= Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information. Out= {{x -> ((a^(1 - 1/z) + b^(1 - 1/z)) y^(-1 + 1/z))^( 1/(-1 + 1/z))}} Jul 27, 2017 at 21:26

I think the (z-1)/z confuses Mathematica. You can define $Z=1/(1-z)$ which will make your expression nicer:

expr = (y == ((x*a)^((z - 1)/z) + (x*b)^((z - 1)/z))^(z/(z - 1)))
Simplify[expr /. z -> 1/(1 - Z), Assumptions -> {a>0, b>0, y>0}]
(*Result: ((a^Z + b^Z) x^Z)^(1/Z) == y *)


Then you can solve it:

sol  = Solve[%,x]
(*Result: {{x -> ((a^Z + b^Z) y^-Z)^(-1/Z)}}*)


You can always switch back to your original $z$ by

sol/.Z->(z - 1)/z

• Thanks very much, @yohbs. This was useful, although unfortunately did not allow me to solve the full, more complex version of the problem I am trying to solve. Please see revised question above. Jul 27, 2017 at 19:45