Vandermonde matrix #
This file defines the vandermonde
matrix and gives its determinant.
Main definitions #
vandermonde v
: a square matrix with thei, j
th entry equal tov i ^ j
.
Main results #
det_vandermonde
:det (vandermonde v)
is the product ofv i - v j
, where(i, j)
ranges over the unordered pairs.
vandermonde v
is the square matrix with i
th row equal to 1, v i, v i ^ 2, v i ^ 3, ...
.
Equations
- Matrix.vandermonde v = Matrix.of fun (i j : Fin n) => v i ^ ↑j
Instances For
@[simp]
theorem
Matrix.vandermonde_apply
{R : Type u_1}
[CommRing R]
{n : ℕ}
(v : Fin n → R)
(i j : Fin n)
:
Matrix.vandermonde v i j = v i ^ ↑j
theorem
Matrix.vandermonde_mul_vandermonde_transpose
{R : Type u_1}
[CommRing R]
{n : ℕ}
(v w : Fin n → R)
(i j : Fin n)
:
(Matrix.vandermonde v * (Matrix.vandermonde w).transpose) i j = ∑ k : Fin n, (v i * w j) ^ ↑k
theorem
Matrix.vandermonde_transpose_mul_vandermonde
{R : Type u_1}
[CommRing R]
{n : ℕ}
(v : Fin n → R)
(i j : Fin n)
:
((Matrix.vandermonde v).transpose * Matrix.vandermonde v) i j = ∑ k : Fin n, v k ^ (↑i + ↑j)
theorem
Matrix.det_vandermonde
{R : Type u_1}
[CommRing R]
{n : ℕ}
(v : Fin n → R)
:
(Matrix.vandermonde v).det = ∏ i : Fin n, ∏ j ∈ Finset.Ioi i, (v j - v i)
theorem
Matrix.det_vandermonde_ne_zero_iff
{R : Type u_1}
[CommRing R]
[IsDomain R]
{n : ℕ}
{v : Fin n → R}
:
(Matrix.vandermonde v).det ≠ 0 ↔ Function.Injective v
@[simp]
theorem
Matrix.det_vandermonde_add
{R : Type u_1}
[CommRing R]
{n : ℕ}
(v : Fin n → R)
(a : R)
:
(Matrix.vandermonde fun (i : Fin n) => v i + a).det = (Matrix.vandermonde v).det
@[simp]
theorem
Matrix.det_vandermonde_sub
{R : Type u_1}
[CommRing R]
{n : ℕ}
(v : Fin n → R)
(a : R)
:
(Matrix.vandermonde fun (i : Fin n) => v i - a).det = (Matrix.vandermonde v).det
theorem
Matrix.eval_matrixOfPolynomials_eq_vandermonde_mul_matrixOfPolynomials
{R : Type u_1}
[CommRing R]
{n : ℕ}
(v : Fin n → R)
(p : Fin n → Polynomial R)
(h_deg : ∀ (i : Fin n), (p i).natDegree ≤ ↑i)
:
(Matrix.of fun (i j : Fin n) => Polynomial.eval (v i) (p j)) = Matrix.vandermonde v * Matrix.of fun (i j : Fin n) => (p j).coeff ↑i
theorem
Matrix.det_eval_matrixOfPolynomials_eq_det_vandermonde
{R : Type u_1}
[CommRing R]
{n : ℕ}
(v : Fin n → R)
(p : Fin n → Polynomial R)
(h_deg : ∀ (i : Fin n), (p i).natDegree = ↑i)
(h_monic : ∀ (i : Fin n), (p i).Monic)
:
(Matrix.vandermonde v).det = (Matrix.of fun (i j : Fin n) => Polynomial.eval (v i) (p j)).det