InputOutputResponse[sys,u,tspec]
gives the response of the input-output model sys with input signals u and temporal specification tspec.
InputOutputResponse[sys,…,"prop"]
gives the value of property "prop".
InputOutputResponse
InputOutputResponse[sys,u,tspec]
gives the response of the input-output model sys with input signals u and temporal specification tspec.
InputOutputResponse[sys,…,"prop"]
gives the value of property "prop".
Details and Options
- InputOutputResponse is also known as simulation.
- InputOutputResponse is typically used to simulate a complete system such as a plant and controller together to accurately analyze system behavior, verify performance and measure controller effort.
- The results are computed by solving the underlying equations of sys. Generally, they are ordinary differential or difference equations or their combination for mixed continuous- and discrete-time systems.
- For mixed continuous- and discrete-time systems, the result is continuous-time but typically piecewise in value.
- For systems represented as a SystemsConnectionsModel, all the internal signals can also be computed.
- The input-output model sys can have the following forms:
-
TransferFunctionModel[…] transfer-function model StateSpaceModel[…] state-space model AffineStateSpaceModel[…] affine state-space model NonlinearStateSpaceModel[…] nonlinear state-space model DiscreteInputOutputModel[…] discrete input-output model SamplerModel[…] sampler model HolderModel[…] holder model SystemsConnectionsModel[…] connections model - InputOutputResponse[{sys,ics},…] can be used to specify initial conditions ics.
- The input signal u can have the following forms:
-
{u1[t],…,up[t]} continuous-time signals ui[t] as functions of time t {{u11,…,u1k},…,{up1,…,upk}} discrete-time signal sequences {ui1,…,uik} {…,ui[t],…,{uj1,…,ujk},…} a combination of continuous- and discrete-time signals - The temporal specification tspec can have the following forms:
-
t compute the symbolic solution as a function of 
{t,0,tmax} compute the numeric or symbolic solution for 
- The property "prop" can have the following forms:
-
"Data" the InputOutputResponseData object "OutputResponse" output response as a list "OutputResponseAssociation" the output response as an association "PropertyAssociation" property names and values as an association "PropertyDataset" property names and values as a Dataset "StateResponse" state response as a list "StateResponseAssociation" state response as an association "SubsystemOutputResponse" output response of subsystems as a list "SubsystemOutputResponseAssociation" output response of subsystems as an association {p1,p2,…} values of properties pi - InputOutputResponse accepts a Method option that can take the following values:
-
"DSolve" DSolve "Integrate" Integrate "Iterate" iterate to get the solution "NDSolve" NDSolve "RecurrenceTable" RecurrenceTable "RSolve" RSolve "Sum" Sum - With Method{m,opt1val1,…}, method m is used with option opti set to value vali.
Examples
open all close allBasic Examples (4)
The unit step response of a second-order transfer-function model:
InputOutputResponse[TransferFunctionModel[{{{ω^2}}, s^2 +
2*s*ζ*ω + ω^2}, s], 1, t]//SimplifyThe impulse response of a mass-spring-damper system:
StateSpaceModel[m x''[t] + c x'[t] + k[t] == f[t], x[t], f[t], x[t], t];
InputOutputResponse[%, DiracDelta[t], t]The response of a 2-input, 1-output connections model:
InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{s}}, 1 + s}, s],
TransferFunctionModel[{{{1}}, 1 + s + s^2}, s], TransferFunctionModel[{{{1, 1}}, 1}, s],
TransferFunctionModel[{{{1}}, 1 + 0.1*s + s^2}, s]}, {{1, 1} -> {3, 1}, {2, 1} -> {3, 2},
{3, 1} -> {4, 1}}, {{1, 1}, {2, 1}}, {{4, 1}}], {-1, 3}, {t, 0, 100}]Plot[%, {t, 0, 100}, PlotRange -> All]Compute the result as a data object:
ℛ = InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{s}}, 1 + s}, s],
TransferFunctionModel[{{{1}}, 1 + s + s^2}, s], TransferFunctionModel[{{{1, 1}}, 1}, s],
TransferFunctionModel[{{{1}}, 1 + 0.1*s + s^2}, s]}, {{1, 1} -> {3, 1}, {2, 1} -> {3, 2},
{3, 1} -> {4, 1}}, {{1, 1}, {2, 1}}, {{4, 1}}], {-1, 3}, {t, 0, 100}, "Data"]ℛ["OutputResponse"]The output response of all subsystems:
ℛ["SubsystemOutputResponse"]ℛ["Properties"]Scope (31)
Basic Uses (9)
Simulate the response of a system to a unit-step input:
InputOutputResponse[TransferFunctionModel[{{{1}}, 1 + s}, s], UnitStep[t], {t, 0, 10}]Plot[%, {t, 0, 10}, PlotRange -> All]InputOutputResponse[TransferFunctionModel[{{{1}}, 1 + s}, s], UnitStep[t], t]//SimplifyPlot[%, {t, 0, 10}, PlotRange -> All]Compute the response of a state-space model:
InputOutputResponse[StateSpaceModel[{{{0, 1}, {-1, -5}}, {{0}, {1}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], UnitStep[t], t]//SimplifyPlot[%, {t, 0, 30}, PlotRange -> All]InputOutputResponse[StateSpaceModel[{{{0, 1}, {-1, -5}}, {{0}, {1}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], UnitStep[t], t, "StateResponse"]//SimplifyPlot[%, {t, 0, 30}, PlotRange -> All]InputOutputResponse[{StateSpaceModel[{{{0, 1}, {-1, -5}}, {{0}, {1}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], {2, 3}}, UnitStep[t], t, "StateResponse"]//SimplifyThe response starts from the specified values:
% /. t -> 0The response of a multiple-input system:
InputOutputResponse[StateSpaceModel[{{{0, 1, 0}, {-2, -3, 0}, {0, 0, -1}}, {{0, 0}, {1, 0}, {0, 1}}, {{0, 1, 1}},
{{0, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None], {UnitStep[t], Sin[t]}, t]If fewer signals are specified, default values that are usually 0 are chosen for the remaining inputs:
With[{ssm = StateSpaceModel[{{{0, 1, 0}, {-2, -3, 0}, {0, 0, -1}}, {{0, 0}, {1, 0}, {0, 1}}, {{0, 1, 1}},
{{0, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None]}, InputOutputResponse[ssm, UnitStep[t], t] == InputOutputResponse[ssm, {UnitStep[t], 0}, t]]For discrete-time systems, the input signal is a discrete sequence:
InputOutputResponse[StateSpaceModel[{{{-0.5}}, {{1}}, {{0.5}}, {{0}}}, SamplingPeriod -> 1, SystemsModelLabels -> None], Table[1, 10]]ListStepPlot[%, DataRange -> {0, 9}]An input sequence can be generated from a time specification:
InputOutputResponse[StateSpaceModel[{{{-0.5}}, {{1}}, {{0.5}}, {{0}}}, SamplingPeriod -> 1, SystemsModelLabels -> None], 1, {t, 0, 9}]The input sequence is generated taking the sampling period of the system into consideration:
InputOutputResponse[StateSpaceModel[{{{-0.5}}, {{1}}, {{0.5}}, {{0}}}, SamplingPeriod -> 0.25], Sin[t], {t, 0, 5}]Specifying the input sequence directly gives the same result:
InputOutputResponse[StateSpaceModel[{{{-0.5}}, {{1}}, {{0.5}}, {{0}}}, SamplingPeriod -> 0.25], Table[Sin[t], {t, 0, 5, 0.25}]]AllTrue[%[[1]] - %%[[1]], # == 0.&]Models (11)
The response of a transfer-function model to a sinusoid:
InputOutputResponse[TransferFunctionModel[{{{1}}, 1 + s}, s], Sin[t], t]InputOutputResponse[TransferFunctionModel[{{{1}}, 1 + s}, s], Sin[t], {t, 0, 5}]Plot[{%, %%}, {t, 0, 5}]The response of a state-space model to a unit-step input:
InputOutputResponse[StateSpaceModel[{{{0, 1}, {-100, -2}}, {{0}, {1}}, {{-100, -2}}, {{1}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], 1, {t, 0, 5}]Plot[%, {t, 0, 5}, PlotRange -> All]The response of a delay model to a sinusoid:
InputOutputResponse[StateSpaceModel[{{{0, -12}, {1, -7}}, {{SystemsModelDelay[δ]}, {0}}, {{1, 0}},
{{0}}}, SamplingPeriod -> None, SystemsModelLabels -> None] /. δ -> 2, Sin[t], {t, 0, 10}]The response of the system with no delays:
InputOutputResponse[StateSpaceModel[{{{0, -12}, {1, -7}}, {{SystemsModelDelay[δ]}, {0}}, {{1, 0}},
{{0}}}, SamplingPeriod -> None, SystemsModelLabels -> None] /. δ -> 0, Sin[t], {t, 0, 10}]Plot[{%, %%}, {t, 0, 10}, PlotRange -> All, PlotLegends -> {δ == 0, δ == 2}]The response of a descriptor model to a unit-step input:
InputOutputResponse[StateSpaceModel[{{{-1, 0, 0}, {0, 1, 0}, {0, 0, 1}}, {{-3}, {1}, {3}}, {{1, 0, -1}}, {{0}},
{{1, 0, 0}, {0, 0, 0}, {0, 1, 0}}}, SamplingPeriod -> None, SystemsModelLabels -> None], 1, {t, 0, 6}]Plot[%, {t, 0, 6}]The response of an affine state-space model:
InputOutputResponse[AffineStateSpaceModel[{{-Subscript[x, 2],
Sin[Subscript[x, 1]*Subscript[x, 2]] + Subscript[x, 1] -
Subscript[x, 2]}, {{1}, {Subscript[x, 1]}},
{Subscript[x, 2]}, {{0}}}, {Subscript[x, 1],
Subscript[x, 2]}, Automatic, {Automatic}, Automatic, SamplingPeriod -> None], 1, {t, 0, 20}]Plot[%, {t, 0, 20}, PlotRange -> All]A nonlinear state-space model:
InputOutputResponse[NonlinearStateSpaceModel[{{Subscript[x, 2],
(u - 2*Subscript[x, 1] - Subscript[x, 1]^2 -
Subscript[x, 2])/(2 + Subscript[x, 1])},
{Subscript[x, 1]}}, {Subscript[x, 1], Subscript[x, 2]},
{u}, {Automatic}, Automatic, SamplingPeriod -> None], 1, {t, 0, 25}]Plot[%, {t, 0, 25}, PlotRange -> All]A discrete input-output model:
InputOutputResponse[DiscreteInputOutputModel[Association["SampledSeries" -> TemporalData[TimeSeries,
{{{{u[0]}, {u[1]}, {u[2] - y[0]}}}, {{0, 2, 1}}, 1, {"Discrete", 1}, {"Discrete", 1}, {1},
{MissingDataMethod -> None, ResamplingMethod -> {"Interpolation", ... ime", "LastValue", "OutputCount", "OutputVariables", "Path",
"PathComponent", "PathComponents", "PathFunction", "PathLength", "SamplingPeriod", "StateCount",
"TemporalData", "TimePath", "Times", "TimeSeries", "TimeValues", "Type", "Values"}], Table[Sin[t], {t, 0, 4π, 0.1}]];ListStepPlot[%]InputOutputResponse[SamplerModel[Association["DiscreteVariables" -> {Subscript[, 1][]},
"InputVariables" -> {Subscript[, 1][]}, "OutputVariables" -> {Subscript[, 1][]},
"InitialStateValues" -> {}, "TemporalVariable" -> , "WhenEvent" -> Mod[, 1] == 0,
... ent", "WhenEventAction", "StateEquations",
"OutputExpressions", "SignalCount", "Type", "PropertyFunction", "SamplingPeriod",
"SummaryItems"}], {"InputVariables", "OutputVariables", "SamplingPeriod", "SignalCount",
"TemporalVariable"}], Sinc[t], {t, 0, 20}]Plot[{%[[1]], Sinc[t]}, {t, 0, 20}, PlotRange -> All]InputOutputResponse[HolderModel[Association["DiscreteVariables" -> {Subscript[, 1][]},
"InputVariables" -> {Subscript[, 1][]}, "OutputVariables" -> {Subscript[, 1][]},
"InitialStateValues" -> {}, "TemporalVariable" -> , "WhenEvent" -> Mod[, 1] == 0,
" ... tion", "StateEquations",
"OutputExpressions", "SignalCount", "Type", "PropertyFunction", "Order", "SamplingPeriod",
"SummaryItems"}], {"InputVariables", "Order", "OutputVariables", "SamplingPeriod",
"SignalCount", "TemporalVariable"}], Table[Cos[t], {t, 0, 3π}]]Show[Plot[%, {, 0, 3π}], ListPlot[Table[{t, Cos[t]}, {t, 0, 3π}], IconizedObject[«opts»]]]InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{8}}, 8 + Control`LQDesignDump`s},
Control`LQDesignDump`s], StateSpaceModel[{{{0, 1}, {-26, -2}}, {{0}, {1}}, {{26, 0}}, {{0}}}]},
{{1, 1} -> {2, 1}}, {{1, 1}}, {{2, 1}}], 1, {t, 0, 10}]Plot[%, {t, 0, 10}, PlotRange -> All]Obtain the responses of the subsystems of a sampled data system:
subOR = InputOutputResponse[SystemsConnectionsModel[{SamplerModel[Association["DiscreteVariables" -> {Subscript[, 1][]},
"InputVariables" -> {Subscript[, 1][]}, "OutputVariables" -> {Subscript[, 1][]},
"InitialStateValues" -> {}, "TemporalVariable" -> , "When ... Period", "SignalCount",
"TemporalVariable"}], TransferFunctionModel[{{{1}}, 1}, z, SamplingPeriod -> 0.5]},
{{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {4, 1}, {4, 1} -> {5, 1}, {5, 1} -> {6, 1},
{6, 1} -> {2, 2}}, {{1, 1}}, {{4, 1}}], Sin[t], {t, 0, 10}, "SubsystemOutputResponse"];
Short[subOR]Legended[MapIndexed[Plot[#, {t, 0, 10}, PlotStyle -> ColorData[116, #2[[1]]]]&, subOR], LineLegend[ColorData[116, "ColorList"][[1 ;; 6]], Range[6]]]Properties (11)
InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, s],
TransferFunctionModel[{{{3}}, 3 + s}, s], TransferFunctionModel[{{{7}}, 7 + s}, s]},
{{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {1, 2}}, {{1, 1}}, {{2, 1}}], 1, {t, 0, 3}, "StateResponse"]InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, s],
TransferFunctionModel[{{{3}}, 3 + s}, s], TransferFunctionModel[{{{7}}, 7 + s}, s]},
{{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {1, 2}}, {{1, 1}}, {{2, 1}}], 1, {t, 0, 10}, {"StateResponse", "SubsystemOutputResponse"}]Compute the data object first:
ℛ = InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, s],
TransferFunctionModel[{{{3}}, 3 + s}, s], TransferFunctionModel[{{{7}}, 7 + s}, s]},
{{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {1, 2}}, {{1, 1}}, {{2, 1}}], 1, {t, 0, 10}, "Data"]Obtain properties from the data object:
ℛ["StateResponse"]ℛ["Properties"]Obtain all properties as an association:
InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, s],
TransferFunctionModel[{{{3}}, 3 + s}, s], TransferFunctionModel[{{{7}}, 7 + s}, s]},
{{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {1, 2}}, {{1, 1}}, {{2, 1}}], 1, {t, 0, 10}, "PropertyAssociation"]Obtain all properties as a dataset:
InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, s],
TransferFunctionModel[{{{3}}, 3 + s}, s], TransferFunctionModel[{{{7}}, 7 + s}, s]},
{{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {1, 2}}, {{1, 1}}, {{2, 1}}], 1, {t, 0, 10}, "PropertyDataset"]InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
TransferFunctionModel[{{{30}}, 10 + Control`LQDesignDump`s}, Control`LQDesignDump`s],
TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
Tr ... ump`s}, Control`LQDesignDump`s], TransferFunctionModel[{{{5}}, 1},
Control`LQDesignDump`s]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {4, 1},
{4, 1} -> {5, 1}, {5, 1} -> {3, 2}, {4, 1} -> {6, 1}, {6, 1} -> {1, 2}}, {{1, 1}}, {{4, 1}}], 1, {t, 0, 10}, "StateResponse"]The state response as an association:
InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
TransferFunctionModel[{{{30}}, 10 + Control`LQDesignDump`s}, Control`LQDesignDump`s],
TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
Tr ... ump`s}, Control`LQDesignDump`s], TransferFunctionModel[{{{5}}, 1},
Control`LQDesignDump`s]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {4, 1},
{4, 1} -> {5, 1}, {5, 1} -> {3, 2}, {4, 1} -> {6, 1}, {6, 1} -> {1, 2}}, {{1, 1}}, {{4, 1}}], 1, {t, 0, 10}, "StateResponseAssociation"]Obtain the state response of the fourth subsystem:
%[4]InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
TransferFunctionModel[{{{30}}, 10 + Control`LQDesignDump`s}, Control`LQDesignDump`s],
TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
Tr ... ump`s}, Control`LQDesignDump`s], TransferFunctionModel[{{{5}}, 1},
Control`LQDesignDump`s]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {4, 1},
{4, 1} -> {5, 1}, {5, 1} -> {3, 2}, {4, 1} -> {6, 1}, {6, 1} -> {1, 2}}, {{1, 1}}, {{4, 1}}], 1, {t, 0, 10}, "OutputResponse"]The output response as an association:
InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
TransferFunctionModel[{{{30}}, 10 + Control`LQDesignDump`s}, Control`LQDesignDump`s],
TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
Tr ... ump`s}, Control`LQDesignDump`s], TransferFunctionModel[{{{5}}, 1},
Control`LQDesignDump`s]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {4, 1},
{4, 1} -> {5, 1}, {5, 1} -> {3, 2}, {4, 1} -> {6, 1}, {6, 1} -> {1, 2}}, {{1, 1}}, {{4, 1}}], 1, {t, 0, 10}, "OutputResponseAssociation"]The output response of the subsystems:
InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
TransferFunctionModel[{{{30}}, 10 + Control`LQDesignDump`s}, Control`LQDesignDump`s],
TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
Tr ... ump`s}, Control`LQDesignDump`s], TransferFunctionModel[{{{5}}, 1},
Control`LQDesignDump`s]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {4, 1},
{4, 1} -> {5, 1}, {5, 1} -> {3, 2}, {4, 1} -> {6, 1}, {6, 1} -> {1, 2}}, {{1, 1}}, {{4, 1}}], 1, {t, 0, 10}, "SubsystemOutputResponse"]The output response of the subsystems as an association:
InputOutputResponse[SystemsConnectionsModel[{TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
TransferFunctionModel[{{{30}}, 10 + Control`LQDesignDump`s}, Control`LQDesignDump`s],
TransferFunctionModel[{{{1, -1}}, 1}, Control`LQDesignDump`s],
Tr ... ump`s}, Control`LQDesignDump`s], TransferFunctionModel[{{{5}}, 1},
Control`LQDesignDump`s]}, {{1, 1} -> {2, 1}, {2, 1} -> {3, 1}, {3, 1} -> {4, 1},
{4, 1} -> {5, 1}, {5, 1} -> {3, 2}, {4, 1} -> {6, 1}, {6, 1} -> {1, 2}}, {{1, 1}}, {{4, 1}}], 1, {t, 0, 10}, "SubsystemOutputResponseAssociation"]The outputs of the fifth subsystem:
%[5]Properties & Relations (2)
Superposition principle for linear systems:
sys = TransferFunctionModel[(3s/s^2 + 2s + 3), s]The additive property states that the response to a sum of inputs is the same as the sum of the responses to individual inputs:
inps = {Sin[t], 1};InputOutputResponse[sys, Total[inps], t] - Total[Table[InputOutputResponse[sys, i, t], {i, inps}]]//SimplifyThe homogeneity property states that the response to an input multiplied by a scalar is the same as the response multiplied by the same scalar:
inp = Exp[-t];InputOutputResponse[sys, c inp, t] - c InputOutputResponse[sys, inp, t]//SimplifyThe sinusoidal responses of linear systems can be seen in a Bode plot:
tfm = TransferFunctionModel[{{{162}}, 2*(81 + s/2 + s^2)}, s];The response of the system to an input signal of frequency
:
Subscript[f, 1] = 1;
Short[Subscript[r, 1] = InputOutputResponse[tfm, Sin[Subscript[f, 1]t], t][[1]]]After the transients are gone, the response is essentially identical to the input signal:
Plot[{Sin[Subscript[f, 1]t], Subscript[r, 1]}, {t, 19, 25}, PlotRange -> All]The gain is 1 and the phase lead is 0:
{Subscript[m, 1], Subscript[p, 1]} = {1, 0};The response of the system to an input signal of frequency
:
Subscript[f, 2] = 20;
Short[Subscript[r, 2] = InputOutputResponse[tfm, Sin[Subscript[f, 2]t], t][[1]]]After the transients are gone, the response is another pure sinusoid:
Plot[{Sin[Subscript[f, 2 ]t], Subscript[r, 2]}, {t, 19.5, 20}, PlotRange -> All]Compute a time instance when the response peaks:
Subscript[sol, 2] = NSolve[D[Subscript[r, 2], t] == 0 && D[Subscript[r, 2], {t, 2}] < 0 && 19.5 < t < 20, t][[1]]Subscript[m, 2] = Subscript[r, 2] /. Subscript[sol, 2]Compute a time instance when the input signal peaks:
Subscript[sol, i] = NSolve[D[Sin[Subscript[f, 2]t], t] == 0 && D[Sin[Subscript[f, 2]t], {t, 2}] < 0 && 19.5 < t < (t /. Subscript[sol, 2]), t][[1]]Subscript[p, 2] = (((t /. Subscript[sol, i]) - (t /. Subscript[sol, 2]))/1 / Subscript[f, 2])Points on the Bode magnitude plot for the two input sinusoids:
epM = {PointSize[Medium], Red, Point[{Log10[Subscript[f, 1]], 20 Log10[Subscript[m, 1]]}], Point[{Log10[Subscript[f, 2]], 20 Log10[Subscript[m, 2]]}]}Points on the Bode phase plot for the two input sinusoids:
epP = {PointSize[Medium], Red, Point[{Log10[Subscript[f, 1]], Subscript[p, 1]}], Point[{Log10[Subscript[f, 2]], Subscript[p, 2] / Degree}]}BodePlot[tfm, Epilog -> {epM, epP}, PlotLayout -> "HorizontalGrid", ImageSize -> Small]Related Guides
History
Text
Wolfram Research (2024), InputOutputResponse, Wolfram Language function, https://reference.wolfram.com/language/ref/InputOutputResponse.html.
CMS
Wolfram Language. 2024. "InputOutputResponse." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/InputOutputResponse.html.
APA
Wolfram Language. (2024). InputOutputResponse. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/InputOutputResponse.html
BibTeX
@misc{reference.wolfram_2026_inputoutputresponse, author="Wolfram Research", title="{InputOutputResponse}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/InputOutputResponse.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_inputoutputresponse, organization={Wolfram Research}, title={InputOutputResponse}, year={2024}, url={https://reference.wolfram.com/language/ref/InputOutputResponse.html}, note=[Accessed: 13-June-2026]}