MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
>


  • Prev by Date: Re: FindRoot/NDSolve problem in VS5
  • Next by Date: Front End Programming question
  • Previous by thread: Re: Re: computing residues
  • Next by thread: Re: computing residues