# finding poles of a function

Is there a command to find the poles of a function $f=f(z)$?

example: let $$f(z) = \frac{1}{z^2-1}$$ then we know that the poles are at $z=\pm 1$ but is there a special command in mathematica to do this?

-
Solve[1/f[z] == 0, z]? – Michael E2 Jun 12 '13 at 15:38
OK I thought there was some special command like Pole[f,z] or similar. Thanks, I'll try that. – mapel Jun 12 '13 at 15:40
Or, if you want to handle things like Tan[]: Reduce[1/Tan[x] == 0, x]]. Should work nicely for rational functions, too. – J. M. Jun 12 '13 at 15:43
@0x4A4D I think that is easier/smoother. – mapel Jun 12 '13 at 15:49
sometimes I use Solve[Denominator[f[z]]==0,z], but I would say this question is good because I also expect something much easier and more automatic (in case one doesn't want to organize the expression of f[z]). – Leo Fang Jun 12 '13 at 16:31

There is a special function for this: it's called TransferFunctionPoles. For the case you asked for:

TransferFunctionPoles[TransferFunctionModel[{{1/(z^2 - 1)}}, z]]


which returns the expected answer that there are two poles at

{{{-1, 1}}}


TransferFunctionPoles can also handle multivariable input/output models of the kind that control engineers like to play with, including symbolic transfer functions and time-delay systems. There are a number of related commands including TransferFunctionZeros, TransferFunctionModel, StateSpaceModel ways of converting continuous to discrete models, and special plotting functions like RootLocusPlot and NyquistPlot.

-
It doesn't work with Tan[z]. It complains about polynomial numerators and denominators. Is this method restricted to rational functions? – Michael E2 Jun 12 '13 at 17:18
@@Michael E2 -- Whenever you see the phrase "transfer function," it implies rational functions. – bill s Jun 12 '13 at 18:12