Documentation

Monlib.LinearAlgebra.Matrix.PosDefRpow

The real-power of a positive definite matrix #

This file defines the real-power of a positive definite matrix. In particular, given a positive definite matrix x and real number r, we get posDef.rpow as the matrix eigenvector_matrix * (coe ∘ diagonal (eigenvalues ^ r)) * eigenvector_matrix⁻¹.

It also proves some basic obvious properties of posDef.rpow such as posDef.rpow_mul_rpow and posDef.rpow_zero.

noncomputable def Matrix.IsHermitian.rpow {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.IsHermitian) (r : ℝ) :
Matrix n n π•œ
Equations
Instances For
    @[reducible, inline]
    noncomputable abbrev Matrix.PosSemidef.rpow {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosSemidef) (r : ℝ) :
    Matrix n n π•œ
    Equations
    • hQ.rpow r = β‹―.rpow r
    Instances For
      @[reducible, inline]
      noncomputable abbrev Matrix.PosDef.rpow {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) (r : ℝ) :
      Matrix n n π•œ
      Equations
      • hQ.rpow r = β‹―.rpow r
      Instances For
        theorem Matrix.PosDef.rpow_eq {π•œ : Type u_1} [RCLike π•œ] {n : Type u_2} [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) (r : ℝ) :
        hQ.rpow r = (Matrix.innerAut β‹―.eigenvectorUnitary) (Matrix.diagonal (RCLike.ofReal ∘ (β‹―.eigenvalues ^ r)))
        theorem Matrix.PosSemidef.rpow_mul_rpow {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] (r₁ : NNRealΛ£) (rβ‚‚ : NNRealΛ£) {Q : Matrix n n π•œ} (hQ : Q.PosSemidef) :
        hQ.rpow ↑↑r₁ * hQ.rpow ↑↑rβ‚‚ = hQ.rpow (↑↑r₁ + ↑↑rβ‚‚)
        theorem Matrix.PosDef.rpow_mul_rpow {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] (r₁ : ℝ) (rβ‚‚ : ℝ) {Q : Matrix n n π•œ} (hQ : Q.PosDef) :
        hQ.rpow r₁ * hQ.rpow rβ‚‚ = hQ.rpow (r₁ + rβ‚‚)
        theorem Matrix.IsHermitian.rpow_one_eq_self {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.IsHermitian) :
        hQ.rpow 1 = Q
        theorem Matrix.PosSemidef.rpow_one_eq_self {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosSemidef) :
        hQ.rpow 1 = Q
        theorem Matrix.PosDef.rpow_one_eq_self {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) :
        hQ.rpow 1 = Q
        noncomputable instance Matrix.PosDef.eigenvaluesInvertible {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) :
        Invertible β‹―.eigenvalues
        Equations
        • hQ.eigenvaluesInvertible = { invOf := β‹―.eigenvalues⁻¹, invOf_mul_self := β‹―, mul_invOf_self := β‹― }
        noncomputable instance Matrix.PosDef.eigenvaluesInvertible' {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) :
        Invertible (RCLike.ofReal ∘ β‹―.eigenvalues)
        Equations
        • hQ.eigenvaluesInvertible' = { invOf := RCLike.ofReal ∘ β‹―.eigenvalues⁻¹, invOf_mul_self := β‹―, mul_invOf_self := β‹― }
        theorem Matrix.PosDef.rpow_neg_one_eq_inv_self {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) :
        hQ.rpow (-1) = Q⁻¹
        theorem Matrix.IsHermitian.rpow_zero {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.IsHermitian) :
        hQ.rpow 0 = 1
        theorem Matrix.PosSemidef.rpow_zero {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosSemidef) :
        hQ.rpow 0 = 1
        theorem Matrix.PosDef.rpow_zero {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) :
        hQ.rpow 0 = 1
        theorem Matrix.IsHermitian.rpow.isHermitian {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.IsHermitian) (r : ℝ) :
        (hQ.rpow r).IsHermitian
        theorem Matrix.PosSemidef.rpow.isPosSemidef {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosSemidef) (r : ℝ) :
        (hQ.rpow r).PosSemidef
        theorem Matrix.PosDef.rpow.isPosDef {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) (r : ℝ) :
        (hQ.rpow r).PosDef
        theorem Matrix.PosSemidef.sqrt_eq_rpow {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosSemidef) :
        hQ.sqrt = hQ.rpow (1 / 2)
        theorem Matrix.PosDef.sqrt_eq_rpow {n : Type u_1} {π•œ : Type u_2} [RCLike π•œ] [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) :
        (β‹― : Q.PosSemidef).sqrt = hQ.rpow (1 / 2)
        theorem Matrix.PosDef.rpow_ne_zero {n : Type u_1} [Fintype n] [DecidableEq n] [Nonempty n] {Q : Matrix n n β„‚} (hQ : Q.PosDef) {r : ℝ} :
        hQ.rpow r β‰  0
        theorem Matrix.IsHermitian.rpow_cast {π•œ : Type u_1} [RCLike π•œ] {n : Type u_2} [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.IsHermitian) (r : ℝ) {S : Matrix n n π•œ} (hQS : Q = S) :
        hQ.rpow r = β‹―.rpow r
        theorem Matrix.PosDef.rpow_cast {π•œ : Type u_1} [RCLike π•œ] {n : Type u_2} [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosDef) (r : ℝ) {S : Matrix n n π•œ} (hQS : Q = S) :
        hQ.rpow r = β‹―.rpow r
        theorem Matrix.PosSemidef.rpow_cast {π•œ : Type u_1} [RCLike π•œ] {n : Type u_2} [Fintype n] [DecidableEq n] {Q : Matrix n n π•œ} (hQ : Q.PosSemidef) (r : ℝ) {S : Matrix n n π•œ} (hQS : Q = S) :
        hQ.rpow r = β‹―.rpow r
        theorem Matrix.IsHermitian.eigenvectorMatrix_conjTranspose_mul {n : Type u_2} [Fintype n] [DecidableEq n] {π•œ : Type u_1} [RCLike π•œ] {x : Matrix n n π•œ} (hx : x.IsHermitian) :
        hx.eigenvectorMatrix.conjTranspose * hx.eigenvectorMatrix = 1
        theorem Matrix.posDefOne_rpow {π•œ : Type u_1} [RCLike π•œ] (n : Type u_2) [Fintype n] [DecidableEq n] (r : ℝ) :
        β‹―.rpow r = 1