home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Education Sampler 1992 [NeXTSTEP]
/
Education_1992_Sampler.iso
/
Mathematics
/
Notebooks
/
COSY_PAK
/
COSYPAK
/
chap4.m
< prev
next >
Wrap
Text File
|
1992-06-01
|
2KB
|
76 lines
(*
**********************************************************
COSY_PAK package chap4.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`chap4`"]
Routh::usage = " ";
Begin["`Private`"]
Routh[charpoly_,s_,z_:zero] :=
Module[{Clist,ncoeff,list1,list2,Routhtable,nnn,temp,jj,i,first,k},
Clist = Reverse[CoefficientList[charpoly,s]];
ncoeff = Length[Clist];
nnn = ncoeff;
If[OddQ[ncoeff], ncoeff = ncoeff +1; (* make Coefflist to be *)
AppendTo[Clist,0]]; (* even number *)
list1 = {}; list2= {}; Routhtable = {};
Do[ AppendTo[list1,Clist[[2 k -1]]],{k,1,ncoeff/2}];
Do[ AppendTo[list2,Clist[[2 k]]],{k,1,ncoeff/2}];
If[list2[[1]] == 0 , list2[[1]] = z ];
Routhtable = Join[{list1},{list2}];
For[jj = nnn -2, jj > 0 , jj--,
temp={};
Do[elm=Simplify[(list2[[1]] list1[[i+1]]-list1[[1]] list2[[i+1]])/
list2[[1]] ];
If[ (i == 1) && Abs[elm] < 0.00001 , elm= z ];
AppendTo[temp,elm],
{i,1,ncoeff/2 - 1}];
AppendTo[temp,0];
Routhtable = Append[Routhtable,temp];
list1 = list2; list2 = temp
];
first = Table[Routhtable[[i,1]],{i,1,Length[Routhtable]}];
Print["The Routh's Table:"];
Print[" "];
Print[MatrixForm[Routhtable]];
Print[" "];
Print["The first column of the Routh's table is: "];
Print[" "];
Print[ first ];
Print[" "];
Do[ If[first[[i]] < 0, Print["Sign Change!! Unstable root(s) exist."]],
{i,1,Length[first]}];
Return[Routhtable]
]/;PolynomialQ[charpoly,s]
End[];
EndPackage[];
(* E N D P A C K A G E *)
If [ TrueQ[ $VersionNumber >= 2.0 ],
On[ General::spell ];
On[ General::spell1 ] ]