Re: Re: how to explain this weird effect? Integrate
- To: mathgroup at smc.vnet.net
- Subject: [mg46432] Re: [mg46290] Re: how to explain this weird effect? Integrate
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Wed, 18 Feb 2004 00:36:55 -0500 (EST)
- References: <200402121216.HAA12039@smc.vnet.net> <c0hhvb$lgl$1@smc.vnet.net> <200402140256.VAA08500@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
steve_H wrote:
> Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote in message news:<c0hhvb$lgl$1 at smc.vnet.net>...
>
>
>>It's not hard to explain if you actually look at the output you get
>>before substituting values for n and m.
>>
>
>
> hi;
>
> I think you missed my point.
>
> As I said , I do see why Mathematica complained. It is clear from
> the ouput. and I know that taking the limit will give the correct
> result I wanted to see. But this is not the point.
>
> My point is that mathematically speaking, it should not make a
> difference when one does the substitution. But using a computer
> algebra package, it made a difference. I am not looking for a way around
> this, I wanted to talk about the user not having to work around these
> limitations.
>
> So, the question is that, why did not Mathematica perform the Limit operation
> itself to give the correct answer?
>
> Look at this example:
>
> r = 1/a
> r /. a -> 0
>
> Here Mathematica complains becuase of 1/0 problem, but still returns
> ComplexInfinity as the correct answer.
>
> Now when I type
>
> Limit[r, a -> 0]
> no complaint is given, and infinity is the answer again.
>
> mathematically speaking, 1/a when a=0, is the same as Limit[1/a , a->0]
> So, the final answer should not be different.
>
> But when I typed
> r = Integrate[Sin[m x] Sin[n x], {x, 0, 2 Pi}]
> r /. {n -> 2, m -> 2}
>
> Mathematica complained about 1/0 output, BUT also did NOT give the answer.
>
> So, here we have 2 examples, both have 1/0 problem, in both cases Mathematica
> complained about 1/0, but in one case it still gave the final answer,
> and in the second case it did not.
>
> to conclude, Mathematica should do one of 2 things:
>
> 1. complain about 1/0, but internally apply the Limit to see if it can
> obtain an answer.
> 2. not complain about 1/0 if applying the Limit will resolve it, else
> only then complain about 1/0 and give no answer.
>
> thanks,
> Steve
>
This thread seems to persist so I thought I might say a few words about
replacement vs. extraction of limits in Mathematica. Specifically I will
provide some of the reasons why the latter is not compatible with the
semantics of the former.
First, the example
r = 1/a
followed by
r /. a->0
gives an undirected infinity. I think all agree this is appropriate and
thus requires no comment. But what of
Limit[r, a->0]
returning DirectedInfinity[1] (that is, +infinity)? This follows from
Limit semantics, which has a default direction associated to limits (and
can be overridden by a specification Direction->...). For infinities,
the direction is simply the direction vector of the infinity. For finite
points, the default direction is -1, that is, approach from the right.
Thus, in this example, we approach the origin from the right, and so
DirectedInfinity[1] is the correct result.
The more general question, as best I can discern, is whether replacement
should in some cases invoke Limit. The short answer is "No, it should
not". I'll try to explain what are the issues but note that already the
example above gives insight into one such.
First observe that replacement is a structural operation. There is no
notion of "variables' and indeed one might do
expr /. {2*a->3, 5->x, Pi->7.2, r^2+3*s->z, Sin[x]->Cos[t]}
Limit, by way of contrast, works with a single variable. Hence the
domains of applicability of Limit and ReplaceAll are not the same.
Next note that Limit may apply various nontrivial transformations
unrelated to whatever is specified in the ReplaceAll. In addition to
being an intrinsically nonstructural operation (it is mathematical,
after all), it can also be slow. Which means it is not well suited for
large-scale replacement operations of the type occasionally done in
computations e.g. when doing random replacements in a large expression
to see if it might be zero.
Another thing to observe, as noted in the example above, is that limits
may depend on direction. When multiple variables are present, they
depend on order as well. Hence results of automatic use of Limit with
replacement of variables, when it could be done at all, would be
difficult to interpret.
I hope this helps to explain why Limit neither is nor could be involved
in ReplaceAll.
Daniel Lichtblau
Wolfram Research
- References:
- Re: how to explain this weird effect? Integrate
- From: nma124@hotmail.com (steve_H)
- Re: how to explain this weird effect? Integrate