Triangulate a system of 0eigenvectors
mc_chains_triangulate.Rd
Triangulate a system of 0eigenchains.
Details
mc_chains_triangulate
triangulates a set of chains to make it easier
to extend 0chains.
chains
is a list of chains for the 0 eigenvalue of
an mcmatrix. Each chain is represented by a matrix with the eigenvector
in the first column.
For a multi-companion matrix the maximum number of chains for an
eigenvalue is mo
.
Only the last mo
elements of eigenvectors of mc matrices
corresponding to the zero eigenvalue may be non-zero.
mc_chains_triangulate
triangulates the eigenvectors in the following
sense. Let \(i_1\) be the first non-zero element of the first
eigenvector. Then the elements in position \(i_1\) of the remaining
eigenvectors are made equal to zero by adding to them a multiple of
the first eigenvector. The corresponding transformation is done on
the remaining elements of the chains so that they remain proper
chains. Then the position, \(i_2\), of the first non-zero element of
the second eigenvector is found and the elements of the third and the
following eigenvectors at that position are made zero by adding to them a
multiple of the second eigenvector. The process is repeated until the
last eigenvector is reached.
If mo
is 4 and there are 4 chains, for example, then the above
procedure will typically transform the bottom \(4\times4\) block of the
matrix obtained from the 4 eigenvectors into a lower triangular
matrix. If there are zero elements in the original bottom
\(4\times4\) block, then the result will not be a lower triangular
matrix but the shape will be equivalent for the purposes of extending
the eigenvectors.
todo: describe the above precisely in a separate document, vzh. rakopisnite belezhki za izpolzvaniya algoritam.
todo: it is probably worth to do this somewhat more elaborately for numerical stability.
todo: This function is not specific to zero eigenchains. It can be used to put in canonic order any other eigenchain (but check). Change the name?
todo: strictly speaking, for canonical order more is needed when there are chains with the same heights.
See also
mc_0chains
which call this function.