MathGroup Archive 2001

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

Search the Archive

Re: Limit question

  • To: mathgroup at
  • Subject: [mg31523] Re: Limit question
  • From: "Alan Mason" <swt at>
  • Date: Thu, 8 Nov 2001 04:57:38 -0500 (EST)
  • References: <9sb2du$p56$>
  • Sender: owner-wri-mathgroup at

It's odd that Limit should have this hole in it-- after all,
Limit[x^2/Exp[x], x->Infinity] = 0 is done correctly.

The notebook below gives a quick and dirty routine that implements de
l'Hopital's rule.  It works correctly in the cases considered (including
your first example) and can serve as a start.  Of course, it will bomb if
taking successive derivatives doesn't solve the problem (i.e., when de
l'Hopital's rule is of no use).

There's actually a lot one could say about the reasons for the choices in
this little program.  In particular, why it's necessary to input a list
{num_, den_} representing num/den, and not just num_/den_, to  LimitHosp.
To see why  num_/den_ doesn't work, notice that it won't match Exp[x]/x^2
although it does match Exp[x]/x.  To see why, look at FullForm[Exp[x]/x^2] =
Times[Power[E, x], Power[x, -2]]; this doesn't match a/b, FullForm[a/b] =
Times[a, Power[b, -1]], because of the -2.  The primary arithmetic heads in
Mathematica are Plus and Times; Minus and Divide don't exist as such but are
represented as Times[-1, u_] and Power[u_, -1], resp. For pattern matching
one is therefore led to try num_ den_ and assign f1=num, g1 = 1/den.  But
now another problem arises: Times is Orderless and Mathematica puts its
arguments in canonical order; so you can't be sure which argument is num and
which is den.  Example:

    ff = FullForm;

The factors have been switched around.  There's also ambiguity -- the
fraction a/(b c) can be regarded as having numerator a/b and denominator c
and this choice can be important, as in the {Exp[x^2]/ Exp[x] ,x^3} example
below, where {Exp[x^2], Exp[x] x^3} won't work .  To avoid all these
problems I pass a list, even though it seems less natural.

For your second example, Limit[Exp[x]/Gamma[1+x], x->Infinity]=0,  you'll
need to use Sterling's formula.  Limit is one of the weakest built-in
functions of Mathematica and it needs a lot of work for the special
functions. It can't do Limit[BesselJ[1, x]/Sqrt[x], x->Infinity] either, for
example, although the answer is well known to be 0. Oddly, direct
substitution BesselJ[1, x]/Sqrt[x] /. x -> Infinity does give 0.  Looks like
Limit is some kind of neglected poor relation.

(***************************  for brevity I've deleted the output from the
Print statements **********)
LimitHosp[{num_, den_}, x -> a_, val_:Infinity] :=
Module[{f1 = num, g1 = den, L},
While[Limit[f1, x -> a] == val && Limit[g1, x -> a] == val ,
Print["f1, g1 are ", f1, ", ", g1];
      If[NumberQ[L = Limit[f1/g1, x -> a]], Return[L]];
f1 = D[f1, x]; g1 = D[g1, x]

Limit[f1/g1, x -> a]

lh := LimitHosp;
lh[{Exp[x],x^2}, x\[Rule]Infinity]
lh[{Exp[x^2]/ Exp[x] ,x^3}, x\[Rule]Infinity]
(* NOTE:  {Exp[x^2], Exp[x] x^3} will bomb *)
lh[{x^12 , Exp[x/100]}, x\[Rule]Infinity]
 lh[{Sin[x]^3, x (1-Cos[x])}, x\[Rule]0, 0]


"Leonard Howell" <lwhowell at> wrote in message
news:9sb2du$p56$1 at
> I'm trying to evaluate Limit [Exp[x] * (1/x^2), x-> Infinity] with
> Mathematica but can not seem to get the correct answer of Infinity.  Next,
> want Limit [Exp[x] /( x!), x-> Infinity] but can't get it either.  Can
> someone please provide guidance?
> Thanks, Leonard

  • Prev by Date: Re: Zero does not equal Zero
  • Next by Date: Re: Re: Zero does not Equal Zero is a feature
  • Previous by thread: Re: Limit question
  • Next by thread: Re: Re: Limit question