MathGroup Archive 2002

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

Search the Archive

Re: solving non-algebraic exponential equations

  • To: mathgroup at smc.vnet.net
  • Subject: [mg38128] Re: [mg38059] solving non-algebraic exponential equations
  • From: Theodore A Sande <tasande at MIT.EDU>
  • Date: Tue, 3 Dec 2002 04:34:02 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Dear Miss Hohberger:

In reference to your question:

"I am trying to solve the following equation for given values of two
parameters a and b:

NSolve[Exp[-Pi*a/x] + Exp[-Pi*b/x] == 1, x]

This is straightforward for integer values of the parameters a and b
(e.g. a=1, b=1). However, Mathematica is unable to compute the
solution for non-integer values of a and b (e.g. a=1.1, b=1.1; even
a=1.0, b=1.0 doesn't work). Instead, the error message "Solve::"tdep":
"The equations appear to involve the variables to be solved for in an
essentially non-algebraic way." is produced.

Can anybody point out a way to overcome this problem and to obtain a
solution?"

The most expedient method to solve this non-linear algebraic equation for
the variable, x, is to treat it as a 1-dimensional non-linear root extraction 
problem.  There are a host of numerical techniques to accomplish this, e.g. 
the venerable Newton-Raphson technique.

Mathematica surely implements a variation of this as follows:

In := a = 3.22
      b = 0.322
      xInitial = 1.3
      FindRoot[Exp[-a*Pi/x] + Exp[-b*Pi/x] == 1, {x, xInitial}]

Out: {x -> 5.61282}

The above values are examples of single precision real numbers.  xInitial is
the initial guess for the "root", or solution, of the exponentially
non-linear algebraic equation.

FindRoot successively iterates the wrong initial solution, xInitial, until
it converges upon the true solution up to a given number of decimal point.

WARNING:

( 1 ) There is probably a way to specify the number of digits, or accuracy, of
      your solution.

( 2 ) In general, there will be many roots, both real and complex.  I am not
      sure how FindRoot decides which root, if many, it will present to you.

      Make sure the value returned is physically germane to the problem
      that yielded the question in the first place.

( 3 ) Try many xInitials over a wide range of real values and see if you
      converge to a difference root.

I hope this helps. Please email me as to your results, as I now may use this
in my work, too!


Sincerely,

Theodore Sande
MIT Department of Physics



  • Prev by Date: Re: Find all complex root in a region
  • Next by Date: RE: Simple Concept I can't figure out! Making rules?
  • Previous by thread: Re: solving non-algebraic exponential equations
  • Next by thread: RE: Re: solving non-algebraic exponential equations