Re: HELP! algebraic math problem

*Subject*: [mg2959] Re: HELP! algebraic math problem*From*: danl (Daniel Lichtblau)*Date*: 17 Jan 1996 05:11:44 -0600*Approved*: usenet@wri.com*Distribution*: local*Newsgroups*: wri.mathgroup*Organization*: Wolfram Research, Inc.*Sender*: mj at wri.com

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