Chapter 1: Mathematical Foundations for Robot Modeling
Lesson 2: Eigenvalues/Eigenvectors and Physical Meaning
This lesson develops the mathematical theory of eigenvalues and eigenvectors and connects it to physically meaningful quantities in robotics, such as principal axes, energy ellipsoids, and linearized modes of motion. We emphasize symmetric matrices and diagonalization, which later underpin inertia matrices, stiffness matrices, and linearized dynamics of robotic manipulators.
1. Definition and Algebraic Characterization
Let \( A \in \mathbb{R}^{n \times n} \) be a linear operator acting on vectors in \( \mathbb{R}^n \). A nonzero vector \( \mathbf{v} \in \mathbb{R}^n \) is called an eigenvector of \(A\) with associated eigenvalue \( \lambda \in \mathbb{C} \) if
\[ A \mathbf{v} = \lambda \mathbf{v}, \quad \mathbf{v} \neq \mathbf{0}. \]
The equation \(A\mathbf{v} = \lambda \mathbf{v}\) can be rewritten as \((A - \lambda I)\mathbf{v} = \mathbf{0}\). A nontrivial solution exists iff the matrix \(A - \lambda I\) is singular:
\[ (A - \lambda I)\mathbf{v} = \mathbf{0} \quad \Longrightarrow \quad \det(A - \lambda I) = 0. \]
The polynomial \( p_A(\lambda) = \det(\lambda I - A) \) is the characteristic polynomial of \(A\). Its roots are the eigenvalues of \(A\) (counted with algebraic multiplicity). If \(A\) has \(n\) linearly independent eigenvectors, we can form the eigenvector matrix \( V = [\mathbf{v}_1 \ \cdots \ \mathbf{v}_n] \) and diagonal matrix \( \Lambda = \mathrm{diag}(\lambda_1,\dots,\lambda_n) \), and obtain the eigendecomposition
\[ A = V \Lambda V^{-1}, \quad AV = V\Lambda. \]
From the viewpoint of coordinate changes, the columns of \(V\) define a new basis in which the linear map \(A\) acts as simple coordinate-wise scaling by the eigenvalues.
flowchart TD
A["Matrix A in R^n x R^n"] --> B["Solve (A - lambda I)v = 0"]
B --> C["Eigenvalues lambda_i"]
B --> D["Eigenvectors v_i"]
C --> E["Scaling factors in modes"]
D --> F["Invariant directions (modes)"]
E --> G["Interpret behaviour of robot models"]
F --> G
2. Geometric Interpretation in \( \mathbb{R}^2 \) and \( \mathbb{R}^3 \)
Consider a linear map \( A:\mathbb{R}^2 \rightarrow \mathbb{R}^2 \). It transforms lines through the origin to lines through the origin (because \(A\mathbf{0}=\mathbf{0}\)). An eigenvector direction \( \mathbf{v} \) is special because it is preserved by the transformation: all points on the line \( \{\alpha \mathbf{v} \mid \alpha \in \mathbb{R} \} \) are mapped back to the same line.
If \( \lambda > 1 \), the length of vectors along that direction is stretched; if \( 0 < \lambda < 1 \), vectors are contracted; and if \( \lambda < 0 \), the direction is flipped. In robotics, such privileged directions will correspond to principal axes of inertia, dominant directions of stiffness, or directions along which linearized motion grows or decays fastest.
For example, in \( \mathbb{R}^2 \), \[ A = \begin{bmatrix} 2 & 0 \\ 0 & 1 \end{bmatrix} \] has eigenvalues \( \lambda_1 = 2 \), \( \lambda_2 = 1 \) with eigenvectors \( \mathbf{e}_1 = [1,0]^\top \), \( \mathbf{e}_2 = [0,1]^\top \). The unit circle is mapped to an ellipse elongated by a factor 2 along the \(x\)-axis but unchanged along the \(y\)-axis.
In \( \mathbb{R}^3 \), three linearly independent eigenvectors of a diagonalizable matrix form a new orthogonal (or at least independent) coordinate system of principal directions. This picture is central for interpreting inertia matrices of links: eigenvectors give principal axes of rotation, eigenvalues give corresponding principal moments of inertia.
3. Symmetric Matrices, Energy Ellipsoids, and Physical Meaning
Many matrices in robot modeling are real and symmetric: inertia matrices, stiffness matrices, covariance matrices, and mass matrices of discretized structures. A fundamental result is the spectral theorem:
\[ \text{If } A = A^\top \in \mathbb{R}^{n \times n}, \text{ then} \quad \exists \text{ orthogonal } Q \in \mathbb{R}^{n \times n} \text{ and diagonal } \Lambda \text{ such that } A = Q\Lambda Q^\top. \]
Here \(Q^\top Q = QQ^\top = I\) and \(\Lambda = \mathrm{diag}(\lambda_1,\dots,\lambda_n)\) contains the real eigenvalues of \(A\). If, in addition, \(A\) is positive definite (all eigenvalues positive), it defines a quadratic form that can be interpreted as an energy:
\[ E(\mathbf{x}) = \tfrac{1}{2}\mathbf{x}^\top A \mathbf{x} = \tfrac{1}{2}\mathbf{z}^\top \Lambda \mathbf{z}, \quad \mathbf{z} = Q^\top \mathbf{x}. \]
The change of coordinates \( \mathbf{z} = Q^\top \mathbf{x} \) rotates the coordinate frame so that the energy splits into independent contributions: \( E(\mathbf{x}) = \tfrac{1}{2}\sum_i \lambda_i z_i^2 \). Each eigenvalue \(\lambda_i\) scales the contribution of coordinate \(z_i\).
- In a stiffness matrix \(K\), large \(\lambda_i\) correspond to directions that are stiff (large restoring forces), while small \(\lambda_i\) correspond to compliant directions.
- In an inertia matrix \(I\), eigenvectors are principal axes of rotation of a rigid body; eigenvalues are principal moments of inertia about those axes.
- In a covariance matrix \(\Sigma\), eigenvectors give principal directions of uncertainty; eigenvalues give variances along those directions.
flowchart TD
X["State x (position, velocity, etc.)"] --> Q["Rotate: z = Q^T x via eigenvectors"]
Q --> L["Quadratic form E = 0.5 * sum(lambda_i * z_i^2)"]
L --> P1["Large lambda_i: stiff / high energy change"]
L --> P2["Small lambda_i: compliant / low energy change"]
4. Linear Systems and Modal Decomposition (Preview for Dynamics)
Eigenvalues and eigenvectors become especially important when we consider linear time-invariant (LTI) systems, which will appear systematically in later chapters. For now, consider the linear homogeneous system
\[ \dot{\mathbf{x}}(t) = A \mathbf{x}(t), \]
where \(A\) is diagonalizable with eigenpairs \((\lambda_i,\mathbf{v}_i)\). If we expand the initial condition as \( \mathbf{x}(0) = \sum_i c_i \mathbf{v}_i \), the solution is
\[ \mathbf{x}(t) = \sum_{i=1}^{n} c_i e^{\lambda_i t} \mathbf{v}_i. \]
Thus each eigenvalue \(\lambda_i\) determines the growth or decay rate of the corresponding mode \(\mathbf{v}_i\). If \( \mathrm{Re}(\lambda_i) < 0 \), the mode decays; if \( \mathrm{Re}(\lambda_i) > 0 \), it grows. In mechanical systems linearized around an equilibrium, these modes correspond to oscillatory or exponential behaviors along particular directions in state space.
In robotic manipulators, linearization of the dynamics around a stationary configuration yields a system where the eigenvalues/eigenvectors of the state matrix encode how perturbations in joint positions and velocities evolve. Although detailed derivations belong to later chapters, the key idea is that eigenvalues quantify rates and frequencies, while eigenvectors quantify shapes or directions of motion.
5. Computing Eigenvalues: Characteristic Polynomial and Power Iteration
In principle, eigenvalues are roots of the characteristic polynomial \( p_A(\lambda) = \det(\lambda I - A) \). For \( n \leq 4 \), closed-form formulas exist; however, for higher dimensions direct polynomial root-finding is numerically unstable. Modern numerical linear algebra uses iterative schemes and matrix factorizations.
One simple algorithm illustrating the role of eigenvalues is the power iteration, which approximates the eigenvector associated with the eigenvalue of largest magnitude. Starting from a nonzero vector \(\mathbf{v}^{(0)}\):
\[ \mathbf{w}^{(k+1)} = A \mathbf{v}^{(k)}, \quad \mathbf{v}^{(k+1)} = \frac{\mathbf{w}^{(k+1)}}{\|\mathbf{w}^{(k+1)}\|_2}. \]
Under mild conditions (dominant eigenvalue magnitude strictly larger than the others and nonzero projection of \(\mathbf{v}^{(0)}\) onto the dominant eigenvector), the sequence \( \mathbf{v}^{(k)} \) converges to that eigenvector, and the Rayleigh quotient
\[ \rho(\mathbf{v}^{(k)}) = \frac{(\mathbf{v}^{(k)})^\top A \mathbf{v}^{(k)}}{(\mathbf{v}^{(k)})^\top \mathbf{v}^{(k)}} \]
converges to the corresponding eigenvalue. In robotics, such iterations appear in model reduction, stiffness analysis, and approximating dominant modes of motion.
6. Python Implementation (NumPy/SciPy and Robotics Context)
In Python, the de facto standard libraries for eigenvalue computations
are
NumPy and SciPy, which wrap highly optimized
LAPACK routines. In robotics-oriented toolboxes (e.g.
roboticstoolbox-python), eigenvalue decompositions appear
when analyzing inertia matrices, stiffness matrices, and covariance.
import numpy as np
# Example: 3x3 symmetric inertia-like matrix (kg*m^2)
I = np.array([[0.20, 0.01, 0.00],
[0.01, 0.15, 0.00],
[0.00, 0.00, 0.10]])
# Use eigh for symmetric (Hermitian) matrices: more stable than eig
eigvals, eigvecs = np.linalg.eigh(I)
print("Eigenvalues (principal moments):")
print(eigvals)
print("Eigenvectors (principal axes as columns):")
print(eigvecs)
# Verify eigen-equation A v = lambda v numerically
for i in range(len(eigvals)):
lam = eigvals[i]
v = eigvecs[:, i]
lhs = I @ v
rhs = lam * v
print(f"Mode {i}: ||A v - lambda v|| = {np.linalg.norm(lhs - rhs):.3e}")
We can also implement a simple power iteration to approximate the dominant eigenpair of a (not necessarily symmetric) matrix:
import numpy as np
def power_iteration(A, max_iters=1000, tol=1e-8):
n = A.shape[0]
v = np.random.randn(n)
v = v / np.linalg.norm(v)
lam_old = 0.0
for k in range(max_iters):
w = A @ v
v = w / np.linalg.norm(w)
lam = float(v.T @ (A @ v)) # Rayleigh quotient
if abs(lam - lam_old) < tol:
break
lam_old = lam
return lam, v
# Example matrix: could be a local linearization of a 2D state update
A = np.array([[0.9, 0.1],
[0.0, 0.8]])
lam_dom, v_dom = power_iteration(A)
print("Dominant eigenvalue approximation:", lam_dom)
print("Dominant eigenvector approximation:", v_dom)
In a robotics context, applying power_iteration to a
stiffness matrix can reveal the stiffest mode of a joint or end-effector
compliance model.
7. C++ Implementation with Eigen Library
In C++ robotics software (e.g. ROS, Orocos KDL), the
Eigen library is ubiquitous for linear algebra. It provides
high-level wrappers for eigenvalue problems.
#include <iostream>
#include <Eigen/Dense>
int main() {
// Symmetric "inertia" matrix (for a link in its body frame)
Eigen::Matrix3d I;
I << 0.20, 0.01, 0.00,
0.01, 0.15, 0.00,
0.00, 0.00, 0.10;
Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> solver(I);
if (solver.info() != Eigen::Success) {
std::cerr << "Eigen decomposition failed\n";
return 1;
}
std::cout << "Eigenvalues (principal moments):\n"
<< solver.eigenvalues() << "\n\n";
std::cout << "Eigenvectors (principal axes as columns):\n"
<< solver.eigenvectors() << "\n";
// Check A v = lambda v for the first eigenpair
Eigen::Vector3d v0 = solver.eigenvectors().col(0);
double lambda0 = solver.eigenvalues()(0);
Eigen::Vector3d lhs = I * v0;
Eigen::Vector3d rhs = lambda0 * v0;
std::cout << "Residual norm for first eigenpair: "
<< (lhs - rhs).norm() << "\n";
return 0;
}
This pattern is typical in robot dynamics: once the inertia matrix is formed (often from CAD data or identification), one uses an eigen solver to obtain principal axes and moments, which are then used for simplification or analysis of rotational dynamics.
8. Java Implementation (EJML / Apache Commons Math)
For Java-based robotics or simulation frameworks, typical choices
include
EJML (Efficient Java Matrix Library) or
Apache Commons Math. The following example uses EJML's
SimpleMatrix interface.
import org.ejml.simple.SimpleMatrix;
import org.ejml.data.Complex_F64;
import org.ejml.dense.row.decomposition.eig.EigenOps_DDRM;
public class EigenExample {
public static void main(String[] args) {
// 2x2 system matrix (e.g. linearization of a planar joint subsystem)
double[][] dataA = {
{0.9, 0.1},
{0.0, 0.8}
};
SimpleMatrix A = new SimpleMatrix(dataA);
// Compute eigen decomposition using EJML low-level API
var eig = org.ejml.dense.row.decomposition.eig.SwitchingEigenDecomposition_DDRM
.decompose(A.getDDRM(), true);
int N = A.numRows();
for (int i = 0; i < N; ++i) {
Complex_F64 lambda = eig.getEigenvalue(i);
System.out.println("Eigenvalue " + i + ": " + lambda.real + " + " + lambda.imaginary + "i");
var v = eig.getEigenVector(i);
if (v == null) {
System.out.println("No eigenvector (defective eigenvalue)");
} else {
System.out.print("Eigenvector " + i + ": [");
for (int j = 0; j < N; ++j) {
System.out.print(v.get(j) + (j + 1 < N ? ", " : ""));
}
System.out.println("]");
}
}
}
}
In practice, Java-based robotic frameworks will wrap such matrix operations in higher-level abstractions, but the underlying mathematics remains the eigenvalue problem discussed here.
9. MATLAB/Simulink Implementation
MATLAB is widely used in control engineering and robotics. The built-in
function eig
computes eigenvalues/eigenvectors, and the Robotics System Toolbox uses
these operations internally in model analysis and linearization.
% Inertia-like symmetric matrix
I = [0.20 0.01 0.00;
0.01 0.15 0.00;
0.00 0.00 0.10];
% Eigen-decomposition
[V, D] = eig(I); % I * V = V * D, columns of V are eigenvectors
lambda = diag(D);
disp('Eigenvalues (principal moments):');
disp(lambda);
disp('Eigenvectors (principal axes as columns):');
disp(V);
% Check orthogonality (spectral theorem)
disp('V''*V (should be identity for symmetric I):');
disp(V' * V);
% Example: transform angular velocity omega into principal coordinates
omega_body = [1; 2; 0.5]; % rad/s in body frame
omega_principal = V' * omega_body;
kinetic_energy = 0.5 * omega_principal' * D * omega_principal;
fprintf('Rotational kinetic energy: %f J\n', kinetic_energy);
In Simulink, linearization blocks can export an LTI model \(
\dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u} \). Applying
eig(A) in MATLAB reveals modal properties
(eigenvalues/eigenvectors) of the linearized robot subsystem.
10. Wolfram Mathematica Implementation
Wolfram Mathematica excels at symbolic and numeric eigenvalue computations. This can be particularly useful for deriving analytical expressions for simple manipulators or verifying symbolic derivations of inertia or stiffness matrices.
(* Define a 2x2 stiffness matrix symbolic in parameters k1, k2, alpha *)
K = { {k1 Cos[alpha]^2 + k2 Sin[alpha]^2,
(k1 - k2) Sin[alpha] Cos[alpha]},
{(k1 - k2) Sin[alpha] Cos[alpha],
k1 Sin[alpha]^2 + k2 Cos[alpha]^2} };
(* Compute eigenvalues and eigenvectors symbolically *)
vals = Eigenvalues[K];
vecs = Eigenvectors[K];
vals
vecs
(* Substitute numeric values for a particular configuration *)
params = {k1 -> 1000, k2 -> 200, alpha -> Pi/6};
N[vals /. params]
N[vecs /. params]
This example models an effective planar stiffness rotated by an angle
alpha. The eigenvalues are the principal stiffnesses, while
the eigenvectors give principal directions. Such symbolic insight is
valuable when designing compliant mechanisms or analyzing passive
stiffness in robotic structures.
11. Problems and Solutions
Problem 1 (Geometric Meaning of Eigenvectors): Let \[ A = \begin{bmatrix} 3 & 0 \\ 0 & 1 \end{bmatrix}. \] (a) Find the eigenvalues and eigenvectors of \(A\). (b) Describe geometrically how \(A\) acts on the unit circle in \( \mathbb{R}^2 \).
Solution: (a) The characteristic polynomial is \[ p_A(\lambda) = \det(\lambda I - A) = (\lambda - 3)(\lambda - 1), \] so the eigenvalues are \( \lambda_1 = 3 \) and \( \lambda_2 = 1 \). For \( \lambda_1 = 3 \), \[ (A - 3I)\mathbf{v} = \mathbf{0} \Rightarrow \begin{bmatrix} 0 & 0 \\ 0 & -2 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \mathbf{0} \Rightarrow v_2 = 0, v_1 \neq 0. \] Thus an eigenvector is \( \mathbf{v}_1 = [1,0]^\top \). For \( \lambda_2 = 1 \), \[ (A - I)\mathbf{v} = \mathbf{0} \Rightarrow \begin{bmatrix} 2 & 0 \\ 0 & 0 \end{bmatrix} \begin{bmatrix} v_1 \\ v_2 \end{bmatrix} = \mathbf{0} \Rightarrow v_1 = 0, v_2 \neq 0. \] So \( \mathbf{v}_2 = [0,1]^\top \) is an eigenvector. (b) Applied to the unit circle, \(A\) stretches vectors along the \(x\)-axis by factor 3 while leaving the \(y\)-axis unchanged. The unit circle becomes an ellipse with semi-axes 3 and 1 aligned with the coordinate axes.
Problem 2 (Energy Interpretation of Symmetric Positive Definite Matrices): Let \(A \in \mathbb{R}^{n \times n}\) be symmetric positive definite with eigendecomposition \(A = Q\Lambda Q^\top\). Show that the set \[ \mathcal{E} = \{\mathbf{x} \in \mathbb{R}^n \mid \mathbf{x}^\top A \mathbf{x} \leq 1\} \] is an ellipsoid whose principal axes are eigenvectors of \(A\), and the semi-axis lengths are \(1/\sqrt{\lambda_i}\).
Solution: Using the change of variables \( \mathbf{z} = Q^\top \mathbf{x} \), \[ \mathbf{x}^\top A \mathbf{x} = \mathbf{x}^\top Q \Lambda Q^\top \mathbf{x} = \mathbf{z}^\top \Lambda \mathbf{z} = \sum_{i=1}^{n} \lambda_i z_i^2. \] Thus \[ \mathcal{E} = \left\{ \mathbf{x} \mid \sum_{i=1}^{n} \lambda_i z_i^2 \leq 1 \right\} = \left\{ Q\mathbf{z} \mid \sum_{i=1}^{n} \lambda_i z_i^2 \leq 1 \right\}. \] In the \( \mathbf{z} \)-coordinates, this is the standard equation of an axis-aligned ellipsoid with semi-axis lengths \( a_i = 1/\sqrt{\lambda_i} \) along coordinate directions \(e_i\). Mapping back by the orthogonal matrix \(Q\) rotates the ellipsoid so that its principal axes lie along the eigenvectors (columns of \(Q\)). Hence the eigenvectors give principal axes and \(1/\sqrt{\lambda_i}\) are the semi-axis lengths.
Problem 3 (Power Iteration Convergence): Let \(A\in\mathbb{R}^{n\times n}\) be diagonalizable with eigenvalues \( \lambda_1,\dots,\lambda_n \) ordered so that \( |\lambda_1| > |\lambda_2| \geq \cdots \geq |\lambda_n| \). Assume \(A\) has a full basis of eigenvectors \( \{\mathbf{v}_i\} \). Consider the power iteration starting from \( \mathbf{v}^{(0)} = \sum_i c_i \mathbf{v}_i \) with \(c_1 \neq 0\). Show that \( \mathbf{v}^{(k)} / \|\mathbf{v}^{(k)}\| \) converges to \( \pm \mathbf{v}_1 \) as \( k \rightarrow \infty \).
Solution: We can write \[ A^k \mathbf{v}^{(0)} = A^k \sum_{i} c_i \mathbf{v}_i = \sum_{i} c_i \lambda_i^k \mathbf{v}_i = \lambda_1^k \left( c_1 \mathbf{v}_1 + \sum_{i\geq 2} c_i (\lambda_i/\lambda_1)^k \mathbf{v}_i \right). \] Since \( |\lambda_i/\lambda_1| < 1 \) for \(i\geq 2\), the terms \( (\lambda_i/\lambda_1)^k \rightarrow 0 \) as \(k\rightarrow\infty\). Thus \[ \frac{A^k \mathbf{v}^{(0)}}{\|A^k \mathbf{v}^{(0)}\|} \rightarrow \frac{c_1 \mathbf{v}_1}{|c_1|\|\mathbf{v}_1\|} = \mathrm{sign}(c_1)\frac{\mathbf{v}_1}{\|\mathbf{v}_1\|}, \] i.e. the normalized iterates converge to \( \pm \mathbf{v}_1 \), the eigenvector associated with the dominant eigenvalue by magnitude.
Problem 4 (Physical Interpretation of Inertia Eigenvalues): A rigid link has inertia matrix in its body frame \[ I = \begin{bmatrix} 0.25 & 0 & 0 \\ 0 & 0.10 & 0 \\ 0 & 0 & 0.05 \end{bmatrix} \text{ kg m}^2. \] (a) Identify its eigenvalues and eigenvectors. (b) Describe physically what it means if a joint rotates the link exactly about the eigenvector associated with \(0.05\).
Solution: (a) The matrix is already diagonal, so the eigenvalues are \( \lambda_1 = 0.25 \), \( \lambda_2 = 0.10 \), \( \lambda_3 = 0.05 \) kg m\(^2\), with eigenvectors \( \mathbf{e}_1 = [1,0,0]^\top \), \( \mathbf{e}_2 = [0,1,0]^\top \), \( \mathbf{e}_3 = [0,0,1]^\top \). (b) Rotating about the axis \( \mathbf{e}_3 \) (associated with \(0.05\)) corresponds to rotating about the principal axis with the smallest moment of inertia. For a given angular acceleration, this direction requires the smallest torque; equivalently, for a given angular momentum, it yields the highest angular velocity. In a robot arm, actuating the joint so that its axis aligns with this eigenvector makes motion energetically favorable about that axis.
Problem 5 (Stability via Eigenvalues): Consider the linear system \[ \dot{\mathbf{x}} = \begin{bmatrix} -2 & 1 \\ 0 & -3 \end{bmatrix} \mathbf{x}. \] (a) Compute the eigenvalues. (b) Is the origin exponentially stable? (c) What is the qualitative difference if one eigenvalue becomes positive?
Solution: (a) The characteristic polynomial is \[ p(\lambda) = \det(\lambda I - A) = (\lambda + 2)(\lambda + 3), \] so eigenvalues are \( \lambda_1 = -2 \), \( \lambda_2 = -3 \). (b) Since both eigenvalues have strictly negative real parts, \( \mathrm{Re}(\lambda_1) < 0 \) and \( \mathrm{Re}(\lambda_2) < 0 \), the origin is exponentially stable. (c) If one eigenvalue were positive, the corresponding mode would grow exponentially, and the origin would become unstable. In a robotic context, this means small perturbations in the associated direction of motion would grow rather than decay, leading to divergence from the equilibrium.
12. Summary
In this lesson we formalized eigenvalues and eigenvectors via the characteristic equation \( \det(\lambda I - A) = 0 \) and explored their geometric meaning as invariant directions and modal scaling factors of linear transformations. We emphasized the spectral theorem for real symmetric matrices, which guarantees orthogonal eigendecomposition and underlies the interpretation of inertia, stiffness, and covariance matrices in robotics. We previewed how eigenvalues of linearized dynamics govern stability and modal behavior, and we implemented eigenvalue computations in Python, C++, Java, MATLAB, and Mathematica, connecting them to physically meaningful quantities such as principal axes and energy ellipsoids. These ideas are foundational for later chapters on kinematics, dynamics, and model-based analysis.
13. References
- Courant, R., & Hilbert, D. (1953). Methods of Mathematical Physics, Vol. I. Interscience Publishers. (Classical treatment of eigenvalue problems and self-adjoint operators.)
- von Neumann, J., & Goldstine, H. H. (1947). Numerical inverting of matrices of high order. Bulletin of the American Mathematical Society, 53(11), 1021–1099.
- Householder, A. S. (1958). Unitary triangularization of a nonsymmetric matrix. Journal of the ACM, 5(4), 339–342.
- Lanczos, C. (1950). An iteration method for the solution of the eigenvalue problem of linear differential and integral operators. Journal of Research of the National Bureau of Standards, 45, 255–282.
- Kato, T. (1955). On the convergence of the perturbation method. I. Progress of Theoretical Physics, 4(4), 514–523.
- Parlett, B. N. (1979). The symmetric eigenvalue problem. SIAM Review, 21(3), 347–368.
- Tisseur, F., & Meerbergen, K. (2001). The quadratic eigenvalue problem. SIAM Review, 43(2), 235–286.
- Bai, Z., Demmel, J., Dongarra, J., Ruhe, A., & van der Vorst, H. (Eds.). (2000). Templates for the Solution of Algebraic Eigenvalue Problems: A Practical Guide. SIAM.