On Sun, Nov 18, 2012 at 3:00 PM, Tom Bachmann <[email protected]> wrote:

> Hi,
>
> Aaron is right. The Gruntz algorithm does not support oscillatory
> functions like cos(x), and last time I thought about it there seemed no
> easy way to extend it. As such all oscillatory limits are done using the
> heuristics, which in my experience tend to be somewhat unpredictable ...
>
> The basic gruntz algorithm works with all functions formed by algebraic
> combinations of exponentials and logarithms of *real* numbers, so in
> particular rational functions, real powers, etc. It also works with
> functions which, about points of interest, admit (asymptotic) expansions of
> this form. Thus it can compute limits like cos(1/x), x->oo [b/c 1/x -> 0,
> and cos has a power series expansion about 0], or arctan(x), x -> oo [b/c
> arctan has an asymptotic expansion around oo]. It cannot directly handle
> limits of gamma functions (with argument tending to infinity), but you can
> rewrite gamma(x) = exp(loggamma(x)), and loggama(x) *does* have an
> asymptotic series about oo [and that is what the algorithm does].
>

Maybe we can try to find some similar combination of functions for cos,
which we can work with. Maybe somehow sinc (sin(x)/x) would be more useful,
as it goes to zero at infinity.

I'm just shooting in the dark, though.  I haven't yet read Gruntz's thesis.


>
> In general a function is called tractable at x_0 in [-oo, oo] if it admits
> a series expansion of the required form, and the algorithm can only work
> with tractable functions. But cos isn't tractable at infinity.
>
> Now of course we *know* the behaviour of cos at infinity. If we could find
> a way to express the fact that cos(x) is bounded oscillatory as x->oo,
> gruntz could probably be adapted to compute limits like this. The
> difficulty is in coming up with a sufficiently general descriptions of
> things like "bounded oscillatory", which has the following properties:
>
> - gruntz can be adapted to work with these kinds of objects
> - the objects are mathematically sound
> - we can get meaningful answers in interesting cases
>

So some kind of useful extension of the squeeze theorem?

Aaron Meurer


>
> Unfortunately, these properties tend to collide. You are very much invited
> to come up with a solution :-).
>
> Best,
> Tom
>
>
> On 18.11.2012 21:43, Aaron Meurer wrote:
>
>> Ondrej might be able to answer better, as he implemented this, but the
>> work-horse of the limit() function is the Gruntz algorithm, from Dominik
>> Gruntz's PhD thesis 
>> (http://www.cybertester.com/**data/gruntz.pdf<http://www.cybertester.com/data/gruntz.pdf>
>> ).
>> limit() is gruntz() plus some heuristics.
>>
>> My guess is that either the Gruntz algorithm is not well suited to
>> oscilating functions, or else the relevant parts are not implemented.
>>
>> Aaron Meurer
>>
>>
>> On Sun, Nov 18, 2012 at 7:53 AM, Ilya Schurov <[email protected]
>> <mailto:[email protected]**>> wrote:
>>
>>     Hi, Ondrej,
>>
>>     Are there any known reasons why it works like this? Any ideas how to
>>     fix it?
>>
>>     --
>>     I.V.
>>
>>
>>     On Wednesday, November 14, 2012 12:42:33 AM UTC+4, Ondřej Čertík
>> wrote:
>>
>>         Hi Ilya,
>>
>>         On Sun, Nov 11, 2012 at 12:43 PM, Ilya Schurov
>>         <[email protected]> wrote:
>>          > 
>> http://code.google.com/p/__**sympy/issues/detail?id=3500<http://code.google.com/p/__sympy/issues/detail?id=3500>
>>
>>         
>> <http://code.google.com/p/**sympy/issues/detail?id=3500<http://code.google.com/p/sympy/issues/detail?id=3500>
>> >
>>          >
>>          > In [2]: limit((n+cos(n))/n,n,oo)
>>          > Out[2]: nan
>>          >
>>          > Should be 1, due to cos(n) is limited.
>>          >
>>          > It seems that there are problems with calculating limits of
>>         oscillating
>>          > functions, e.g.
>>          >
>>          > In [3]: limit(cos(n),n,oo)
>>          > Out[3]: cos(∞)
>>          >
>>          > Which should return nan instead or show that there is no
>>         limit in other way.
>>
>>         You are right, the oscillating functions don't work as they
>> should.
>>         Thanks for reporting it.
>>
>>         Ondrej
>>
>>     --
>>     You received this message because you are subscribed to the Google
>>     Groups "sympy" group.
>>     To view this discussion on the web visit
>>     
>> https://groups.google.com/d/**msg/sympy/-/Cb26ChOqDqQJ<https://groups.google.com/d/msg/sympy/-/Cb26ChOqDqQJ>
>> .
>>
>>     To post to this group, send email to [email protected]
>>     <mailto:[email protected]**>.
>>
>>     To unsubscribe from this group, send email to
>>     
>> sympy+unsubscribe@**googlegroups.com<sympy%[email protected]>
>>     
>> <mailto:sympy%2Bunsubscribe@**googlegroups.com<sympy%[email protected]>
>> >.
>>
>>     For more options, visit this group at
>>     
>> http://groups.google.com/**group/sympy?hl=en<http://groups.google.com/group/sympy?hl=en>
>> .
>>
>>
>> --
>> You received this message because you are subscribed to the Google
>> Groups "sympy" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> sympy+unsubscribe@**googlegroups.com<sympy%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/**group/sympy?hl=en<http://groups.google.com/group/sympy?hl=en>
>> .
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to sympy+unsubscribe@**
> googlegroups.com <sympy%[email protected]>.
> For more options, visit this group at http://groups.google.com/**
> group/sympy?hl=en <http://groups.google.com/group/sympy?hl=en>.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to