Engineering/Mathematics/Eigenvalues
Diagonalization
A square matrix is diagonalisable when a change of basis turns it into a diagonal matrix, and the new basis is built entirely from its eigenvectors. The test is arithmetic: every eigenvalue must supply as many independent eigenvectors as its multiplicity in the characteristic polynomial demands.
- Advanced level
- Stream: similarity
- Reading time 16 min
- Ref KVS-ENG-MATH-0088
- Taxonomy
- Engineering / Mathematics
- Prerequisite
- Eigenvalues, eigenspaces, similar matrices
- Test
- for every eigenvalue
- Sufficient condition
- distinct eigenvalues
- Payoff
- — powers, exponentials, decoupled modes
- Fails when
- An eigenvalue is defective (too few independent eigenvectors)
Overview
Similarity lets a matrix be rewritten in a different basis without disturbing its eigenvalues, its determinant, its rank or its characteristic polynomial. The natural question is how simple a form can be reached. Diagonalization answers it for the best case: a matrix is diagonalisable when some invertible makes diagonal, at which point every off-diagonal coupling has been removed and the remaining diagonal entries are precisely the eigenvalues of .
The characterisation is constructive rather than existential. of size is diagonalisable if and only if has a basis made entirely of eigenvectors of . Placing those eigenvectors in the columns of , in any order, produces the diagonalising matrix directly, and the eigenvalues appear on the diagonal in that same order. There is no search and no iteration — the eigenvectors are the answer.
Whether such a basis exists is decided by a count. Each eigenvalue carries an algebraic multiplicity , its multiplicity as a root of the characteristic polynomial, and a geometric multiplicity , the dimension of its eigenspace. The geometric multiplicity never exceeds the algebraic one. Diagonalisability holds exactly when the two agree for every eigenvalue, because only then do the eigenspaces contribute enough independent directions to fill the whole space.
The engineering value is that a diagonal matrix acts independently on each coordinate. Powers, exponentials, inverses and polynomials of a diagonalisable matrix reduce to the same operation applied to scalars. A coupled linear recurrence or a coupled system of ordinary differential equations becomes uncoupled scalar problems, solved in closed form, then recombined. That decoupling is the whole reason modal analysis, principal component analysis and stability classification of linear systems are practical.
Definition
Diagonal Matrix
DIMA square matrix is diagonal when every entry off the main diagonal is zero, that is whenever . The diagonal entries themselves are unrestricted and may be zero. Writing fixes the whole matrix with numbers instead of .
A diagonal matrix is simultaneously upper triangular and lower triangular, so its eigenvalues are its diagonal entries and its determinant is their product.
Diagonalisable Matrix
DZMA square matrix is diagonalisable when it is similar to a diagonal matrix — that is, when there exists a non-singular matrix of the same size and a diagonal matrix with . The pair is a diagonalisation of ; it is never unique, since reordering the columns of permutes the diagonal of correspondingly.
Diagonalisability is a property of the matrix, not of any particular . Because similarity is an equivalence relation, every matrix similar to a diagonalisable matrix is itself diagonalisable.
Defective Matrix
DFMA square matrix is defective when at least one eigenvalue satisfies , so that eigenvalue supplies fewer independent eigenvectors than its algebraic multiplicity. A matrix is diagonalisable precisely when it is not defective. The shortfall is the defect at , and it is exactly the number of generalised eigenvectors that must be recruited to complete a basis.
Concepts
The eigenvector-basis characterisation
The central theorem states that a square matrix of size is diagonalisable if and only if there exists a linearly independent set of eigenvectors of . The reverse direction is the construction: given independent eigenvectors for eigenvalues , form . Then has columns , which is precisely with its -th column scaled by , so . Independence makes non-singular, and multiplying on the left by gives . The proof is therefore an algorithm: locate independent eigenvectors and the diagonalisation writes itself.
The forward direction reads eigenvectors off the columns
The converse argument runs the same computation backwards. Suppose with diagonal and non-singular. Then , and comparing columns gives for each column of . Because is non-singular no column is the zero vector, so each column genuinely is an eigenvector, and the columns of a non-singular matrix form a linearly independent set. A diagonalisation therefore is an eigenvector basis, written in matrix form. Nothing else can diagonalise a matrix.
The multiplicity criterion
Counting eigenvectors directly is awkward, so the practical test is stated in multiplicities: is diagonalisable if and only if for every eigenvalue of . The forward implication uses the fact that algebraic multiplicities sum to while the eigenvectors drawn from each eigenspace can never exceed its dimension; if one eigenvalue is deficient the total falls short of and no basis of eigenvectors exists. The reverse implication needs the theorem that eigenvectors belonging to distinct eigenvalues are linearly independent, which lets bases of the individual eigenspaces be concatenated into one independent set of size .
Distinct eigenvalues force diagonalisability
If a matrix of size has distinct eigenvalues then every algebraic multiplicity equals . Since always holds, every geometric multiplicity is forced to as well, the multiplicity criterion is satisfied automatically, and the matrix is diagonalisable. This is a sufficient condition only. Plenty of diagonalisable matrices have repeated eigenvalues — the identity matrix is the extreme case, already diagonal with one eigenvalue of multiplicity — so a repeated root is a prompt to compute an eigenspace dimension, not a verdict.
Powers, polynomials and functions of a matrix
Write . Then , and by induction for every non-negative integer . Because is diagonal with entries , a power that would otherwise cost matrix products collapses to scalar powers plus two matrix products. The same substitution defines any function of the matrix: for a polynomial , with applied entrywise on the diagonal, and the matrix exponential follows by the same route. This is where diagonalisation earns its keep in dynamics.
Not every matrix is diagonalisable
Consider with characteristic polynomial whose eigenspace for has dimension . Then while , the multiplicity criterion fails, and is not similar to any diagonal matrix. Failure is not exotic: the simplest instance is the shear , which has the single eigenvalue with and . For defective matrices the best available canonical form under similarity is the Jordan form, which is block diagonal with nilpotent superdiagonal blocks rather than fully diagonal.
The spectral projector view
A diagonalisation can be rewritten without any inverse in sight. Let be the columns of and the rows of ; then , a sum of rank-one terms. Grouping the terms belonging to a single eigenvalue gives a projector onto that eigenspace along the others, and becomes a weighted sum of projectors. This form makes the modal interpretation explicit: applying decomposes a vector into its components in each eigenspace, scales each by its eigenvalue, and reassembles.
Procedure: decide and construct a diagonalisation
Equations
Definition of diagonalisability
EQ-DZ-01The matrix is non-singular and is diagonal. The diagonal entries of are the eigenvalues of , repeated according to their algebraic multiplicities.
Construction of the diagonalising matrix
EQ-DZ-02Any linearly independent set of eigenvectors, taken in any order, gives a valid . The order chosen for the columns fixes the order of the eigenvalues on the diagonal of .
Column form of the diagonalisation
EQ-DZ-03The inverse-free restatement of . Reading it column by column recovers , which is why the theorem is an eigenvector statement in disguise. This is also the cheapest way to verify a computed diagonalisation.
Multiplicity criterion for diagonalisability
EQ-DZ-04Here is the set of distinct eigenvalues, the algebraic multiplicity and the geometric multiplicity. Since always, only a strict shortfall can break the criterion.
Eigenspace dimensions sum to the matrix size
EQ-DZ-05An equivalent phrasing of the criterion for a matrix with distinct eigenvalues. Because algebraic multiplicities always sum to , equality here forces term by term.
Powers of a diagonalisable matrix
EQ-DZ-06Reduces matrix multiplications to scalar powers and two matrix products. The same identity holds for negative when every eigenvalue is non-zero, and extends to any function applied to the diagonal.
Spectral expansion into rank-one terms
EQ-DZ-07The outer-product form of a diagonalisation. Each term projects onto one eigendirection and scales it, which is the algebraic statement of modal decomposition.
Distinct eigenvalues are sufficient
EQ-DZ-08A matrix of size with distinct eigenvalues is always diagonalisable. The implication does not reverse: the identity matrix is diagonalisable with a single eigenvalue.
Variable Definitions
| Symbol | Name | Meaning | Domain / type |
|---|---|---|---|
| Subject matrix | The square matrix being tested for diagonalisability | n x n complex matrix | |
| Diagonalising matrix | Non-singular matrix whose columns are independent eigenvectors of | n x n non-singular matrix | |
| Diagonal form | The diagonal matrix similar to , carrying the eigenvalues on its diagonal | n x n diagonal matrix | |
| Eigenvalue | A root of the characteristic polynomial of | complex scalar | |
| Eigenvector | A non-zero vector with , used as a column of | non-zero vector in C^n | |
| Algebraic multiplicity | Multiplicity of as a root of | integer 1 to n | |
| Geometric multiplicity | Dimension of the eigenspace | integer 1 to alpha | |
| Characteristic polynomial | , whose roots are the eigenvalues | degree-n polynomial | |
| Power index | Exponent applied to when using the diagonalisation to compute | non-negative integer |
Worked Numerical Example
Problem statement
A three-buffer production line is modelled by the one-period update , where is the gain matrix below. Decide whether is diagonalisable, construct an explicit diagonalisation, and use it to obtain the ten-period propagator in closed form.
State the gain matrix
The three buffer levels are coupled by the following one-period update matrix. Note that it is not symmetric, so nothing about its spectrum is guaranteed in advance.
Find the eigenvalues
The trace is , the sum of the three principal minors is , and . These are the coefficients of the characteristic polynomial up to sign, giving a factorisation with a repeated root.
Record the algebraic multiplicities
The distinct eigenvalues are and , with and . Because is repeated, diagonalisability is genuinely in question and must be settled by computing the eigenspace dimension.
Compute the eigenspace for
Row-reduce . The reduced form has two pivot columns, so the null space has dimension and , matching as the general bound already guarantees.
Compute the eigenspace for
Here has three identical rows, so its reduced form has a single pivot. Two free variables give a two-dimensional null space, hence . The multiplicity criterion is satisfied for both eigenvalues, so is diagonalisable.
Assemble and
Place the three eigenvectors as columns in the order and write the eigenvalues on the diagonal in the same order. The inverse is computed once by reducing .
Verify without inverting
Check column by column. Column one: . Column two: . Column three: . All three match the corresponding columns of , confirming the diagonalisation.
Build the ten-period propagator
Since , the power collapses to the identity plus a single rank-one correction: where is the first column of and is the first row of . At , .
The line has one growing mode with gain per period along the direction and a two-dimensional subspace on which the state is exactly preserved. Ten periods of propagation, which would otherwise need nine matrix products, reduce to one scalar power and a rank-one update. Physically, any initial imbalance lying in the plane persists indefinitely without growth, while any component along amplifies by a factor of over ten periods — the design signal that this configuration is unstable and needs feedback.
Applications & Industry Use
Modal analysis of vibrating structures
The generalised eigenproblem for a mass and stiffness pair diagonalises the equations of motion, replacing a coupled multi-degree-of-freedom system with independent single-degree-of-freedom oscillators. Each mode has its own natural frequency and can be truncated or damped separately, which is why modal superposition dominates earthquake and rotor-dynamic analysis.
Decoupling state-space models
For with diagonalisable, the change of coordinates produces independent scalar dynamics with rates . Stability, settling time and the presence of oscillatory modes are then read off the diagonal, and controllability of an individual mode can be assessed in isolation.
Multi-component reaction kinetics
A first-order reaction network gives for a rate matrix . Diagonalising yields reaction modes decaying as , exposing the slow mode that governs residence time and the fast modes that can be treated as instantaneous in a reduced model.
Principal component analysis
A sample covariance matrix is real symmetric and therefore always diagonalisable, with an orthonormal eigenvector basis. Diagonalisation ranks directions by variance, so the leading eigenvectors provide an optimal low-rank representation of measurement data and the trailing ones identify redundancy in an instrument array.
Classifying and simplifying linear maps
A diagonalisable transformation is a pure scaling once the right axes are chosen. Recognising this lets a graphics or CAD pipeline replace a general matrix by three scale factors plus a basis change, which simplifies interpolation between transforms and reveals whether a mapping preserves, inverts or degenerates volume.
Symmetrical component transformation
Balanced three-phase network matrices are circulant, and the fixed transformation to positive, negative and zero sequence components diagonalises them. Diagonalisation converts a coupled three-phase fault calculation into three independent single-phase calculations, which is the standard basis of protection studies.
Design Considerations
Diagonalisability is not a numerical property
The predicate is discontinuous: an arbitrarily small perturbation can split a repeated eigenvalue and turn a defective matrix into a diagonalisable one. That diagonalisation will have an almost singular and is numerically useless. Decide on structure symbolically or from known matrix properties, never from a floating-point eigenvalue count.
Watch the conditioning of the eigenvector matrix
Errors in a diagonalisation are amplified by . Near-defective matrices have nearly parallel eigenvectors and a huge , so can lose all significance even though every individual quantity is finite. Report alongside any computed diagonalisation.
Prefer the symmetric or Hermitian case where you can
A Hermitian matrix is always diagonalisable and admits a unitary , for which exactly. If the model can be posed with a symmetric operator — by symmetrising a stiffness matrix, or by working with a covariance rather than a raw data matrix — both the existence question and the conditioning question disappear.
Do not form when you only need to solve
Applying to a vector needs , which is a linear solve rather than an inversion. Computing explicitly costs more arithmetic and is less accurate. Factor once and reuse the factorisation across right-hand sides and across powers.
Choose the column order deliberately
Column order in is free, so use it. Ordering eigenvalues by decreasing modulus puts the dominant mode first, which is convenient for truncation and for reading off asymptotic behaviour. Grouping columns by eigenvalue keeps the diagonal blocks of contiguous, which matters when a downstream algorithm exploits block structure.
Have a fallback for defective matrices
When the multiplicity test fails, the options are the Jordan form (exact, but numerically fragile), the Schur decomposition with unitary and upper triangular (always exists, numerically stable, and enough for most computations), or the singular value decomposition when the question is about magnitudes rather than invariant directions. Production code should default to Schur.
Standards & Codes
Notation, interchange and numerical standards that govern how this material is written down, stored and computed in production systems.
| Reference | Title | Relevance to this topic |
|---|---|---|
ISO 80000-2 | Quantities and units — Part 2: Mathematics | Fixes the notation used throughout: italic for the matrix symbols , , , upright for the operators and , and Greek for eigenvalues. |
IEEE 754-2019 | IEEE Standard for Floating-Point Arithmetic | Governs the rounding behaviour that makes an equality test between an algebraic and a geometric multiplicity meaningless in floating point, and that bounds the accuracy of any computed eigenvector matrix. |
LAPACK / BLAS reference | Linear Algebra PACKage reference implementation | Provides xGEEV for the general eigenproblem and xSYEV/xHEEV for the symmetric and Hermitian cases; xGEES returns the Schur form, the standard fallback when a matrix is defective. |
ISO/IEC 40314 | Mathematical Markup Language (MathML) Version 3.0 | Encodes the matrix and multiplicity notation on this page semantically, so that a diagonal matrix is exposed to assistive technology as structured content rather than as an image. |
ISO 2041 | Mechanical vibration, shock and condition monitoring — Vocabulary | Defines the modal vocabulary — mode shape, natural frequency, modal coordinate — that maps directly onto the columns of and the diagonal entries of in structural applications. |
Material Selection
For a mathematical topic, "material" is the numeric representation: the scalar field, storage format and precision the computation is built from.
| Representation | Select when | Trade-off |
|---|---|---|
| Exact rational arithmetic | Small matrices with integer or rational entries where diagonalisability itself is the deliverable, or where eigenvector bases feed a symbolic derivation. | Gives a definitive yes or no answer with no tolerance, but requires exact roots of the characteristic polynomial, which do not exist in closed form beyond degree four. |
| Algebraic number field arithmetic | Irrational eigenvalues must be handled exactly, for instance in exact modal analysis of a symmetric integer stiffness matrix. | Preserves exactness through the eigenvector computation, at a substantial implementation and runtime cost that grows quickly with the degree of the minimal polynomial. |
| IEEE 754 binary64 with a real spectrum | Symmetric or Hermitian matrices from measurement or discretisation, where a unitary diagonalisation is guaranteed to exist. | Backward stable and well conditioned because , but eigenvalues that are close together still yield eigenvectors with large relative error even though the invariant subspace is accurate. |
| IEEE 754 binary64 with a complex spectrum | General non-symmetric system matrices in control and dynamics, where eigenvalues may be complex and eigenvectors are not orthogonal. | Requires complex storage and arithmetic for what may be a real matrix, and the accuracy of the result is limited by , which is unbounded near a defective matrix. |
| Real Schur form instead of a diagonalisation | Numerical work where existence must be guaranteed and stability matters more than a fully diagonal target. | Always exists with an orthogonal transforming matrix, so it is unconditionally stable, but leaves blocks for complex-conjugate pairs and an upper triangular remainder rather than a diagonal. |
| Finite field arithmetic | Coding theory and cryptanalysis, where a linear map over must be put in diagonal form. | Exact and fast, but the characteristic polynomial may not split over the field, so a matrix diagonalisable over can fail to be diagonalisable over . |
Manufacturing Notes
Implementation notes — how the result is actually produced by hand, by algorithm and by library, including cost and numerical behaviour.
Cost of the decision and the construction
Deciding diagonalisability by hand costs one characteristic polynomial plus one row reduction per distinct eigenvalue, so roughly reductions of an matrix at about operations each. Numerically the whole eigendecomposition is obtained in one pass: reduction to Hessenberg form followed by the shifted QR iteration costs about operations for eigenvalues alone and around when eigenvectors are also requested.
Verify with , not with
The multiplication-only identity needs no inverse, costs two matrix products, and isolates errors to a single column. Checking instead introduces the inverse's own error and can mask a wrong eigenvector behind cancellation. In floating point, report the residual relative to rather than testing for exact equality.
Library behaviour and conventions
numpy.linalg.eig returns eigenvalues and normalised right eigenvectors as the columns of a matrix that plays the role of , but it never reports whether the matrix is defective — it simply returns a nearly singular eigenvector matrix. scipy.linalg.schur gives the always-available fallback. Symbolic systems expose an explicit predicate and a diagonalisation routine that raises an error for defective input, which is the behaviour to prefer when the structural answer matters.Exploiting the diagonalisation for repeated application
If is needed for many values of , factor once: compute by a linear solve, then each power costs scalar multiplications plus one matrix-vector product , at instead of . When only the dominant behaviour is needed, truncating to the largest few gives a reduced-order model with a controllable error bound.
Scaling and normalisation of eigenvectors
Eigenvectors are determined only up to a non-zero scalar, so is far from unique. Normalising each column to unit Euclidean length is the usual convention and improves the conditioning of the inverse; for a real matrix with a complex-conjugate eigenpair, fixing the phase (for instance by making the largest-magnitude component real and positive) makes results reproducible across libraries.
Failure Modes & Common Mistakes
| Failure mode / mistake | Impact | Root cause | Prevention & detection |
|---|---|---|---|
| Assuming every square matrix is diagonalisable | high | Generalising from textbook examples with distinct eigenvalues, where the criterion is satisfied automatically. | Compute the eigenspace dimension for every repeated eigenvalue before asserting a diagonalisation exists; a repeated root is a question, not an answer. |
| Comparing only the algebraic multiplicities | high | Checking that the algebraic multiplicities sum to , which is always true and therefore tests nothing. | The criterion is for each eigenvalue separately; the geometric side requires an actual null space computation. |
| Mismatching the order of and | high | Listing the eigenvalues in one order on the diagonal while the eigenvector columns were assembled in another. | Build only after is fixed, reading each diagonal entry off the eigenvalue of the corresponding column, then verify . |
| Using a dependent set of eigenvectors | medium | Taking several vectors from one eigenspace without checking that they form a basis, for instance including a scalar multiple twice. | Take eigenspace bases from a row reduction of , which produces independent vectors by construction, and confirm . |
| Trusting a floating-point diagonalisation of a near-defective matrix | high | A computed eigenvector matrix is returned without error even when its condition number is , so silently produces noise. | Always compute ; if it is large relative to the working precision, switch to a Schur decomposition or an invariant-subspace formulation. |
| Confusing similarity with row equivalence | medium | Attempting to diagonalise by row operations alone, which changes eigenvalues and destroys the spectrum. | A similarity transformation applies on the left and on the right simultaneously; row reduction is used only inside the eigenspace computations, never on itself. |
| Assuming a real matrix has a real diagonalisation | medium | A real non-symmetric matrix may have complex-conjugate eigenvalues, so and are complex even though is not. | Expect complex arithmetic for general real matrices, or use the real Schur form with blocks if real output is a hard requirement. |
| Reporting the diagonal entries as if the order were canonical | low | Two correct diagonalisations of the same matrix list the eigenvalues differently, and downstream code assumes a fixed position. | Sort the eigenvalues explicitly by a stated rule, such as decreasing modulus, and permute the columns of to match before publishing results. |
FAQs
What is the difference between diagonalisable and invertible?
They are independent properties. The zero matrix is diagonal, hence diagonalisable, but not invertible; the shear is invertible but not diagonalisable. Invertibility asks whether zero is an eigenvalue; diagonalisability asks whether the eigenvectors span the space.
Does a repeated eigenvalue prevent diagonalisation?
No. It only means the question must be answered by computation rather than by inspection. If the eigenspace of the repeated eigenvalue has dimension equal to its algebraic multiplicity, the matrix is diagonalisable; the identity matrix has one eigenvalue of multiplicity and is already diagonal.
Is the diagonalisation of a matrix unique?
No. The columns of can be reordered, which permutes the diagonal of , and each column can be rescaled by any non-zero scalar. Within an eigenspace of dimension greater than one, any basis at all may be used. What is unique is the multiset of diagonal entries, since those are the eigenvalues with their multiplicities.
How does diagonalisation relate to the singular value decomposition?
They answer different questions. Diagonalisation uses a similarity transformation , preserves eigenvalues, applies only to square matrices and may not exist. The SVD uses two different unitary matrices, , applies to any rectangular matrix, always exists and reveals magnitudes rather than invariant directions. They coincide, up to signs, for a symmetric positive definite matrix.
What happens when a matrix cannot be diagonalised?
The closest attainable form under similarity is the Jordan form: block diagonal with each block having one eigenvalue on the diagonal and ones on the superdiagonal. It is exact but extremely sensitive to perturbation, so numerical work uses the Schur decomposition with unitary and upper triangular instead, which always exists and is computed stably.
Why is so much cheaper than repeated multiplication?
Because the diagonal of is just , so the entire power is scalar exponentiations plus two matrix products, independent of . Repeated squaring of costs operations, and naive repeated multiplication . The saving grows with , and the same substitution extends to and to any analytic function of the matrix.
Can I tell a matrix is diagonalisable without computing eigenvectors?
Sometimes. A Hermitian or real symmetric matrix always is; so is any matrix with distinct eigenvalues, which can be confirmed from the characteristic polynomial alone; and more generally any normal matrix, satisfying , is unitarily diagonalisable. Outside these classes, a repeated eigenvalue forces an eigenspace dimension computation.
References
- Beezer, R. A. A First Course in Linear Algebra, Version 0.70. University of Puget Sound, 2006. Section SD, subsection D. Licensed under the GNU Free Documentation License v1.2.
- Golub, G. H. and Van Loan, C. F. Matrix Computations, 4th edition. Johns Hopkins University Press, 2013. Chapters 7 and 8 on the unsymmetric and symmetric eigenproblems.
- Horn, R. A. and Johnson, C. R. Matrix Analysis, 2nd edition. Cambridge University Press, 2013.
- Anderson, E. et al. LAPACK Users' Guide, 3rd edition. Society for Industrial and Applied Mathematics, 1999.
- ISO 80000-2:2019, Quantities and units — Part 2: Mathematics. International Organization for Standardization.
- Moler, C. and Van Loan, C. Nineteen Dubious Ways to Compute the Exponential of a Matrix, Twenty-Five Years Later. SIAM Review 45(1), 2003.
AI Suggested Questions
- Give me a 4x4 matrix that is not diagonalisable, show why the multiplicity test fails, and write out its Jordan form.
- How large can the condition number of the eigenvector matrix become as a matrix approaches a defective one, and what does that do to a computed ?
- Compare diagonalisation, Schur decomposition and singular value decomposition on the same non-symmetric matrix and explain what each one reveals.
- Show how diagonalisation solves the coupled system in closed form and what changes when is defective.
- Two matrices have the same characteristic polynomial but only one is diagonalisable. Construct such a pair and explain what distinguishes them.
- Work through the symmetrical component transformation for a balanced three-phase impedance matrix and identify the eigenvalues it produces.
Related Calculators
Compare algebraic and geometric multiplicities for every eigenvalue and report whether a diagonalisation exists.
Matrix Diagonalisation CalculatorConstruct and from eigenvector bases, verify and report the condition number of .
Matrix Power CalculatorEvaluate by diagonalisation where possible, with an automatic fallback to repeated squaring for defective input.
Eigenspace Basis CalculatorRow-reduce to produce a basis for each eigenspace and its dimension.
