[Date Index]
[Thread Index]
[Author Index]
Re: Re: asymptotics
On 29 May 2007, at 17:57, dimitris wrote:
> for something like the following what you would say
>
> convert(log(x)*BesselJ(0,x)/sin(x^2),MeijerG);
Clearly this would be hard to implement in Mathematica since it likes
to convert the MeijerG function into other generalized functions
whenever it can:
MeijerG[{{}, {}}, {{v}, {-v}}, z]
BesselJ[2*v, 2*Sqrt[z]]
MeijerG[{{1/2, 1/2}, {}}, {{0}, {0}}, x]
2*EllipticK[-x]
(all taken from the documentation). Most (or perhaps all) CAS in
performing "simplifications" make use of "standard forms" of
expressions. In some cases Mathematica converts expressions into
standard form immediately on evaluation. This can have substantial
performance benefits when, for example, trying to show that two
complicated expressions are equal but of course there is also a
price, which is that it is hard to have an analogue of convert. The
other program takes a different approach but I am suspect there is
also a price that has to be paid for that.
Andrzej Kozlowski
> Thanks a lot for your new response.
> I think it should be another function (no Series) that do this kind
> of asymptotic expansions. There are some commands that the other
> CAS has and I wish Mathematica had (as probably there are various
> things
> of Mathematica that a user from the other CAS would want to his
> system!)
> but that's life. For example the function identify that appears in
> a recent
> question of Daniel Huber I think or the function convert that I
> really wish
> Mathematica had something similar.
>
> And if, you and Maxim pointed out an asymptotic series like this in
> the current thread is indeed a simple task for someone to do by the
> Series command, for something like the following what you would say
>
> convert(log(x)*BesselJ(0,x)/sin(x^2),MeijerG);
> (output is omitted)
>
> Dimitris
>
>
> / Andrzej Kozlowski :
>> This gives me an opportunity to write a few more words on asymptotic
>> expansions, including soem things that I used to know but forgot.
>>
>> There are in fact several concepts of defintions of "asymptotic
>> expansions". The most common defintion is that of an asymptotic-power
>> series, of the form
>>
>> f(x) = a[0] + a[1] x^(-1) + ... + a[n-1] x^(-n+1) + (a[n]+epsion[n]
>> [x]) x^-n
>>
>> where epsilon[n][x]->0 as x->0.
>>
>> This says that the difference between the sum of the first n-terms
>> of the expansion and the function f[x] can be made as small as
>> possible in comparison with 1/x^n when x is large enough.
>>
>> In the case of this kind of expansions we have a certain degree of
>> uniqueness: a given functions can have only one expansion for a given
>> range of values of x, but two different functions can have the same
>> asymptotic expansion. For example, the asymptotic expansion of
>> Exp[-x]
>> is
>> 0+0+..... so the asymptotic expansion of f[x] and f[x]+ Exp[-x] will
>> be the same (however, Mathematica, rather naturally will not give you
>> any expansion of Exp[-x] at Infinity - if it did it would have to
>> return 0).
>>
>> On the other hand, Exp[x], has not asymptotic expansion at all.
>>
>> Another common kind (about which I forgot but Maxim Rytin remembered)
>> is the case f[x]/g[x]. If f[x]/g[x] has an expansion of the above
>> kind then one says that
>>
>> f(x) = g[x] (a[0] + a[1] x + ... + a[n-1]/x^(n-1) + ...)
>>
>> is an asymptotic expansion of f. This is the kind of expansion that
>> the other CAS gave you and it has, in general, better properties than
>> the ones I considered.
>>
>> There are, however, much more general asymptotic expansions, which
>> is what i had in mind in my first replies to you. In fact, one can
>> expand functions in terms of essentially any given functions. I
>> think the most general "theory" of this kind was invented by Hoene-
>> Wronski but it has never been given a formal mathematical basis. The
>> subject is very complicated and obscure with many special techniques
>> and only very limited general theory. It does not seem to be suitable
>> for CAS.
>>
>> Now finally for your question. To tell the truth I do not know the
>> answer. When asked to expand a Bessel function at Infinity
>> Mathematica first produces messages about essential singularities
>> and then returns an expansion that looks like one of the expansions
>> you can see here
>>
>> http://functions.wolfram.com/BesselAiryStruveFunctions/BesselJ/
>> 06/02/02/
>>
>> Probably the explanation is that in the case of well known special
>> functions like the Bessel functions someone has programmed
>> Mathematica to return these expansions while it makes no attempt to
>> find them in more general cases. But actually, it seems, the all that
>> the other CAS does is simply to also consider the case:
>> g[x]*(something that has a power series at infinity), where g[x] has
>> an essential singularity at Infinity. This kind of thing is simple
>> enough to do by oneself.
>>
>> Andrzej Kozlowski
>>
>>
>>
>>
>>
>>
>>
>> On 28 May 2007, at 13:59, dimitris wrote:
>>
>>> Hello.
>>>
>>> Hmmm!
>>>
>>>> Well, of course, Mathematica correctly does not expand your
>>>> function
>>>> .as a power series about infinity because such an expansion does
>>>> not
>>>> exist (or, if you prefer, is identically 0). Note that the
>>>> "assymtotic expansion" the other CAS gives you is into a power
>>>> series
>>>> expansion: since after truncation it contains a factor Exp[-y u].
>>>
>>> Because of applied mathematics background I may miss something
>>> fundamentally.
>>> So I apologize for it.
>>>
>>> Why for example Mathematica does expand BesselJ at infinity?
>>> There is an essential singularity there.
>>>
>>> Dimitris
>>>
>>> / Andrzej Kozlowski :
>>>> On 24 May 2007, at 19:23, dimitris wrote:
>>>>
>>>>> Sorry fellas if I ask something trivial
>>>>> but currently I can't find anything!
>>>>>
>>>>> In another CAS I took
>>>>>
>>>>> f:=asympt(exp(-y*sqrt(1+m^2*u^2)/m),u,5);
>>>>>
>>>>> / 2 1/2 2 2 1/2 2 2
>>>>> | y (m ) y y (m ) (-6 m + y )
>>>>> f := |1 - --------- + ------- - ----------------------
>>>>> | 3 4 2 7 3
>>>>> \ 2 m u 8 m u 48 m u
>>>>>
>>>>> 2 2 2 \ 2 1/2
>>>>> y (-24 m + y ) 1 | / y (m ) u
>>>>> + ---------------- + O(----)| / exp(-----------)
>>>>> 8 4 5 | / m
>>>>> 384 m u u /
>>>>>
>>>>> ff:=simplify(convert(f,polynom)) assuming m>0;
>>>>> ff := 1/384*exp(-
>>>>> y*u)*(384*m^8*u^4-192*y*m^6*u^3+48*y^2*m^4*u^2
>>>>> +48*y*m^4*u-8*y^3*m^2*u-24*y^2*m^2+y^4)/
>>>>> m^8/u^4
>>>>>
>>>>> In Mathematica I can't get the expansion in infinity
>>>>>
>>>>> In[113]:= Series[Exp[(-y)*(Sqrt[1 + m^2*u^2]/m)], {u, Infinity,
>>>>> 10}]
>>>>> Out[113]= E^(-((Sqrt[1 + m^2*u^2]*y)/m))
>>>>>
>>>>> What do I miss here?
>>>>>
>>>>> Thanks
>>>>> Dimitris
>>>>>
>>>>>
>>>>
>>>>
>>>> Well, of course, Mathematica correctly does not expand your
>>>> function
>>>> as a power series about infinity because such an expansion does not
>>>> exist (or, if you prefer, is identically 0). Note that the
>>>> "assymtotic expansion" the other CAS gives you is into a power
>>>> series
>>>> expansion: since after truncation it contains a factor Exp[-y u].
>>>> There are many such assymtotic expansions. I do not know how to use
>>>> Mathematica to get this particular one, but it is easy to get
>>>> similar
>>>> ones. For example, here is one way to get an assymptotic expansion
>>>> pretty close to the one given by the other CAS:
>>>>
>>>> f[u_] = Simplify[
>>>> Normal[Series[a^(Sqrt[m^2 + 1/u^2]/m), {u, Infinity, 10}]] /.
>>>> a -> Exp[(-y)*u], {m > 0, u > 0, y > 0}]
>>>>
>>>> (3840*u^9*m^10 - 1920*u^8*y*m^8 + 480*u^6*y*(u*y + 1)*m^6 -
>>>> 80*u^4*y*(u^2*y^2 + 3*u*y + 3)*m^4 +
>>>> 10*u^2*y*(u^3*y^3 + 6*u^2*y^2 + 15*u*y + 15)*m^2 -
>>>> y*(u^4*y^4 + 10*u^3*y^3 + 45*u^2*y^2 + 105*u*y + 105))/(E^
>>>> (u*y)
>>>> *(3840*
>>>> m^10*u^9))
>>>>
>>>> This looks a little more complicated than the expression given
>>>> by the
>>>> other CAS (and is, of course, not equal to it) but they both give
>>>> good approximations of the original function at Infinity. You can
>>>> check it numerically as follows:
>>>>
>>>> g[u_] = 1/384*
>>>> Exp[-y*
>>>> u]*(384*m^8*u^4 - 192*y*m^6*u^3 + 48*y^2*m^4*u^2 +
>>>> 48*y*m^4*u -
>>>> 8*y^3*m^2*u - 24*y^2*m^2 + y^4)/m^8/u^4;
>>>>
>>>> Let's choose some random values for m and y:
>>>>
>>>> m = Random[]; y = Random[];
>>>>
>>>> then
>>>>
>>>> f[20000] // N
>>>> 5.318723018905205*10^-2317
>>>>
>>>> g[20000] // N
>>>> 5.318723018905206*10^-2317
>>>>
>>>> which are pretty close. For larger values they are even closer:
>>>>
>>>> f[200000] // N
>>>> 1.811911734460420*10^-23163
>>>>
>>>> g[200000] // N
>>>> 1.811911734460420*10^-23163
>>>>
>>>> Of course, as expected, the values are very close to zero. For the
>>>> function itself we get:
>>>>
>>>> N[Exp[(-y)*(Sqrt[1 + m^2*u^2]/m)] /. u -> 200000]
>>>> 1.81191173447088963591082`11.14761897993578*^-23163
>>>>
>>>> Andrzej Kozlowski
>>>
>>>
>
>
Prev by Date:
**Re: Polynomial to List**
Next by Date:
**Re: Iterate through a list**
Previous by thread:
**Re: asymptotics**
Next by thread:
**Re: Re: Re: asymptotics**
| |