Re: HELP! algebraic math problem
- To: mathgroup at smc.vnet.net
- Subject: [mg2959] Re: HELP! algebraic math problem
- From: danl (Daniel Lichtblau)
- Date: Wed, 17 Jan 1996 03:08:03 -0500
- Organization: Wolfram Research, Inc.
In article <4d6omj$39b at dragonfly.wri.com> David
A.Johnson at news.acns.nwu.edu writes:
> I'm stumped!
>
> I have a simple problem that I certainly should be able to see the
solution and my memory just isn't working. Is there anyone who can help
me solve this.
>
> I have a general equation of: d = a + bx + c ln(x)
>
> I want to isolate x, how do I do it?
>
> In reality I know a, b, c, and d and need to calculate x
>
> I've been trying to solve this in Mathematica and it just doesn't work
because of limitations in their solve routine. Of course I've been lazy
for quite a while and have been using Mma to much to solve problems and my
mind has obviously forgotten simple concepts.
>
>
> appologetically, and in advance, THANK'S,
>
> David A. Johnson
> please email any solution or suggestions.
>
As some respondents note, this can be tackled numerically using
FindRoot. In our development version it can be solved in closed form by
way of the special function ProductLog (aka Lambert's W function, although
the historical record indicates that Lambert did not work with this
function). One caveat is that it is better to avoid parameters as
otherwise solns might have trouble with branch cuts. The actual definition
of ProductLog is that {{x -> ProductLog[w]}} solves the eqn
Solve[x*Exp[x] == w, x]. To transform your eqn to this form (Solve does
this internally) one must exponentiate, and here already is the
possibility to run into branch cut trouble when actual values are
substituted for symbolic parameters.
Your example:
In[5]:= Solve[d==a + b x + c Log[x], x] // InputForm
InverseFunction::ifun:
Warning: Inverse functions are being used. Values may be lost for
multivalued inverses.
Solve::ifun: Inverse functions are being used by Solve, so some solutions
may
not be found.
Out[5]//InputForm= {{x -> (c*ProductLog[b/(c*E^((a - d)/c))])/b}}
Daniel Lichtblau
Wolfram Research, Inc.
danl at wri.com
==== [MESSAGE SEPARATOR] ====