pub fn matrix_norm(a: &Matrix, kind: NormMat) -> f64
Expand description

Computes the matrix norm

Computes one of:

One:  1-norm

      ‖a‖_1 = max_j ( Σ_i |aᵢⱼ| )
Inf:  inf-norm

      ‖a‖_∞ = max_i ( Σ_j |aᵢⱼ| )
Fro:  Frobenius-norm (2-norm)

      ‖a‖_F = sqrt(Σ_i Σ_j |aij|²) == ‖a‖_2
Max: max-norm

     ‖a‖_max = max_ij ( |aᵢⱼ| )

Example

use russell_lab::{matrix_norm, Matrix, NormMat};

fn main() {
    let a = Matrix::from(&[
        [-2.0,  2.0],
        [ 1.0, -4.0],
    ]);
    assert_eq!(matrix_norm(&a, NormMat::One), 6.0);
    assert_eq!(matrix_norm(&a, NormMat::Inf), 5.0);
    assert_eq!(matrix_norm(&a, NormMat::Fro), 5.0);
    assert_eq!(matrix_norm(&a, NormMat::Max), 4.0);
}