Don't miss this thin book on the the Jordan Canonical Form (JCF). But, beware. It is full of typos and plagued with an army of bizarre acronyms (lESP, BDBUTCD...) and heavy abbreviations, as "alg mult(lambda)" instead of "multiplicity of lambda". And it has no bibliography, nor does it mention other methods to obtain the JCF. But, anyway, this monograph is an useful tool, in a world crowded with too many books on Linear Algebra, most dealing with JCF in a hurry. This one is not that kind, and I recommend it. It is written in a simple and down to earth style. The JCF J(A) of a complex square matrix A always exists, it is either diagonal, or the sum of a diagonal matrix D (with the eigenvalues of A as the elements D_(i,i)) and a nilpotent matrix N, (with every component null, excepting N_(i,i+1) = 1 or 0). The link between A and J(A) is a (non unique) regular matrix P such that AP=PJ(A). There is a well-known method to obtain J(A), (see Smale-Hirsch's book Differential Equations, Dynamical Systems, and Linear Algebra (Pure and Applied Mathematics (Academic Press), 60.)). It is well-known (but not mentioned) that the JCF of a real matrix A is needed to express the general solution of the differential equation x'=Ax, which is x(t)=Real[Pexp(tJ(A))w], (where w is an arbitray complex vector and where Real[u+iv]=u, for a complex vector z=u+iv). The exponential exp(tJ(A)) is not hard to compute; the true difficulty is to find the matrix P. In the general case, that's equivalent to obtain a good basis in the complex vector space V, where A acts on; P is then the change of bases matrix. To get such a holy basis, we must express V as a sum af cyclic sub-spaces and then collect the so called cyclic bases on them (each "Jordan cell" in J(A) corresponds to such a cyclic basis). Abstract algebra texts (like those by N. Jacobson or P. M. Cohn) dedicate only a formal attention to this question, considering the case of an operator A on a suitable module V with coefficients on a principal ideal domain (like Z or R[x]). And the classic treatises I once studied, (like Lang's Algebra, Birkhoff-MacLane's A Survey of Modern Algebra (Akp Classics), or Herstein's Topics in Algebra), do not give a clear algorithmic procedure to obtain such a basis on V. Happily, this work does exactly that. However, it skips explaining the JCF when A is nilpotent; nor does it speak of cyclic bases and cyclic sub-spaces, taking care only of the algorithm and missing the opportunity to give a complete picture of the subject. In the positive side: there are many worked examples and 60 exercises (half of them solved). An updated, but shorter exposition of the algorithm, by the same author, is Weintraub's A Guide to Advanced Linear Algebra (Dolciani Mathematical Expositions). While there are less typos, no further improvemement have I noticed, excepting two additional worked examples.
Other books where the method to obtain P is quite well explained are: Hoffman-Kunze's Linear Algebra (2nd Edition); S. Lipschutz's Schaum's Outline of Linear Algebra Fourth Edition (Schaum's Outline Series); Hefferon's Linear Algebra and Pontrjagin's Ordinary Differential Equations.