\documentstyle[11pt,reduce]{article}
\title{{\bf RESIDUE Package for {\tt REDUCE}}}
\author{Wolfram Koepf\\ email: {\tt Koepf@zib-berlin.de}}
\date{April 1995 : ZIB Berlin}
\begin{document}
\maketitle
\def\Res{\mathop{\rm Res}\limits}
\newcommand{\C}{{\rm {\mbox{C{\llap{{\vrule height1.52ex}\kern.4em}}}}}}
This package supports the calculation of residues. The residue
$\Res_{z=a} f(z)$ of a function $f(z)$ at the point $a\in\C$ is defined
as
\[
\Res_{z=a} f(z)=
\frac{1}{2 \pi i}\oint f(z)\,dz
\;,
\]
with integration along a closed curve around $z=a$ with winding number 1.
If $f(z)$ is given by a Laurent series development at $z=a$
\[
f(z)=\sum_{k=-\infty}^\infty a_k\,(z-a)^k
\;,
\]
then
\begin{equation}
\Res\limits_{z=a} f(z)=a_{-1}
\;.
\label{eq:Laurent}
\end{equation}
If $a=\infty$, one defines on the other hand
\begin{equation}
\Res\limits_{z=\infty} f(z)=-a_{-1}
\label{eq:Laurent2}
\end{equation}
for given Laurent representation
\[
f(z)=\sum_{k=-\infty}^\infty a_k\,\frac{1}{z^k}
\;.
\]
The package is loaded by the statement
\begin{verbatim}
1: load residue;
\end{verbatim}
It contains two REDUCE operators:
\begin{itemize}
\item
{\tt residue(f,z,a)} determines the residue of $f$ at the point $z=a$
if $f$ is meromorphic at $z=a$. The calculation of residues at essential
singularities of $f$ is not supported.
\item
{\tt poleorder(f,z,a)} determines the pole order of $f$ at the point $z=a$
if $f$ is meromorphic at $z=a$.
\end{itemize}
Note that both functions use the {\tt taylor} package in
connection with representations (\ref{eq:Laurent})--(\ref{eq:Laurent2}).
Here are some examples:
\begin{verbatim}
2: residue(x/(x^2-2),x,sqrt(2));
1
---
2
3: poleorder(x/(x^2-2),x,sqrt(2));
1
4: residue(sin(x)/(x^2-2),x,sqrt(2));
sqrt(2)*sin(sqrt(2))
----------------------
4
5: poleorder(sin(x)/(x^2-2),x,sqrt(2));
1
6: residue(1/(x-1)^m/(x-2)^2,x,2);
- m
7: poleorder(1/(x-1)/(x-2)^2,x,2);
2
8: residue(sin(x)/x^2,x,0);
1
9: poleorder(sin(x)/x^2,x,0);
1
10: residue((1+x^2)/(1-x^2),x,1);
-1
11: poleorder((1+x^2)/(1-x^2),x,1);
1
12: residue((1+x^2)/(1-x^2),x,-1);
1
13: poleorder((1+x^2)/(1-x^2),x,-1);
1
14: residue(tan(x),x,pi/2);
-1
15: poleorder(tan(x),x,pi/2);
1
16: residue((x^n-y^n)/(x-y),x,y);
0
17: poleorder((x^n-y^n)/(x-y),x,y);
0
18: residue((x^n-y^n)/(x-y)^2,x,y);
n
y *n
------
y
19: poleorder((x^n-y^n)/(x-y)^2,x,y);
1
20: residue(tan(x)/sec(x-pi/2)+1/cos(x),x,pi/2);
-2
21: poleorder(tan(x)/sec(x-pi/2)+1/cos(x),x,pi/2);
1
22: for k:=1:2 sum residue((a+b*x+c*x^2)/(d+e*x+f*x^2),x,
part(part(solve(d+e*x+f*x^2,x),k),2));
b*f - c*e
-----------
2
f
23: residue(x^3/sin(1/x)^2,x,infinity);
- 1
------
15
24: residue(x^3*sin(1/x)^2,x,infinity);
-1
\end{verbatim}
\iffalse
7: for k:=1:3 sum
7: residue((a+b*x+c*x^2+d*x^3)/(e+f*x+g*x^2+h*x^3),x,
7: part(part(solve(e+f*x+g*x^2+h*x^3,x),k),2));
***** CATASTROPHIC ERROR *****
("gcdf failed" (root_of (plus e (times f x_) (times g (expt x_ 2)) (times h (
expt x_ 3))) x_ tag_2) (times (root_of (plus e (times f x_) (times g (expt
x_ 2)) (times h (expt x_ 3))) x_ tag_2) h))
***** Please send output and input listing to A. C. Hearn
\fi
Note that the residues of factorial and $\Gamma$ function terms are
not yet supported.
\end{document}