MathGroup Archive 1996

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Prev by Date: Re: HELP! algebraic math problem
  • Next by Date: RE: "Compile[]" and "InterpolatingFunction" objects
  • Previous by thread: Re: HELP! algebraic math problem
  • Next by thread: Mathematica in the Mountains