Chapter 2: Linear Algebra Foundations for Control
Lesson 4: Similarity Transformations and Change of Coordinates
This lesson formalizes how the same linear transformation can be represented by different matrices under different bases. We derive the similarity relation \( \tilde{\mathbf{A}} = \mathbf{T}^{-1}\mathbf{A}\mathbf{T} \), prove which quantities are invariant under such transformations (eigenvalues, characteristic polynomial, trace, determinant), and develop a rigorous change-of-coordinates framework that will be reused later when state variables are re-parameterized.
1. Conceptual Overview
A vector \( \mathbf{x}\in\mathbb{R}^n \) is an abstract element of a vector space. A coordinate vector is a representation of \( \mathbf{x} \) relative to a chosen basis. If we change the basis, the coordinates change, but the abstract vector does not.
Likewise, a linear transformation \( \mathcal{A}:V\rightarrow V \) is an abstract mapping. Its matrix representation depends on the chosen basis. Two matrices represent the same linear map under different bases if and only if they are similar.
flowchart TD Xc["old coordinates x_E"] -->|x = P * x_E| Xv["abstract vector x"] Xv -->|x_B = P_inv * x| Yc["new coordinates x_B"] AE["matrix A in old basis"] -->|A_B = P_inv * A * P| AB["matrix A in new basis"] Xc -->|y_E = A * x_E| Yold["y_E"] Yc -->|y_B = A_B * x_B| Ynew["y_B"]
In control engineering, this is the mathematical heart of “changing coordinates”: you re-express a system (later, a state-space model) in a new coordinate basis to reveal structure (e.g., decoupling, improved conditioning) while preserving intrinsic invariants.
2. Coordinate Vectors and Change-of-Basis Matrices
Let \( V \) be an \( n \)-dimensional vector space over a field \( \mathbb{F} \) (typically \( \mathbb{R} \) or \( \mathbb{C} \)). Consider two ordered bases: \( \mathcal{E}=\{\mathbf{e}_1,\dots,\mathbf{e}_n\} \) and \( \mathcal{B}=\{\mathbf{b}_1,\dots,\mathbf{b}_n\} \).
Define the basis matrix \( \mathbf{P} \) whose columns are the basis vectors of \( \mathcal{B} \) expressed in the \( \mathcal{E} \)-coordinates: \( \mathbf{P}=[\,[\mathbf{b}_1]_{\mathcal{E}}\;\cdots\;[\mathbf{b}_n]_{\mathcal{E}}\,] \). Then for any \( \mathbf{x}\in V \),
\[ \mathbf{x} = \mathbf{P}\,[\mathbf{x}]_{\mathcal{B}},\qquad [\mathbf{x}]_{\mathcal{B}} = \mathbf{P}^{-1}\mathbf{x}. \]
Proof. Since \( \mathcal{B} \) is a basis, there exist unique scalars \( \alpha_1,\dots,\alpha_n \) such that \( \mathbf{x}=\sum_{i=1}^{n}\alpha_i\mathbf{b}_i \). Writing this in \( \mathcal{E} \)-coordinates and stacking coefficients yields \( \mathbf{x}=\mathbf{P}\boldsymbol{\alpha} \) where \( \boldsymbol{\alpha}=[\mathbf{x}]_{\mathcal{B}} \). Invertibility of \( \mathbf{P} \) follows from linear independence of the columns, giving \( [\mathbf{x}]_{\mathcal{B}}=\mathbf{P}^{-1}\mathbf{x} \). □
Remark (notation for coordinates). We will often write the coordinate vector as \( \mathbf{x}_{\mathcal{B}} \) instead of \( [\mathbf{x}]_{\mathcal{B}} \), and similarly \( \mathbf{x}_{\mathcal{E}} \).
3. Matrix Representation of a Linear Map Under a Change of Basis
Let \( \mathcal{A}:V\rightarrow V \) be linear. Let \( \mathbf{A}_{\mathcal{E}} \) be the matrix of \( \mathcal{A} \) in basis \( \mathcal{E} \), and \( \mathbf{A}_{\mathcal{B}} \) be the matrix in basis \( \mathcal{B} \). By definition,
\[ [\mathcal{A}(\mathbf{x})]_{\mathcal{E}} = \mathbf{A}_{\mathcal{E}}[\mathbf{x}]_{\mathcal{E}}, \qquad [\mathcal{A}(\mathbf{x})]_{\mathcal{B}} = \mathbf{A}_{\mathcal{B}}[\mathbf{x}]_{\mathcal{B}}. \]
The change-of-basis matrix \( \mathbf{P} \) from Section 2 satisfies \( \mathbf{x}_{\mathcal{E}}=\mathbf{P}\mathbf{x}_{\mathcal{B}} \). Substituting into the defining relation and converting output coordinates gives the fundamental theorem:
\[ \boxed{ \mathbf{A}_{\mathcal{B}} = \mathbf{P}^{-1}\mathbf{A}_{\mathcal{E}}\mathbf{P} }. \]
Proof. For any \( \mathbf{x}\in V \),
\[ \mathbf{A}_{\mathcal{E}}\mathbf{x}_{\mathcal{E}} = [\mathcal{A}(\mathbf{x})]_{\mathcal{E}} = \mathbf{P}\,[\mathcal{A}(\mathbf{x})]_{\mathcal{B}} = \mathbf{P}\,\mathbf{A}_{\mathcal{B}}\mathbf{x}_{\mathcal{B}}. \]
Using \( \mathbf{x}_{\mathcal{E}}=\mathbf{P}\mathbf{x}_{\mathcal{B}} \):
\[ \mathbf{A}_{\mathcal{E}}\mathbf{P}\mathbf{x}_{\mathcal{B}} = \mathbf{P}\mathbf{A}_{\mathcal{B}}\mathbf{x}_{\mathcal{B}} \quad \forall\,\mathbf{x}_{\mathcal{B}}. \]
Hence \( \mathbf{A}_{\mathcal{E}}\mathbf{P}=\mathbf{P}\mathbf{A}_{\mathcal{B}} \). Left-multiplying by \( \mathbf{P}^{-1} \) yields \( \mathbf{A}_{\mathcal{B}}=\mathbf{P}^{-1}\mathbf{A}_{\mathcal{E}}\mathbf{P} \). □
This conjugation relation is exactly a similarity transformation.
4. Similarity Transformations and Their Invariants
Definition. Two matrices \( \mathbf{A},\mathbf{B}\in\mathbb{F}^{n\times n} \) are similar if there exists an invertible \( \mathbf{T}\in\mathbb{F}^{n\times n} \) such that \( \mathbf{B}=\mathbf{T}^{-1}\mathbf{A}\mathbf{T} \). We write \( \mathbf{A}\sim\mathbf{B} \).
Proposition (similarity is an equivalence relation). Similarity is reflexive, symmetric, and transitive.
Proof. Reflexive: \( \mathbf{A}=\mathbf{I}^{-1}\mathbf{A}\mathbf{I} \). Symmetric: if \( \mathbf{B}=\mathbf{T}^{-1}\mathbf{A}\mathbf{T} \), then \( \mathbf{A}=(\mathbf{T})\mathbf{B}(\mathbf{T})^{-1} \), so \( \mathbf{B}\sim\mathbf{A} \). Transitive: if \( \mathbf{B}=\mathbf{T}^{-1}\mathbf{A}\mathbf{T} \) and \( \mathbf{C}=\mathbf{S}^{-1}\mathbf{B}\mathbf{S} \), then \( \mathbf{C}=(\mathbf{T}\mathbf{S})^{-1}\mathbf{A}(\mathbf{T}\mathbf{S}) \). □
The power of similarity is that it preserves the intrinsic properties of the linear transformation. We now prove the most important invariants.
4.1 Characteristic polynomial and eigenvalues are invariant
Let the characteristic polynomial of \( \mathbf{A} \) be \( \chi_{\mathbf{A}}(\lambda)=\det(\lambda\mathbf{I}-\mathbf{A}) \).
Theorem. If \( \mathbf{B}=\mathbf{T}^{-1}\mathbf{A}\mathbf{T} \), then \( \chi_{\mathbf{B}}(\lambda)=\chi_{\mathbf{A}}(\lambda) \) for all \( \lambda \). Consequently, \( \mathbf{A} \) and \( \mathbf{B} \) have the same eigenvalues (including algebraic multiplicities).
Proof.
\[ \chi_{\mathbf{B}}(\lambda) = \det(\lambda\mathbf{I}-\mathbf{B}) = \det(\lambda\mathbf{I}-\mathbf{T}^{-1}\mathbf{A}\mathbf{T}) = \det\!\big(\mathbf{T}^{-1}(\lambda\mathbf{I}-\mathbf{A})\mathbf{T}\big). \]
Using multiplicativity of the determinant:
\[ \det\!\big(\mathbf{T}^{-1}(\lambda\mathbf{I}-\mathbf{A})\mathbf{T}\big) = \det(\mathbf{T}^{-1})\,\det(\lambda\mathbf{I}-\mathbf{A})\,\det(\mathbf{T}) = \det(\lambda\mathbf{I}-\mathbf{A}), \]
since \( \det(\mathbf{T}^{-1})\det(\mathbf{T})=1 \). Thus \( \chi_{\mathbf{B}}(\lambda)=\chi_{\mathbf{A}}(\lambda) \), and the eigenvalues (roots) coincide. □
4.2 Trace and determinant are invariant
Corollary. If \( \mathbf{B}=\mathbf{T}^{-1}\mathbf{A}\mathbf{T} \), then \( \det(\mathbf{B})=\det(\mathbf{A}) \) and \( \operatorname{tr}(\mathbf{B})=\operatorname{tr}(\mathbf{A}) \).
Proof (determinant).
\[ \det(\mathbf{B}) = \det(\mathbf{T}^{-1}\mathbf{A}\mathbf{T}) = \det(\mathbf{T}^{-1})\det(\mathbf{A})\det(\mathbf{T})=\det(\mathbf{A}). \]
Proof (trace). Use cyclic invariance of trace:
\[ \operatorname{tr}(\mathbf{B}) = \operatorname{tr}(\mathbf{T}^{-1}\mathbf{A}\mathbf{T}) = \operatorname{tr}(\mathbf{A}\mathbf{T}\mathbf{T}^{-1}) = \operatorname{tr}(\mathbf{A}). \]
□
4.3 What is not invariant?
Similarity generally does not preserve entries, norms, or conditioning. In particular, a poorly chosen \( \mathbf{T} \) can amplify numerical error when computing \( \mathbf{T}^{-1}\mathbf{A}\mathbf{T} \). This numerical aspect matters heavily when these transformations are used computationally (later in analysis/design workflows).
5. Similarity as a Coordinate Change: Operator Viewpoint
It is useful to separate: (i) the abstract operator \( \mathcal{A} \), and (ii) its coordinate matrix \( \mathbf{A} \). Similarity is “just” the statement that the operator is the same while the basis changes.
Let \( \mathcal{A} \) have matrix \( \mathbf{A}_{\mathcal{E}} \) in basis \( \mathcal{E} \). Choose any invertible \( \mathbf{T} \) and define new coordinates \( \mathbf{z}=\mathbf{T}^{-1}\mathbf{x} \). Then \( \mathbf{x}=\mathbf{T}\mathbf{z} \). If the mapping in \( \mathbf{x} \)-coordinates is \( \mathbf{y}=\mathbf{A}\mathbf{x} \), the same mapping in \( \mathbf{z} \)-coordinates is:
\[ \mathbf{y} = \mathbf{A}\mathbf{x} = \mathbf{A}\mathbf{T}\mathbf{z}, \qquad \mathbf{y}_{z} = \mathbf{T}^{-1}\mathbf{y} = \mathbf{T}^{-1}\mathbf{A}\mathbf{T}\mathbf{z}. \]
Hence the matrix in the new coordinates is \( \tilde{\mathbf{A}}=\mathbf{T}^{-1}\mathbf{A}\mathbf{T} \). This is exactly the similarity transform, now interpreted as a coordinate substitution.
flowchart TD
S["Start: choose invertible T (new coordinates z = T_inv * x)"] --> A1["Compute A_tilde = T_inv * A * T"]
A1 --> C1["Check invariants: eig(A_tilde) = eig(A)"]
C1 --> C2["Optional: choose T to simplify structure (e.g., diagonal if possible)"]
C2 --> E["Use A_tilde in computations (same operator, new coordinates)"]
Connection to Lesson 3 (diagonalization). If \( \mathbf{A} \) is diagonalizable, there exists an invertible \( \mathbf{V} \) such that \( \mathbf{V}^{-1}\mathbf{A}\mathbf{V}=\boldsymbol{\Lambda} \) (diagonal). This is a special similarity transformation where \( \mathbf{T}=\mathbf{V} \). The “modal coordinates” idea is precisely a coordinate change that diagonalizes the map when possible.
6. Numerical Conditioning and Practical Guidelines
Although similarity preserves eigenvalues exactly in exact arithmetic, numerical computation uses floating-point arithmetic. The computed \( \mathbf{T}^{-1} \) can introduce error when \( \mathbf{T} \) is ill-conditioned. A standard metric is the condition number: \( \kappa(\mathbf{T})=\|\mathbf{T}\|\cdot\|\mathbf{T}^{-1}\| \).
A useful first-order perturbation heuristic (informal) is that relative errors in computed inverses/products can scale with \( \kappa(\mathbf{T}) \). Therefore:
- Prefer well-conditioned transformations (orthonormal bases when available).
- Avoid forming \( \mathbf{T}^{-1} \) explicitly when possible; solve linear systems instead.
- When selecting a basis from data, normalize basis vectors to control scaling.
These numerical principles will later matter when coordinate changes are used as preprocessing steps before more advanced control computations.
7. Programming Implementations
This section implements: (i) coordinate conversion \( \mathbf{x}=\mathbf{T}\mathbf{z} \), and (ii) similarity transformation \( \tilde{\mathbf{A}}=\mathbf{T}^{-1}\mathbf{A}\mathbf{T} \), plus numerical checks of invariants.
7.1 Python (NumPy/SciPy) + from-scratch inverse (Gauss–Jordan)
import numpy as np
def gauss_jordan_inverse(A):
A = np.array(A, dtype=float)
n = A.shape[0]
I = np.eye(n)
Aug = np.hstack([A, I])
# Forward elimination with partial pivoting
for col in range(n):
pivot = np.argmax(np.abs(Aug[col:, col])) + col
Aug[[col, pivot]] = Aug[[pivot, col]]
piv = Aug[col, col]
if np.isclose(piv, 0.0):
raise ValueError("Matrix is singular or nearly singular.")
Aug[col, :] = Aug[col, :] / piv
for row in range(n):
if row == col:
continue
factor = Aug[row, col]
Aug[row, :] = Aug[row, :] - factor * Aug[col, :]
return Aug[:, n:]
def similarity_transform(A, T):
# Prefer solving rather than explicit inverse in larger problems;
# kept explicit here for pedagogy.
Tinv = gauss_jordan_inverse(T)
return Tinv @ A @ T
# Example
A = np.array([[2.0, 1.0],
[0.0, 3.0]])
T = np.array([[1.0, 1.0],
[0.0, 1.0]])
A_tilde = similarity_transform(A, T)
# Invariants check (eigenvalues should match)
eigA = np.linalg.eigvals(A)
eigAt = np.linalg.eigvals(A_tilde)
print("A =", A)
print("A_tilde =", A_tilde)
print("eig(A) =", eigA)
print("eig(A_tilde) =", eigAt)
print("trace equal:", np.isclose(np.trace(A), np.trace(A_tilde)))
print("det equal:", np.isclose(np.linalg.det(A), np.linalg.det(A_tilde)))
Library note for Modern Control (preview only).
Later, packages such as python-control and SciPy’s
state-space tools use the same algebra to change coordinates in
dynamical models. For now, we keep the implementation purely
linear-algebraic.
7.2 C++ (Eigen)
#include <iostream>
#include <Eigen/Dense>
Eigen::MatrixXd similarityTransform(const Eigen::MatrixXd& A,
const Eigen::MatrixXd& T) {
// Prefer solving linear systems rather than forming inverse explicitly:
// A_tilde = T^{-1} A T => solve(T, (A*T))
Eigen::MatrixXd AT = A * T;
Eigen::MatrixXd A_tilde = T.fullPivLu().solve(AT);
return A_tilde;
}
int main() {
Eigen::MatrixXd A(2,2);
A << 2.0, 1.0,
0.0, 3.0;
Eigen::MatrixXd T(2,2);
T << 1.0, 1.0,
0.0, 1.0;
Eigen::MatrixXd A_tilde = similarityTransform(A, T);
std::cout << "A:\n" << A << "\n\n";
std::cout << "A_tilde:\n" << A_tilde << "\n\n";
std::cout << "trace(A) = " << A.trace()
<< ", trace(A_tilde) = " << A_tilde.trace() << "\n";
std::cout << "det(A) = " << A.determinant()
<< ", det(A_tilde) = " << A_tilde.determinant() << "\n";
return 0;
}
7.3 Java (EJML)
import org.ejml.simple.SimpleEVD;
import org.ejml.simple.SimpleMatrix;
public class SimilarityDemo {
public static SimpleMatrix similarityTransform(SimpleMatrix A, SimpleMatrix T) {
// A_tilde = T^{-1} A T
// EJML: use solve to avoid explicit inverse
SimpleMatrix AT = A.mult(T);
return T.solve(AT);
}
public static void main(String[] args) {
SimpleMatrix A = new SimpleMatrix(new double[][]{
{2.0, 1.0},
{0.0, 3.0}
});
SimpleMatrix T = new SimpleMatrix(new double[][]{
{1.0, 1.0},
{0.0, 1.0}
});
SimpleMatrix A_tilde = similarityTransform(A, T);
System.out.println("A =\n" + A);
System.out.println("A_tilde =\n" + A_tilde);
double trA = A.trace();
double trAt = A_tilde.trace();
System.out.println("trace(A) = " + trA + ", trace(A_tilde) = " + trAt);
// Eigenvalue check
SimpleEVD<SimpleMatrix> evA = A.eig();
SimpleEVD<SimpleMatrix> evAt = A_tilde.eig();
System.out.println("eig(A):");
for (int i = 0; i < evA.getNumberOfEigenvalues(); i++) {
System.out.println(evA.getEigenvalue(i));
}
System.out.println("eig(A_tilde):");
for (int i = 0; i < evAt.getNumberOfEigenvalues(); i++) {
System.out.println(evAt.getEigenvalue(i));
}
}
}
7.4 MATLAB (matrix algebra) and Simulink (coordinate conversion block diagram)
% Similarity transformation in MATLAB
A = [2 1; 0 3];
T = [1 1; 0 1];
A_tilde = T \ (A*T); % solves T*A_tilde = A*T => A_tilde = T^{-1} A T
eigA = eig(A);
eigAt = eig(A_tilde);
disp("A_tilde ="); disp(A_tilde);
disp("eig(A) ="); disp(eigA);
disp("eig(A_tilde) ="); disp(eigAt);
disp("trace equal?"); disp(abs(trace(A)-trace(A_tilde)) < 1e-10);
disp("det equal?"); disp(abs(det(A)-det(A_tilde)) < 1e-10);
Simulink idea (no images): build a small model that converts coordinates \( \mathbf{x}(t)=\mathbf{T}\mathbf{z}(t) \) and back \( \mathbf{z}(t)=\mathbf{T}^{-1}\mathbf{x}(t) \) using matrix Gain blocks. The following script creates a minimal Simulink model programmatically.
% Programmatically create a Simulink model for coordinate conversion
T = [1 1; 0 1];
Tinv = inv(T);
mdl = "coord_change_demo";
new_system(mdl); open_system(mdl);
add_block("simulink/Sources/Sine Wave", mdl + "/z1");
add_block("simulink/Sources/Sine Wave", mdl + "/z2");
set_param(mdl + "/z2", "Phase", "1.2");
add_block("simulink/Signal Routing/Mux", mdl + "/Mux");
add_block("simulink/Math Operations/Gain", mdl + "/Gain_T");
set_param(mdl + "/Gain_T", "Gain", "T", "Multiplication", "Matrix(K*u)");
add_block("simulink/Math Operations/Gain", mdl + "/Gain_Tinv");
set_param(mdl + "/Gain_Tinv", "Gain", "Tinv", "Multiplication", "Matrix(K*u)");
add_block("simulink/Sinks/Scope", mdl + "/Scope_x");
add_block("simulink/Sinks/Scope", mdl + "/Scope_zrec");
add_line(mdl, "z1/1", "Mux/1");
add_line(mdl, "z2/1", "Mux/2");
add_line(mdl, "Mux/1", "Gain_T/1");
add_line(mdl, "Gain_T/1", "Scope_x/1");
add_line(mdl, "Gain_T/1", "Gain_Tinv/1");
add_line(mdl, "Gain_Tinv/1", "Scope_zrec/1");
set_param(mdl, "StopTime", "10");
save_system(mdl);
7.5 Wolfram Mathematica
(* Similarity transformation and invariant checks *)
A = { {2, 1}, {0, 3} };
T = { {1, 1}, {0, 1} };
Atilde = Inverse[T].A.T;
{Eigenvalues[A], Eigenvalues[Atilde]}
{Tr[A], Tr[Atilde]}
{Det[A], Det[Atilde]}
(* Coordinate conversion: x = T z, z = T^{-1} x *)
z = {z1, z2};
x = T.z;
zrec = Inverse[T].x;
Simplify[zrec]
8. Problems and Solutions
The following problems focus strictly on the linear-algebraic foundations established in Chapter 2.
Problem 1 (change of coordinates): Let \( \mathcal{B}=\{\mathbf{b}_1,\mathbf{b}_2\} \) be a basis of \( \mathbb{R}^2 \) with \( \mathbf{b}_1=\begin{bmatrix}1\\0\end{bmatrix} \), \( \mathbf{b}_2=\begin{bmatrix}1\\1\end{bmatrix} \). For \( \mathbf{x}=\begin{bmatrix}2\\3\end{bmatrix} \), compute \( [\mathbf{x}]_{\mathcal{B}} \).
Solution:
The basis matrix is \( \mathbf{P}=[\mathbf{b}_1\;\mathbf{b}_2]=\begin{bmatrix}1 & 1\\0 & 1\end{bmatrix} \). Coordinates satisfy \( \mathbf{x}=\mathbf{P}\mathbf{x}_{\mathcal{B}} \), so \( \mathbf{x}_{\mathcal{B}}=\mathbf{P}^{-1}\mathbf{x} \).
\[ \mathbf{P}^{-1}=\begin{bmatrix}1 & -1\\0 & 1\end{bmatrix},\qquad \mathbf{x}_{\mathcal{B}}=\begin{bmatrix}1 & -1\\0 & 1\end{bmatrix}\begin{bmatrix}2\\3\end{bmatrix} =\begin{bmatrix}-1\\3\end{bmatrix}. \]
Therefore \( [\mathbf{x}]_{\mathcal{B}}=\begin{bmatrix}-1\\3\end{bmatrix} \). □
Problem 2 (derive similarity relation): Let \( \mathcal{A}:V\rightarrow V \) be linear, with matrix \( \mathbf{A}_{\mathcal{E}} \) in basis \( \mathcal{E} \). Let \( \mathcal{B} \) be another basis and \( \mathbf{P} \) the change-of-basis matrix as in Section 2. Prove \( \mathbf{A}_{\mathcal{B}}=\mathbf{P}^{-1}\mathbf{A}_{\mathcal{E}}\mathbf{P} \).
Solution:
This is exactly Section 3. The key identity is \( \mathbf{x}_{\mathcal{E}}=\mathbf{P}\mathbf{x}_{\mathcal{B}} \) and \( [\mathcal{A}(\mathbf{x})]_{\mathcal{E}}=\mathbf{P}[\mathcal{A}(\mathbf{x})]_{\mathcal{B}} \). Combining with the definitions of matrix representations yields \( \mathbf{A}_{\mathcal{E}}\mathbf{P}=\mathbf{P}\mathbf{A}_{\mathcal{B}} \), hence \( \mathbf{A}_{\mathcal{B}}=\mathbf{P}^{-1}\mathbf{A}_{\mathcal{E}}\mathbf{P} \). □
Problem 3 (characteristic polynomial invariance): Prove that if \( \mathbf{B}=\mathbf{T}^{-1}\mathbf{A}\mathbf{T} \), then \( \det(\lambda\mathbf{I}-\mathbf{B})=\det(\lambda\mathbf{I}-\mathbf{A}) \).
Solution:
\[ \det(\lambda\mathbf{I}-\mathbf{B}) = \det(\lambda\mathbf{I}-\mathbf{T}^{-1}\mathbf{A}\mathbf{T}) = \det\!\big(\mathbf{T}^{-1}(\lambda\mathbf{I}-\mathbf{A})\mathbf{T}\big) = \\ \det(\mathbf{T}^{-1})\det(\lambda\mathbf{I}-\mathbf{A})\det(\mathbf{T}) = \det(\lambda\mathbf{I}-\mathbf{A}). \]
Therefore the characteristic polynomials (and eigenvalues) coincide. □
Problem 4 (trace invariance via cyclic property): Assume the cyclic property \( \operatorname{tr}(\mathbf{X}\mathbf{Y})=\operatorname{tr}(\mathbf{Y}\mathbf{X}) \) holds for conformable matrices. Prove \( \operatorname{tr}(\mathbf{T}^{-1}\mathbf{A}\mathbf{T})=\operatorname{tr}(\mathbf{A}) \).
Solution:
\[ \operatorname{tr}(\mathbf{T}^{-1}\mathbf{A}\mathbf{T}) = \operatorname{tr}(\mathbf{A}\mathbf{T}\mathbf{T}^{-1}) = \operatorname{tr}(\mathbf{A}\mathbf{I}) = \operatorname{tr}(\mathbf{A}). \]
□
Problem 5 (construct a simplifying coordinate change for a diagonalizable matrix): Let \( \mathbf{A}\in\mathbb{R}^{n\times n} \) be diagonalizable with \( \mathbf{A}=\mathbf{V}\boldsymbol{\Lambda}\mathbf{V}^{-1} \), where \( \boldsymbol{\Lambda} \) is diagonal. Show that in coordinates \( \mathbf{z}=\mathbf{V}^{-1}\mathbf{x} \), the matrix representing the linear map is \( \boldsymbol{\Lambda} \).
Solution:
Coordinate change: \( \mathbf{x}=\mathbf{V}\mathbf{z} \). Then the transformed matrix is \( \tilde{\mathbf{A}}=\mathbf{V}^{-1}\mathbf{A}\mathbf{V} \). Using the diagonalization:
\[ \tilde{\mathbf{A}}=\mathbf{V}^{-1}(\mathbf{V}\boldsymbol{\Lambda}\mathbf{V}^{-1})\mathbf{V} = (\mathbf{V}^{-1}\mathbf{V})\boldsymbol{\Lambda}(\mathbf{V}^{-1}\mathbf{V}) = \boldsymbol{\Lambda}. \]
Thus the map decouples in the diagonal basis. □
9. Summary
We established a rigorous distinction between abstract vectors/operators and their coordinate representations. A change of basis induces the conjugation rule \( \mathbf{A}_{\mathcal{B}}=\mathbf{P}^{-1}\mathbf{A}_{\mathcal{E}}\mathbf{P} \), which is exactly a similarity transformation. We proved core similarity invariants (characteristic polynomial, eigenvalues, trace, determinant) and highlighted numerical conditioning issues that arise in computation. These results are the algebraic backbone for later coordinate choices in modern control workflows.
10. References
- Schur, I. (1909). Über die charakteristischen Wurzeln einer linearen Substitution mit einer Anwendung auf die Theorie der Integralgleichungen. Mathematische Annalen, 66, 488–510.
- Schur, I. (1905). Über vertauschbare lineare Differentialausdrücke. Sitzungsberichte der Berliner Mathematischen Gesellschaft, 4, 2–8.
- Frobenius, G. (1879). Theorie der linearen Formen mit ganzen Coefficienten. Journal für die reine und angewandte Mathematik, 86, 146–208.
- Taussky, O., & Zassenhaus, H. (1959). On the similarity transformation between a matrix and its transpose. Pacific Journal of Mathematics, 9, 893–896.
- Shapiro, H. (1991). A survey of canonical forms and invariants for unitary similarity. Linear Algebra and its Applications, 147, 101–167.
- Solomon, L. (1999). Similarity of the companion matrix and its transpose (with an appendix by R. M. Guralnick). Linear Algebra and its Applications, 302–303, 555–561.
- Mehl, C. (2020). On the existence of Schur-like forms for matrices with symmetry structures. Vietnam Journal of Mathematics, 48, 831–845.
- Taussky, O. (1979). A diophantine problem arising out of similarity classes of integral matrices. Journal of Number Theory, 11(3), 472–475.