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


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))

  • 1
    $\begingroup$ How does one arrive at that result? $\endgroup$ Jul 26, 2017 at 19:50
  • $\begingroup$ 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. $\endgroup$
    – clr66
    Jul 27, 2017 at 19:28
  • $\begingroup$ 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[98]:= 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[98]:= Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information. Out[99]= {{x -> ((a^(1 - 1/z) + b^(1 - 1/z)) y^(-1 + 1/z))^( 1/(-1 + 1/z))}} $\endgroup$ Jul 27, 2017 at 21:26

1 Answer 1


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
  • $\begingroup$ 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. $\endgroup$
    – clr66
    Jul 27, 2017 at 19:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.