Circulant matrices #
This file contains the definition and basic results about circulant matrices.
Given a vector v : n → α indexed by a type that is endowed with subtraction,
Matrix.circulant v is the matrix whose (i, j)th entry is v (i - j).
Main results #
Matrix.circulant: the circulant matrix generated by a given vectorv : n → α.Matrix.circulant_mul: the product of two circulant matricescirculant vandcirculant wis the circulant matrix generated bycirculant v *ᵥ w.Matrix.circulant_mul_comm: multiplication of circulant matrices commutes when the elements do.
Implementation notes #
Matrix.Fin.foo is the Fin n version of Matrix.foo.
Namely, the index type of the circulant matrices in discussion is Fin n.
Tags #
circulant, matrix
Given the condition [Sub n] and a vector v : n → α,
we define circulant v to be the circulant matrix generated by v of type Matrix n n α.
The (i,j)th entry is defined to be v (i - j).
Equations
- Matrix.circulant v = Matrix.of fun (i j : n) => v (i - j)
Instances For
Multiplication of circulant matrices commutes when the elements do.
k • circulant v is another circulant matrix circulant (k • v).
Note we use ↑i = 0 instead of i = 0 as Fin 0 has no 0.
This means that we cannot state this with Pi.single as we did with Matrix.circulant_single.
A circulant of v is symmetric iff v equals its reverse.
If circulant v is symmetric, ∀ i j : I, v (- i) = v i.