gives a matrix of roots of the denominators in the TransferFunctionModel tfm.
TransferFunctionPoles[tfm,reg]
only gives the roots inside the region reg on the complex plane.
TransferFunctionPoles
gives a matrix of roots of the denominators in the TransferFunctionModel tfm.
TransferFunctionPoles[tfm,reg]
only gives the roots inside the region reg on the complex plane.
Examples
open all close allBasic Examples (3)
TransferFunctionPoles[TransferFunctionModel[{{{s^2 + ω^2}},
s^2 + 2*s*ζ*ω + ω^2},
s]]The poles for specific values of damping ratio and natural frequency:
% /. {ζ -> 0.3, ω -> 6Pi}The poles of a MIMO system are the poles of the elements of the transfer function:
TransferFunctionPoles[TransferFunctionModel[{{{10, 1}, {s, 1}},
{{s*(1 + s), -1 + s},
{2 + s, 3 + s}}}, s]]Time-delay systems may have an infinite number of poles:
TransferFunctionPoles[TransferFunctionModel[{{{100*E^(2*s)}}, 1 + 100*E^(2*s)*s},
s]]But they always have a finite number of poles in a bounded region:
N@TransferFunctionPoles[TransferFunctionModel[{{{100*E^(2*s)}}, 1 + 100*E^(2*s)*s},
s], {{-5, 5}, {-4, 4}}]Scope (5)
The poles of a fourth-order Butterworth filter:
TransferFunctionPoles[tfm = TransferFunctionModel[{{{1}}, (1 + 0.7654*s + s^2)*
(1 + 1.848*s + s^2)}, s]]PoleZeroPlot[tfm, PlotRange -> {{-1.1, 1.1}, {-1.1, 1.1}}, Epilog -> Style[Circle[], {Dashed, Gray}]]The poles of a tenth-order Bessel filter:
b[n_, k_] := ((2n - k)!/2^(n - k)(n - k)!k!)
TransferFunctionPoles[TransferFunctionModel[(b[10, 0]/Subsuperscript[∑, i = 0, 10]b[10, i]s^i), s]]//NThe poles of a discrete-time second-order system:
tfm = TransferFunctionModel[{{{0.004679 + 0.004837*z}},
0.9095 - 1.9*z + z^2}, z, SamplingPeriod -> 1/100];p = TransferFunctionPoles[tfm]The system is stable because the poles lie within the unit circle:
y = Thread[{Range[0, 2, 10^-2], #}]& /@ OutputResponse[tfm, UnitStep[t], {t, 2}];ListPlot[y, Joined -> True, PlotRange -> All]Flatten[Abs /@ p]The poles of a time-delay system in a square around the origin:
poles = TransferFunctionPoles[tfm = TransferFunctionModel[{{{1.}}, E^(-4*s) + 3.*s + s^2},
s], {{-20, 20}, {-20, 20}}]The poles trace out paths on the complex plane:
PoleZeroPlot[tfm, Rectangle[{-5, -20}, {0, 20}]]The poles of the elements of a MIMO system:
tfm = TransferFunctionModel[{{{s, 2*s, 1 + s},
{s, 1, 1}, {1, s, 1}},
{{3 + s, 6 + s, 3 + s},
{6 + s, 3 + s, 2 + s},
{3 + s, 2 + s, 6 + s}}}, s];TransferFunctionPoles[tfm]//MatrixFormApplications (2)
Use TransferFunctionPoles to determine if a system is asymptotically stable:
AsymptoticallyStableQ[tfm_ ? ContinuousTimeModelQ] := If[
Count[TransferFunctionPoles[tfm], Complex[x_ ? NonNegative, _] | x_ ? NonNegative, {3}] > 0, False, True]AsymptoticallyStableQ[tfm_ ? DiscreteTimeModelQ] := If[
Count[TransferFunctionPoles[tfm], _ ? (Abs[#] ≥ 1&), {3}] > 0, False, True]Asymptotic stability of various systems:
Grid[Join[{{"System", "Asymptotically Stable"}}, Table[{tfm, AsymptoticallyStableQ[tfm]}, {tfm, {TransferFunctionModel[{{{1}}, s}, s], TransferFunctionModel[{{{1}}, -1 + z}, z,
SamplingPeriod -> τ], TransferFunctionModel[{{{1, 1}}, {{-0.4 + z, 0.08 + 0.4*z +
z^2}}}, z, SamplingPeriod -> τ], TransferFunctionModel[{{{1, 1}}, {{1 + s, (1 + s)^2}}}, s], TransferFunctionModel[{{{-1 + s, 1}, {-1 + s, 2}}, -1 + s},
s]}}]], Frame -> All]Find the poles of the time-delay system near the origin:
tfm = TransferFunctionModel[{{{-3. + 4.*s}}, 1. + s/E^s +
s^2}, s];
poles = TransferFunctionPoles[tfm, {{-5, 5}, {-5, 5}}]Create a delay-free approximation using the poles:
zeros = TransferFunctionZeros[tfm];
approx = TransferFunctionModel[{zeros, poles, {{4}}}, s]Compare step responses of the time-delay system and the delay-free approximation:
actualresp = OutputResponse[tfm, UnitStep[t], {t, 0, 10}];
approxresp = OutputResponse[approx, UnitStep[t], {t, 0, 10}];
Plot[{actualresp, approxresp}, {t, 0, 10}]Properties & Relations (4)
For a SISO system, the poles of the transfer function are the eigenvalues of its state matrix:
tfm = TransferFunctionModel[{{{10*(5 + s)}}, s*(1 + s)*
(4 + s)}, s];Flatten[TransferFunctionPoles[tfm]] == Eigenvalues[First[Normal[StateSpaceModel[tfm]]]]The poles determine the natural response of a system:
tfm = TransferFunctionModel[{{{1 + s}}, 272 + 114*s + 18*s^2 +
s^3}, s];OutputResponse[{StateSpaceModel[tfm], {0.1, 1, 1}}, 0, t]//ExpandThe exponentials in the response are the real parts of the poles:
TransferFunctionPoles[tfm]The root locus plot gives the closed-loop poles as any parameter is varied:
tfm = TransferFunctionModel[{{{k*(2 + s)}},
1 + s + s^2}, s];poles = TransferFunctionPoles[SystemsModelFeedbackConnect[tfm]];poleCoords = Replace[Table[Evaluate[poles], {k, 0., 8}]//Flatten, p_ :> {Re[p], Im[p]}, {1}];The root locus plot as k is varied:
RootLocusPlot[tfm, {k, 0, 8}, PlotRange -> All, PoleZeroMarkers -> None, Epilog -> {PointSize[Medium], Red, Point /@ poleCoords}]A stable third-order system with one symbolic pole:
tfm[p_] := TransferFunctionModel[{{{13}}, (1 + p*s)*
(13 + 4*s + s^2)}, s]TransferFunctionPoles[tfm[p]]It can be better approximated by a second-order system if the third pole is further to the left:
Plot[Evaluate@Table[Tooltip[OutputResponse[tfm[p], UnitStep[t], {t, 10}], p], {p, {4, 1.75, 0.95, 0.6, 0.25, 0.1, 0}}], {t, 0, 10}, PlotRange -> All]Possible Issues (1)
TransferFunctionPoles may not find solutions for time-delay systems:
TransferFunctionPoles[tfm = TransferFunctionModel[{{{1}}, (E^(3*s) + s +
E^(3*s)*s^2)/E^(3*s)}, s]]poles = N@TransferFunctionPoles[tfm, {{-10, 10}, {-10, 10}}]PoleZeroPlot[tfm, Rectangle[{-5, -20}, {0, 20}], AspectRatio -> 1]Related Guides
Text
Wolfram Research (2010), TransferFunctionPoles, Wolfram Language function, https://reference.wolfram.com/language/ref/TransferFunctionPoles.html (updated 2012).
CMS
Wolfram Language. 2010. "TransferFunctionPoles." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2012. https://reference.wolfram.com/language/ref/TransferFunctionPoles.html.
APA
Wolfram Language. (2010). TransferFunctionPoles. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TransferFunctionPoles.html
BibTeX
@misc{reference.wolfram_2026_transferfunctionpoles, author="Wolfram Research", title="{TransferFunctionPoles}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/TransferFunctionPoles.html}", note=[Accessed: 15-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_transferfunctionpoles, organization={Wolfram Research}, title={TransferFunctionPoles}, year={2012}, url={https://reference.wolfram.com/language/ref/TransferFunctionPoles.html}, note=[Accessed: 15-June-2026]}