canonical form of matrix pencil
[Q,M,i1]=pencan(Fs)
[Q,M,i1]=pencan(E,A)
:Fs a regular pencil s*E-A : :E,A two real square matrices : :Q,M two non-singular real matrices : :i1 integer :
Given the regular pencil Fs=s*E-A, pencan returns matrices Q and M such than M*(s*E-A)*Q is in “canonical” form.
M*E*Q is a block matrix
[I,0;
0,N]
with N nilpotent and i1 = size of the I matrix above.
M*A*Q is a block matrix:
[Ar,0;
0,I]
F=`randpencil`_([],[1,2],[1,2,3],[]);
F=`rand`_(6,6)*F*`rand`_(6,6);
[Q,M,i1]=pencan(F);
W=`clean`_(M*F*Q)
`roots`_(`det`_(W(1:i1,1:i1)))
`det`_(W($-2:$,$-2:$))