This is chap3.m in view mode; [Download] [Up]
(*
**********************************************************
COSY_PAK package chap3.m
**********************************************************
*)
If [ TrueQ[ $VersionNumber >= 2.0 ],
Off[ General::spell ];
Off[ General::spell1 ] ]
(* B E G I N P A C K A G E *)
BeginPackage["COSYPAK`chap3`",,"SignalProcessing`Support`SigProc`",
"SignalProcessing`Analog`LaPlace`",
"SignalProcessing`Analog`InvLaPlace`"]
Response::usage = "Response[ transf, Input, s, {TimeVar, StartTime, EndTime}, gopts]: Plots the output of transfer function `transf' with Laplace input signal `Input'. The Laplace variable is `s'. The output graph uses the variable `TimeVar' and starts at `StartTime' and ends at `EndTime'. Returns the output variable as a function of time `t'.";
SecOrder::usage = "SecOrder[zeta, wn, t]: Gives the unit step response value at time instant t for a standard second order system wn2/(s2 + 2z wn s + wn2) with the damping ratio z=zeta and natural frequency wn =wn. Returns instantaneous value of the step response output variable at time instant `t'.";
Begin["`Private`"]
SecOrder/:SecOrder[damp_,wn_,t_]:=
Module[{wd},wd = wn Sqrt[1-damp^2];
1-E^(-damp wn t) (Cos[wd t]+damp/Sqrt[1-damp^2] Sin[wd t])]/;
0 <= damp < 1
SecOrder/:SecOrder[damp_,wn_,t_]:= 1 - E^(-wn t)( 1 + wn t)/;
Abs[damp - 1] < 0.0001
SecOrder/:SecOrder[damp_,wn_,t_]:=
Module[{s1,s2,temp}, temp = Sqrt[damp^2 -1];
s1 = (damp + temp) wn ;
s2 = (damp - temp) wn ;
y = 1 + wn/2/temp ( (E^(-s1 t))/s1 - (E^(-s2 t))/s2)
]/;damp > 1
(*
*)
Response[transf_,input_,s_,{t_,tmin_,tmax_},opts___] :=
Module[{outputlp ,output,inputfunc},
outputlp = transf input;
output = InvLaPlace[outputlp,s,t,Dialogue->False,Apart->All];
output = Simplify[ComplexExpand[output]];
inputfunc = InvLaPlace[input,s,t,Dialogue->False,Apart->All];
inputfunc = Simplify[ComplexExpand[inputfunc]];
(* Apply SignalPlot to plot output in solid line and
inputfunc in dash line *)
SignalPlot[output + inputfunc I,{t,tmin,tmax},
FrameLabel->{"Time","Y(t)","Time Response of G(s) "," "},
Frame->True,PlotRange -> All,GridLines->Automatic,
FrameTicks -> {Automatic, Automatic,Automatic, Automatic},
opts];
Return[output]
]/; tmin < tmax
End[];
EndPackage[];
(* E N D P A C K A G E *)
If [ TrueQ[ $VersionNumber >= 2.0 ],
On[ General::spell ];
On[ General::spell1 ] ]
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.