Re: Re: computing residues
- To: mathgroup at smc.vnet.net
- Subject: [mg54859] Re: [mg54821] Re: [mg54785] computing residues
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Fri, 4 Mar 2005 05:07:53 -0500 (EST)
- References: <200503010658.BAA25262@smc.vnet.net> <200503030329.WAA21091@smc.vnet.net> <4a6a68e0a91addc250bf47ab9ab03e74@mimuw.edu.pl>
- Sender: owner-wri-mathgroup at wolfram.com
I have to admit Mathematica is smarter than I had thought and in fact:
Residue[1/Sin[x],{x,Root[8*#1^3-6*#1-1&,3]-Cos[Pi/9]}]
1
I made a mistake by using Root[8*#1^3-6*#1-1&,1] instead of
Root[8*#1^3-6*#1-1&,3] in the first part of my example below. In fact
Residue deals with this case impressively well. This certainly seems to
reduce the strength of my argument, though I still would prefer to get
an unevaluated input in the non-numerical case.
Andrzej
On 3 Mar 2005, at 08:47, Andrzej Kozlowski wrote:
>
> On 3 Mar 2005, at 04:29, Daniel Lichtblau wrote:
>
>> mjumbo wrote:
>>
>>> Hello,
>>>
>>> I would like to compute residues of analytical function, but
>>> Mathematica's built-in function Residue produces extremely strange
>>> results. E.g.
>>>
>>> Residue[1/Sin[z], {z, w}]
>>>
>>> gives 0, I expected it produce some conditional expression, or at
>>> least to leave this expression unevaluated, but 0 is surely
>>> incorrect.
>>> What I am doing wrong?
>>>
>>> MJM
>>> __________
>>> www.newmail.ru -- óçåë ñâîáîäíûõ êîììóíèêàöèé.
>>>
>>>
>>
>> You are not doing anything wrong but your expectation is not
>> realistic.
>> You would like Residue to encorporate, among other things, a
>> (nonexistent) transcendental solver, and an oracle to determine when
>> the
>> expansion point might be treated as arbitrary. This would also raise
>> serious design issues in terms of how to describe the result. To see
>> what I mean, consider what output you think might be realistic for the
>> following examples.
>>
>> Residue[(z^2-1)/Sin[z*Pi], {z,z0}]
>> Residue[(z^2-1)/Sin[Sin[z*Pi]], {z,z0}]
>> Residue[(z^2-1)/Sin[z*t], {z,z0}]
>> Residue[1/(z-Tan[z]), {z,z0}]
>> Residue[1/(z-t*Tan[z]), {z,z0}]
>> Residue[1/Sin[z], {z,z0-Sqrt[z0^2]}]
>>
>> I can tell you how one might begin to approach this. Use Reduce to
>> find
>> zeros of 1/f[z]. Give up when Reduce fails. Otherwise attempt to use
>> its
>> result as an assumption to Series in order to find information about
>> singular points.
>>
>> Among other issues this assumes that you can in some way recognize
>> what
>> is the "variable" on which you will place assumptions. And that Series
>> can be used to advantage with appropriate assumptions. For example,
>> here
>> we find a pole, as desired.
>>
>> In[19]:= Series[1/Sin[z*Pi], {z,z0,1},
>> Assumptions->Element[z0,Integers]]
>>
>> Sec[Pi z0] Sec[Pi z0] Tan[Pi z0]
>> Out[19]= ----------- + --------------------- +
>> Pi (z - z0) 2
>>
>> 2
>> Pi Sec[Pi z0] Pi Sec[Pi z0] Tan[Pi z0] 2
>>> (------------- + -------------------------) (z - z0) + O[z - z0]
>> 6 4
>>
>> Here we are not so fortunate.
>>
>> In[21]:= Series[1/Sin[z], {z,z0,1},
>> Assumptions->Element[z0/Pi,Integers]]
>>
>> 2
>> Out[21]= Csc[z0] - Cot[z0] Csc[z0] (z - z0) + O[z - z0]
>>
>> In summary, I see several things standing in the way of this rather
>> vaguely proposed functionality.
>>
>> (1) Lack of a clear design for what it should do, e.g. how to return
>> the
>> result.
>> (2) Lack of capabilities to discern singular points.
>> (3) Lack of an ability to recognize that the expansion point is in
>> some
>> way not bound to a specific "value" (that is to say, how do we know to
>> treat it as being "possibly a singularity").
>> (4) Lack of an ability to recognize what are the assumptions needed to
>> place us at such points.
>> (5) Lack of a reasonable way to expand series with those assumptions
>> that place us at such points.
>>
>>
>> Daniel Lichtblau
>> Wolfram Research
>>
>>
>>
>
> It seems to me that all the above arguments are reasonable and
> convincing but they still do not justify returning a meanngless 0
> whenever Mathematica has no idea of what the answer should be rather
> than returning the result unevaluated as is usually done in such
> cases. The current approach is quite useless while the "normal"
> approach has soem uses, since it allows us to use an "inert" result
> for later substitution and evaluation. With the current approach we
> can construct (in Maxim's style ;-)) examples like:
>
> Residue[1/Sin[x], {x, Root[8*#1^3 - 6*#1 - 1 & , 1] -
> Cos[Pi/9]}]
>
> 0
>
> FullSimplify[Unevaluated[Residue[1/Sin[x],
> {x, Root[8*#1^3 - 6*#1 - 1 & , 3] - Cos[Pi/9]}]]]
>
> 1
>
>
> It does not appear programistically impossible to change this
> behaviour and it should not cause any serious backward compatibility
> problems. In fact, even a somewhat more ambitious approach might be
> possible: use the method you have indicated to see if you get any
> useful results you can and return an If statement just as definite
> integration with symbolic limits does. Personally I have doubts
> whether this is worth implementing, given that it is not likely to be
> used very frequently and a user that needs it can easily do it himself
> with the help of Reduce, but simply returning 0 seems to me to be
> completely useless and difficult to justify.
>
> Andrzej Kozlowski
>
- References:
- computing residues
- From: mjumbo <mjumbo@nm.ru>
- Re: computing residues
- From: Daniel Lichtblau <danl@wolfram.com>
- computing residues