cancels common poles and zeros in the TransferFunctionModel tfm.
TransferFunctionCancel[tfm,crit]
cancels only common pole-zero pairs ei for which crit[ei] is True.
TransferFunctionCancel
cancels common poles and zeros in the TransferFunctionModel tfm.
TransferFunctionCancel[tfm,crit]
cancels only common pole-zero pairs ei for which crit[ei] is True.
Details and Options
- The poles and zeros are computed using TransferFunctionPoles and TransferFunctionZeros.
- TransferFunctionCancel accepts the option Tolerance.
- With the setting Tolerance->ϵ, poles
and zeros
with
will be canceled.
Examples
open all close allBasic Examples (3)
Cancel common pole-zero pairs:
TransferFunctionCancel[TransferFunctionModel[{{{-0.5 + z}}, 0.5 - 1.5*z + z^2},
z, SamplingPeriod -> 1]]Cancel common pole-zero pairs that are stable:
TransferFunctionCancel[TransferFunctionModel[{{{(-1 + s)*(1 + s)}}, -1 + s^2},
s], Re[#] ≤ 0&]Cancel stable pairs within a specified tolerance:
TransferFunctionCancel[TransferFunctionModel[
{{{0.008*(-0.42 + z)*(1.05 + z)*(1.2 + z)}},
(-0.4 + z)*(-0.22 + z)*z*(1.1 + z)*
(1.22 + z)}, z, SamplingPeriod -> 0.1], Abs[#] ≤ 1&, Tolerance -> 0.025]Scope (7)
Cancel the common pole-zero pair at the origin:
{tfm = TransferFunctionModel[{{{s}}, s^2}, s], TransferFunctionCancel[tfm]}Cancel common pole-zero pairs of a fourth-order system:
tfm = TransferFunctionModel[{{{105 + 26.25*s}}, 120*s + 74*s^2 +
15*s^3 + s^4}, s];TransferFunctionCancel[tfm]The common pole-zero pair is evident by factoring the transfer function:
TransferFunctionFactor[tfm]Cancel pole-zero pairs for a discrete-time system:
TransferFunctionCancel[TransferFunctionModel[{{{(1 + s)*SystemsModelDelay[3]}},
1 + 2*s + s^2}, s, SamplingPeriod -> None,
SystemsModelLabels -> None]]Cancel pole-zero pairs for a system with input delay:
TransferFunctionCancel[TransferFunctionModel[{{{0.5*(-0.5 + z), -0.5 + z}},
{{0.35 - 1.2*z + z^2, 0.05 - 0.6*z + z^2}}},
z, SamplingPeriod -> 0.1]]Cancel common pole-zero pairs that are stable:
TransferFunctionCancel[TransferFunctionModel[
{{{(-4 + s)*s*(1 + s + s^2)}},
(-4 + s)*s*(1 + s + s^2)}, s], Re[#] ≤ 0&]Cancel pole-zero pairs with tolerance not greater than 0.01:
tfm = TransferFunctionModel[{{{12.45*(3 + s)}}, (3.003 + s)*
(7 + s)*(9 + s)}, s];TransferFunctionCancel[tfm, Tolerance -> 0.01]With zero tolerance nothing is canceled:
TransferFunctionCancel[tfm]This system has two pole-zero pairs whose tolerance is less than or equal to 0.6:
tfm = TransferFunctionModel[
{{{100*(91.69 + 2.4*s + s^2)*(11.86 + 6.2*s +
s^2)}}, (101 + 2*s + s^2)*
(10 + 6*s + s^2)*(180 + 27*s + s^2)},
s];tfm1 = TransferFunctionCancel[tfm, Tolerance -> 0.6]Cancel the pair with frequency greater than 9 radians per time unit:
tfm2 = TransferFunctionCancel[tfm, Abs[#] > 9&, Tolerance -> 0.6]Visualize the responses of the three systems to a unit step input:
or = OutputResponse[#, UnitStep[t], {t, 2}][[1]]& /@ {tfm, tfm1, tfm2};Plot[Evaluate[or], {t, 0, 2}, PlotRange -> All, PlotLegends -> {"tfm", "tfm1", "tfm2"}]Options (2)
Tolerance (2)
The tolerance is zero by default:
tfm = TransferFunctionModel[{{{0.5 + s}}, 0.4 + s}, s];Cancel pole-zero pairs whose absolute difference is not greater than 0.15:
TransferFunctionCancel[tfm, Tolerance -> 0.15]Pole-zero cancellation with a larger tolerance:
TransferFunctionCancel[TransferFunctionModel[{{{4*(1.8 + s)*(16 + s)}},
s*(2.4 + s)*(12 + s)}, s], Tolerance -> 1]Applications (1)
Use TransferFunctionCancel to obtain a simpler representation of a highly oscillatory system in a series with a notch filter:
tfmsys = TransferFunctionModel[{{{20000*(100000 + s)}},
(16.69 + s)*((47.66 - 1094.*I) + s)*
((47.66 + 1094.*I) + s)}, s];tfmnotch = TransferFunctionModel[
{{{((47.65 - 1093.7715*I) + s)*((47.65 + 1093.7715*I) + s)}},
144000000 + 720000000*s + s^2}, s];tfm = TransferFunctionCancel[SystemsModelSeriesConnect[tfmsys, tfmnotch], Tolerance -> 0.5]A system of higher order is obtained without the cancellation:
tfm1 = SystemsModelSeriesConnect[tfmsys, tfmnotch]//SimplifyIn most cases the pole-zero cancellation has a negligible effect on the overall dynamics:
Plot[Table[OutputResponse[systems, UnitStep[t], {t, 35}], {systems, {tfm, tfm1}}]//Evaluate, {t, 0, 35}, PlotStyle -> {Automatic, Dashed}]Properties & Relations (1)
TransferFunctionCancel is equivalent to MinimalStateSpaceModel for SISO systems:
ssm = StateSpaceModel[{{{0, 1, 0}, {0, 0, 1}, {-6, -11, -6}}, {{0}, {0}, {1}}, {{1, 2, 1}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None];{TransferFunctionCancel[TransferFunctionModel[ssm]], TransferFunctionModel[MinimalStateSpaceModel[ssm]]}Possible Issues (2)
A system with an unstable pole-zero cancellation may appear stable:
tfm[ϵ_] := TransferFunctionModel[{{{4*(-1 + s + ϵ)}},
(-1 + s)*(3 + s)}, s]Plot[OutputResponse[StateSpaceModel[TransferFunctionCancel[tfm[0.1], Tolerance -> 0.11]], UnitStep[t], t]//Evaluate, {t, 0, 5}, PlotRange -> All]But it is internally unstable:
Plot[OutputResponse[Evaluate[StateSpaceModel[tfm[ϵ]] /. ϵ -> 0.1], UnitStep[t], t]//Evaluate, {t, 0, 50}]TransferFunctionCancel does not support internal delays:
TransferFunctionCancel[TransferFunctionModel[{{{a/E^(3*s) + s}},
{{1 + 2*s + s^2}}}, s]]
Related Guides
History
Text
Wolfram Research (2010), TransferFunctionCancel, Wolfram Language function, https://reference.wolfram.com/language/ref/TransferFunctionCancel.html.
CMS
Wolfram Language. 2010. "TransferFunctionCancel." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/TransferFunctionCancel.html.
APA
Wolfram Language. (2010). TransferFunctionCancel. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TransferFunctionCancel.html
BibTeX
@misc{reference.wolfram_2026_transferfunctioncancel, author="Wolfram Research", title="{TransferFunctionCancel}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/TransferFunctionCancel.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_transferfunctioncancel, organization={Wolfram Research}, title={TransferFunctionCancel}, year={2010}, url={https://reference.wolfram.com/language/ref/TransferFunctionCancel.html}, note=[Accessed: 13-June-2026]}