|
[Date Index]
[Thread Index]
[Author Index]
Re: A limit bug
- To: mathgroup at smc.vnet.net
- Subject: [mg84522] Re: A limit bug
- From: "David W.Cantrell" <DWCantrell at sigmaxi.net>
- Date: Wed, 2 Jan 2008 01:16:51 -0500 (EST)
- References: <200801010216.VAA08134@smc.vnet.net> <flctlp$h2s$1@smc.vnet.net>
Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:
> On 1 Jan 2008, at 11:16, David W.Cantrell wrote:
>
> > A recent question in sci.math led to something which should also
> > interest this group.
> >
> > The OP asked about the limit of (p + q)!/(p! q!) as both p and q
> > increase without bound. And he said later
> >
> >> I wasn't sure about it because Mathematica gives me a limit of zero.
> >> Isn't that strange?
> >
> > I responded as follows.
> >
> > ----------------------------------------------
> >
> > Well, it's a bug. I suppose that what you did in Mathematica was
> > something like
> >
> > In[3]:= Limit[Limit[(p + q)!/(p! q!), q -> Infinity], p -> Infinity]
> >
> > Out[3]= 0
> >
> > But note that there is not any way -- well, at least none known to
> > me -- in Mathematica to get a true general "two-variable" limit:
> >
> > limit f(x,y) as (x,y) -> (x0,y0)
> >
> > However, Mathematica can get a correct answer for your limit problem.
> >
> > First, realize that (p + q)!/(p! q!) is Multinomial[p, q]. So you
> > might try
> >
> > In[5]:= Limit[Limit[Multinomial[p, q], q -> Infinity], p -> Infinity]
> >
> > Out[5]= Limit[Limit[Multinomial[p, q], q -> Infinity], p -> Infinity]
> >
> > Since that remains unevaluated (but at least there was now no bug!),
> > you might consider the possibility that it remained unevaluated for
> > a good reason, namely, because a little more information had to be
> > provided:
> >
> > In[6]:= Limit[Limit[Multinomial[p, q], q -> Infinity,
> > Assumptions -> p > 1], p -> Infinity]
> >
> > Out[6]= Infinity
> >
> > Success! Happy New Year!
> >
> > But BTW, note that, curiously, the following fails:
> >
> > In[7]:= Limit[Limit[(p + q)!/(p! q!), q -> Infinity,
> > Assumptions -> p > 1], p -> Infinity]
> >
> > Out[7]= Indeterminate
> >
> > David
> >
>
> I think using iterated limits above actually obscures what happens. In
> fact:
>
> Limit[Multinomial[p, q], q -> Infinity,
> Assumptions -> p > 1]
> Infinity
>
> Thus there is not much point in further taking limits as p->Infinity,
> since the answer, being independent of p will certainly not change. On
> the other hand
>
> Limit[(p + q)!/(p!*q!), q -> Infinity, Assumptions -> p > 1]
> Infinity/p!
>
> We can now see what happened here and the source of the problem.
I think you lost sight of the main problem, the thing I called a bug,
namely, Out[3] = 0. As best I can tell, we don't know the source of that
problem.
But yes, what you say probably does help to see why Out[7] was
Indeterminate.
> Mathematica simply computed
> Limit[(p + q)!/q!, q -> Infinity, Assumptions -> p > 1]
> Infinity
>
> and then divided the answer by p! returning Infinity/p! since
> Mathematica leaves Infinity/a unevaluated for an undefined symbol a.
But Mathematica can correctly simplify Infinity/a if we give it appropriate
information about a. More about that below.
> Now, of course taking the limit with respect to p as p->Infinity will
> quite correctly produce Indeterminate.
No, that's not correct. The limit of Infinity/p! as p increases without
bound is determinate. It's simply Infinity.
Perhaps you were thinking of Infinity/Infinity!, but the fact that that is
Indeterminate is irrelevant. (Remember: ...in a _deleted_ neighborhood...)
BTW, here's something that does work correctly (without using Multinomial):
In[13]:= Limit[Assuming[p > 1, FullSimplify[Limit[(p + q)!/(p! q!),
q -> Infinity]]], p -> Infinity]
Out[13]= Infinity
Note that FullSimplify, rather than just Simplify, must be used.
> I would not call this a bug but rather a bit of a design problem.
FWIW, I hadn't called Out[7] a bug before either. In any event, giving
Indeterminate for a limit which should actually be Infinity is not as
serious a problem as giving 0.
> On a related note; although I think Mathematica is right to leave
> unevaluated expressions such as Infinity/a, I would prefer it to
> return Infinity in the example below:
>
> Assuming[Element[a, Reals] && a != 0,
> Simplify[Infinity/a]]
I can understand why you'd want that behavior.
Mathematica does a good job with both
In[15]:= Assuming[a > 0, Simplify[Infinity/a]]
Out[15]= Infinity
and
In[16]:= Assuming[a < 0, Simplify[Infinity/a]]
Out[16]= -Infinity
David W. Cantrell
Prev by Date:
Re: small init.m problem
Next by Date:
Re: A limit bug
Previous by thread:
Re: A limit bug
Next by thread:
Re: A limit bug
|