Consider a function $g(x) = a \ x^{\alpha}e^{-bx}$. It typically behaves in the following way: first it increases until reaching maximum as $x^{\alpha}$, and then decreases exponentially as $e^{-bx}$. Therefore, it takes particular values two times.

But when I'm looking for a solution

Solve[a x^α*Exp[-b x] == 2, x]

sometimes Mathematica finds (apart from complex solutions) only one solution (say, before extremum), ignoring the second solution. Is there any way to force it to find all the solutions?

Here is simple demonstration of the problem:

g[α_, a_, b_, x_] = a x^α Exp[-b x];
Solution[α_, a_, b_] = x /. Solve[g[α, a, b, x] == 2, x]
N[Solution[5, 10^8, 10^-3]] 
LogLogPlot[{g[5, 10^8, 10^-3, x], 2}, {x, 0.01, 10^5}]
(* {-((α ProductLog[-((2^(1/α) (1/a)^(1/α) b)/α])/b)} *)
(* {0.0288542} *)

Mathematica graphics

Comparing the plot and the value of the solution, it is seen that Solve gives only the solution for the point before maximum.

Update: it seems that the problem in analytic form of the solution. If I define the Solution function through :=, then it for particular values of parameters it shows the full set of solutions. However, I don't understand why it doesn't show the full set for arbitrary parameters. This is important for me, since I'm looking for solution in analytic form (in terms of ProductLog function).


1 Answer 1


The 2 argument version of ProductLog can be used to select different branches. In your question, the two real branches are at 0 (the default) and -1. So, take the solution given by Solve:

g[α_, a_, b_] := a x^α Exp[-b x]
soln = Solve[g[α, a, b] == 2, x]

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

{{x -> -((α ProductLog[-(( 2^(1/α) (1/a)^(1/α) b)/α)])/b)}}

and change the branches:

full[α_, a_, b_] = x /. First @ soln /. ProductLog[e_] :> ProductLog[{0,-1}, e]

{-((α ProductLog[-((2^(1/α) (1/a)^(1/α) b)/α)])/ b), -((α ProductLog[-1, -(( 2^(1/α) (1/a)^(1/α) b)/α)])/b)}


full[5, 10^8, 10^-3] //N

g[5, 10^8, 10^-3] /. x->full[5, 10^8, 10^-3]//N

{0.0288542, 73771.1}

{2., 2.}

  • $\begingroup$ Thank you very much! $\endgroup$ Commented Sep 19, 2018 at 19:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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