2

enter image description here

It shoud approach to 1 and remains at 1, but when time over 20s it deteriorates.

Mathematica 12.1

Plot[OutputResponse[    Rationalize[
    TransferFunctionModel[
     Unevaluated[{{(0.045 (0.005 + s) (1 + 10. s))/(
       s^3 (1 + (0.09 (0.005 + s) (1 + 10. s))/(s^3 (2 + s))))}}], s, 
     SamplingPeriod ->None, SystemsModelLabels -> None]], UnitStep[t],
    t] // Evaluate, {t, 0, 40}]
xzczd
  • 65,995
  • 9
  • 163
  • 468
eason
  • 197
  • 5

1 Answers1

3

One way is:

f = (0.045*(0.005 + s)*(1 + 10. s))/(s^3 (1 + (0.09*(0.005 + s)*(1 + 10. s))/(s^3*(2 + s))));

g = OutputResponse[TransferFunctionModel[{{f}}, s], UnitStep[t], {t, 0, 40}]

Plot[g, {t, 0, 40}, PlotRange -> All]

Workaround:

sys = Rationalize[(0.045*(0.005 + s)*(1 + 
     10. s))/(s^3 (1 + (0.09*(0.005 + s)*(1 + 10. s))/(s^3*(2 + 
          s)))), 0] // Factor // ExpandAll

u = UnitStep[t]; func = InverseLaplaceTransform[sys*LaplaceTransform[u, t, s], s, t];

Plot[func, {t, 0, 40}, PlotRange -> All]

Mariusz Iwaniuk
  • 13,841
  • 1
  • 25
  • 41
  • "OutputResponse can't be calculated analytically is very complex. Only way is by numerics." No, in this case it can. (Takes about 50 seconds on my laptop. ) We then just need a higher WorkingPrecision. Of course pure numeric approach shown by you is better. – xzczd May 31 '21 at 15:38