# Using Solve but getting no output

I am trying to solve a model using a constant-elasticity-of-substitution production function, but when I try to solve the first order conditions, I just keep getting back what I typed.

Solve[-i - q + p s^(-1 + a) (1 + s^a)^(-1 + 1/a) - t == 0, s]

Solve[-i - q + p s^(-1 + a) (1 + s^a)^(-1 + 1/a) - t == 0, s]


Any help on how to tackle this problem would be great.

• I get the message "Solve::nsmet: This system cannot be solved with the methods available to Solve. >>". Aug 6 '14 at 15:39
• You should be aware that there are many apparently simple equations with solutions that are not expressible in closed form. One such example is Solve[Cos[x]==x,x]. On the other hand, Solve[Cos[x]==x,x,Reals] produces a useful result. Thus, it's nice to now if your variables and parameters satisfy any useful assumptions. Lacking a symbolic expression, perhaps you'd be happy with a function that produces an estimate for s as a function of the input parameters? Aug 6 '14 at 15:40
• For a=1 the solution is easy, but for arbitrary a it isn't. So information about a would be needed.
– Jens
Aug 6 '14 at 21:07

Here's a way that mimics the by-hand method. The idea is to replace common subexpressions by symbols until it gets to the point where Solve will work. In some places I'm assuming that quantities are real and positive.

eqn = -i - q + p s^(-1 + a) (1 + s^a)^(-1 + 1/a) - t == 0 /.  s -> u^(1/a) // PowerExpand
eqn = eqn /. a -> 1/(1 - r) // Simplify
(*
-i - q - t + p u^((-1 + a)/a) (1 + u)^(-1 + 1/a) == 0
i + q + t == p (u/(1 + u))^r
*)

sol = s -> u^a /. Solve[eqn, u] /. r -> (a - 1)/a // Simplify


Solve::ifun: Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information. >>

(*  {s -> (1/(-1 + ((i + q + t)/p)^(a/(1 - a))))^a}  *)

• Very nice. Wish I had thunk of that. Nov 16 '14 at 16:27
• @DanielLichtblau Well, thanks. I don't know what it says that I had to solve it by hand to figure out how to help M get to the answer. Seems backwards. Devendra showed an example at WTC that gave me the idea that one could coax Solve over the hill in this way. In case he likes feedback. :) Nov 16 '14 at 18:18
• I sent a link to him (Devendra). Nov 16 '14 at 22:44