Linear Transformations
In the study of vector spaces, the objects of interest are not merely the spaces themselves, but the mappings between them that preserve their algebraic structure. These mappings, known as linear transformations (or linear maps), form the foundation of functional analysis and numerical linear algebra.
1. Formal Definition
Let and be vector spaces over the same field . A function is a linear transformation if, for all and all , the following two conditions hold:
- Additivity:
- Homogeneity:
These conditions are equivalent to the single requirement of linearity: for all and . We denote the set of all such maps as . When , we call a linear operator.
2. Kernel and Image
Associated with every linear map are two fundamental subspaces:
The Kernel
The kernel (or null space) of , denoted by , is the set of all vectors in that map to the zero vector in : The kernel measures the “loss of information” under . is injective if and only if .
The Image
The image (or range) of , denoted by or , is the set of all vectors in that are reached by applying to vectors in : is surjective if .
The First Isomorphism Theorem
A profound result in abstract algebra specialized for vector spaces states that: This implies the Rank-Nullity Theorem: If is finite-dimensional, then: where is often called the rank of and the nullity.
3. The Matrix of a Transformation
In finite-dimensional spaces, every linear transformation can be represented as a matrix. Let be a basis for and be a basis for . The matrix of with respect to bases and , denoted by , is the matrix whose -th column is the coordinate vector of with respect to : For any , the transformation is equivalent to matrix-vector multiplication:
4. Isomorphisms and Coordinates
A linear map is an isomorphism if it is bijective (both injective and surjective). If such a map exists, and are said to be isomorphic, written .
Two finite-dimensional vector spaces are isomorphic if and only if they have the same dimension. Specifically, any -dimensional vector space over is isomorphic to via the coordinate map .
5. Composition and Invertibility
Linear transformations can be composed. If and are linear maps, then is also linear.
In terms of matrices, composition corresponds to matrix multiplication. If are bases for respectively: A map is invertible if and only if its matrix is invertible (square and non-singular).
6. Special Transformations
Scaling (Dilation)
A scaling transformation stretches or shrinks space along the principal axes. Given a vector of scales , the transformation is represented by a diagonal matrix: If for all , the map is a homothety or uniform scaling.
Projections (Idempotent Operators)
An operator is a projection if . Any such operator induces a direct sum decomposition: Every vector can be uniquely written as , where and .
Rotations
In , a rotation by angle counter-clockwise is given by: Rotations are examples of orthogonal transformations, which preserve the inner product: . In , they belong to the special orthogonal group .
7. Invariant Subspaces
A subspace is invariant under if for all . The study of invariant subspaces is central to canonical forms (like Jordan Normal Form). If is invariant, we can consider the restricted map , which simplifies the analysis of . Eigenvectors span the simplest invariant subspaces: one-dimensional lines.
8. The Adjoint of a Map (Briefly)
In an inner product space, for every linear map , there exists a unique map called the adjoint such that: for all . In the standard basis of , the matrix of is the conjugate transpose of the matrix of .
Python Implementation: Symbolic Linear Algebra
Using sympy, we can analyze linear transformations symbolically without numerical precision issues.
import sympy as sp
# Define symbols and a vector space basis
x, y, z = sp.symbols('x y z')
v = sp.Matrix([x, y, z])
# Define a linear transformation T: R^3 -> R^2
# T(x, y, z) = (x + 2y, y - z)
T_matrix = sp.Matrix([
[1, 2, 0],
[0, 1, -1]
])
# 1. Apply transformation to a general vector
result = T_matrix * v
print(f"T(x,y,z) = {result}")
# 2. Find the Kernel (Nullspace)
kernel = T_matrix.nullspace()
print(f"Basis for Kernel: {kernel}")
# 3. Find the Image (Column Space)
image = T_matrix.columnspace()
print(f"Basis for Image: {image}")
# 4. Verify Rank-Nullity
rank = T_matrix.rank()
nullity = len(kernel)
dim_V = T_matrix.cols
print(f"Rank ({rank}) + Nullity ({nullity}) = {dim_V}")