Problem: Obtain unit step response of the second order system given by the transfer function \[ H\left ( s\right ) =\frac {\omega _{n}^{2}}{s^{2}+2\xi \omega _{n}s+\omega _{n}^{2}}\] in order to illustrate the response when the system is over, under, and critically damped. use \(\omega _{n}=1\) and change \(\xi \) over a range of values that extends from under damped to over damped.
Mathematica
Clear["Global`*"]; Needs["PlotLegends`"] sys=TransferFunctionModel[w^2/(s^2+2*z*w*s+w^2),s]; zValues = Range[.2,1.2,.2]; fun = OutputResponse[sys/.{w->1,z->#}, UnitStep[t], {t,0,20}]&/@zValues; Plot[Evaluate@Flatten@Table[fun[[i]], {i,1,Length[fun]}], {t,0,20}, Frame->True, FrameLabel->{{"y(t)",None}, {"t","step response for different \[Xi] values"}}, PlotRange->{{0,20},{0,1.6}}, GridLines->Automatic, GridLinesStyle->Dashed, PlotLegend->zValues, LegendPosition->{0.76,-0.5},LegendSize -> 1, LegendLabel -> "\[Xi] values", ImageSize -> 450, LabelStyle -> 14,AspectRatio -> 1 ]
Matlab
clear; close all; wn = 1; z = .2:.2:1.2; t = 0:0.05:20; y = zeros(length(t),length(z)); legendStr = cell(length(z),1); for i = 1:length(z) [num,den] = ord2(wn,z(i)); num = num*wn^2; [y(:,i),~,~] = step(num,den,t); legendStr(i) = {sprintf('%1.1f',z(i))}; end plot(t,y); legend(legendStr); title(sprintf( '2nd order system step response with changing %s', '\zeta')); xlabel('time (sec)'); ylabel('amplitude'); grid on; set(gcf,'Position',[10,10,400,400]);
Maple
restart; alias(DS=DynamicSystems): H := (w,zeta)->w^2/(s^2+2*zeta*w*s+w^2): sys := (w,zeta)->DS:-TransferFunction(H(w,zeta)): zetaValues := [seq(i,i=0.1..1.2,.2)]: sol:=map(z->DS:-Simulate(sys(1,z), Heaviside(t)),zetaValues): c :=ColorTools:-GetPalette("Niagara"): plots:-display(seq(plots[odeplot] (sol[i],t=0..20,color=c[i], legend=typeset(zeta,"=",zetaValues[i]), legendstyle=[location=right]), i=1..nops(zetaValues)), gridlines=true, title="step response for different damping ratios", labels=[typeset(t),typeset(y(t))]);
Instead of using Simulate as above, another option is to use ResponsePlot
which gives same
plot as above.
restart; alias(DS=DynamicSystems): c:=ColorTools:-GetPalette("Niagara"): H:=(w,zeta)->w^2/(s^2+2*zeta*w*s+w^2): sys:= (w,zeta)-> DS:-TransferFunction(H(w,zeta)): zetaValues := [seq(i,i=0.1..1.2,.2)]: sol:=map(i->DS:-ResponsePlot(sys(1,zetaValues[i]), Heaviside(t), duration=14, color=c[i], legend=typeset(zeta,"=",zetaValues[i]), legendstyle=[location=right] ), [seq(i,i=1..nops(zetaValues))] ): plots:-display(sol,gridlines=true, title="step response for different damping ratios", labels=[typeset(t),typeset(y(t))] );