gives a matrix of roots of the numerators in the TransferFunctionModel tfm.
TransferFunctionZeros[tfm,reg]
only gives the roots inside the region reg on the complex plane.
TransferFunctionZeros
gives a matrix of roots of the numerators in the TransferFunctionModel tfm.
TransferFunctionZeros[tfm,reg]
only gives the roots inside the region reg on the complex plane.
Examples
open all close allBasic Examples (3)
Compute the zeros for a SISO system:
TransferFunctionZeros[TransferFunctionModel[{{{-1 + s}}, 2 + s}, s]]tfm = TransferFunctionModel[{{{s, 1}, {1 + s, -4 + s}},
{{1 + s, 2 + s}, {2 + s,
1 + s + s^2}}}, s];TransferFunctionZeros[tfm]//MatrixFormTime-delay systems may have infinite poles:
TransferFunctionZeros[TransferFunctionModel[{{{(1 + 100*E^(2*s)*s)/E^(2*s)}},
100*(2 - 3*s + s^2)}, s]]Get only the values within a square about the origin:
N@TransferFunctionZeros[TransferFunctionModel[{{{(1 + 100*E^(2*s)*s)/E^(2*s)}},
100*(2 - 3*s + s^2)}, s], {{-4, 4}, {-4, 4}}]Scope (5)
TransferFunctionZeros[TransferFunctionModel[{{{(1 + s)*(4 + s)*(5 + s)*
(7 + s)}}, (2 + s)*(3 + s)*(8 + s)*
(9 + s)*(11 + s)}, s]]{tfm = TransferFunctionModel[{{{0.1 + s, 0.3 + s, 1},
{1 + s, -0.1 + s, 0.4 + s}},
{{s, 2 + s, s}, {2 + s, s,
2 + s}}}, s], TransferFunctionZeros[tfm]//MatrixForm}Compute the zeros of a inverted pendulum model:
TransferFunctionZeros[TransferFunctionModel[{{{-s^2}, {-g + l*s^2},
{-s^3}, {(-g)*s + l*s^3}},
(-g)*(m + M)*s^2 +
l*M*s^4}, s]]The zeros of a system with parallel subsystems:
tfm1 = TransferFunctionModel[{{{0.5 + z}}, 0.75 + z}, z,
SamplingPeriod -> 0.1];tfm2 = TransferFunctionModel[{{{0.15*z}}, (-0.9 + z)*(-0.8 + z)*
(0.8 + z)}, z, SamplingPeriod -> 0.1];TransferFunctionZeros[SystemsModelParallelConnect[tfm1, tfm2]]They are different from the zeros of the individual subsystems:
TransferFunctionZeros /@ {tfm1, tfm2}The zeros of a time-delay system in a square around the origin:
zeros = TransferFunctionZeros[tfm = TransferFunctionModel[{{{2. + s/E^(2.*s) + s^2}},
1. + 3.*s + s^2}, s], {{-20, 20}, {-20, 20}}]The zeros trace out paths on the complex plane:
PoleZeroPlot[tfm, Rectangle[{-5, -20}, {0, 20}]]Applications (2)
Compute the zeros of a PID controller:
TransferFunctionZeros[TransferFunctionModel[{{{s^2*Subscript[k, d] +
Subscript[k, i] + s*Subscript[k,
p]}}, s}, s]]Find the zeros of the time-delay system near the origin:
tfm = TransferFunctionModel[{{{-3./E^(2.*s) + 4.*s}},
1. + 2.*s + 3.*s^2 + s^3}, s];
zeros = TransferFunctionZeros[tfm, {{-5, 5}, {-5, 5}}]Create a delay-free approximation using the poles:
poles = TransferFunctionPoles[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, 20}];
approxresp = OutputResponse[approx, UnitStep[t], {t, 0, 20}];
Plot[{actualresp, approxresp}, {t, 0, 20}]Properties & Relations (3)
For SISO systems, the zeros block the transmission of specific input signals:
tfm = TransferFunctionModel[{{{150*(5 + s)*(0.25 + s^2)}},
(1 + s)*(2 + s)^2*(9 + s)}, s];
TransferFunctionZeros[tfm]The steady-state response of the system to Sin[0.5 t] is zero:
Plot[OutputResponse[tfm, Sin[0.5 t], {t, 4π}]//Evaluate, {t, 0, 4π}]The response to Sin[5 t] does not go to zero:
Plot[OutputResponse[tfm, Sin[5 t], {t, 4π}]//Evaluate, {t, 0, 4π}]A damped second-order system with a minimum-phase zero:
tfm[z_] := TransferFunctionModel[{{{1 + s*z}},
5 + 2*s + s^2}, s]
TransferFunctionPoles[tfm[z]]//FlattenThe rise time decreases and the overshoot increases as the zero moves away from the poles:
Plot[Evaluate[Table[With[{y = OutputResponse[tfm[z], UnitStep[t], t]}, Tooltip[(y/Limit[y, t -> ∞]), z]], {z, {1, 2, 3}}]], {t, 0, 6}, PlotRange -> All]The response of a system with nonminimum-phase zeros starts out in the reverse direction:
y = OutputResponse[TransferFunctionModel[{{{-0.5 + s}}, 10 + 13*s + 6*s^2 +
s^3}, s], UnitStep[t], {t, 6}];Plot[y, {t, 0, 6}, PlotRange -> All]A discrete-time, nonminimum-phase system:
y = Thread[{Range[0, 8, 0.1], #}]& /@ OutputResponse[TransferFunctionModel[{{{-1.05 + z}}, 0.7408 - 1.724*z +
z^2}, z, SamplingPeriod -> 0.1], UnitStep[t], {t, 8}];
ListPlot[y, Joined -> True]Possible Issues (1)
TransferFunctionZeros may not find solutions for time-delay systems:
tfm = TransferFunctionModel[
{{{(-E^(-3*s))*(-E^(3*s) - s +
E^(3*s)*s^2)}}, 1 + 4*s + s^2},
s];
TransferFunctionZeros[tfm]zeros = N@TransferFunctionZeros[tfm, {{-10, 2}, {-15, 15}}]PoleZeroPlot[tfm, Rectangle[{-5, -20}, {0, 20}], AspectRatio -> 1]Related Guides
Text
Wolfram Research (2010), TransferFunctionZeros, Wolfram Language function, https://reference.wolfram.com/language/ref/TransferFunctionZeros.html (updated 2012).
CMS
Wolfram Language. 2010. "TransferFunctionZeros." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2012. https://reference.wolfram.com/language/ref/TransferFunctionZeros.html.
APA
Wolfram Language. (2010). TransferFunctionZeros. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TransferFunctionZeros.html
BibTeX
@misc{reference.wolfram_2026_transferfunctionzeros, author="Wolfram Research", title="{TransferFunctionZeros}", year="2012", howpublished="\url{https://reference.wolfram.com/language/ref/TransferFunctionZeros.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_transferfunctionzeros, organization={Wolfram Research}, title={TransferFunctionZeros}, year={2012}, url={https://reference.wolfram.com/language/ref/TransferFunctionZeros.html}, note=[Accessed: 13-June-2026]}