1. 矩阵范数

假设我们有一个矩阵A 表示如下:
A = [ 1 2 3 4 5 6 7 8 9 ] \begin{equation} A=\begin{bmatrix} 1&2&3\\\\ 4&5&6\\\\ 7&8&9 \end{bmatrix} \end{equation} A= 147258369

  • L1范数表示A的列范数,即将矩阵A的按列划分后,求出最大的列
    ∣ ∣ A ∣ ∣ 1 = max ⁡ 1 ≤ j ≤ n ∑ i = 1 n ∣ a i j ∣ \begin{equation} ||A||_1=\max\limits_{1\le j\le n}\sum_{i=1}^n|a_{ij}| \end{equation} ∣∣A1=1jnmaxi=1naij
    ∣ ∣ A ∣ ∣ 1 = max ⁡ [ 12 , 15 , 18 ] = 18 \begin{equation} ||A||_1=\max[12,15,18]=18 \end{equation} ∣∣A1=max[12,15,18]=18
  • L ∞ L_{\infty} L范数表示A的行范数,即将矩阵A的按行划分后,求出最大的行
    ∣ ∣ A ∣ ∣ 1 = max ⁡ 1 ≤ i ≤ n ∑ i = 1 n ∣ a i j ∣ \begin{equation} ||A||_1=\max\limits_{1\le i\le n}\sum_{i=1}^n|a_{ij}| \end{equation} ∣∣A1=1inmaxi=1naij
    ∣ ∣ A ∣ ∣ ∞ = max ⁡ [ 6 , 15 , 24 ] = 24 \begin{equation} ||A||_{\infty}=\max[6,15,24]=24 \end{equation} ∣∣A=max[6,15,24]=24
  • L2范数表示 A T A A^TA ATA最大特征值的根号值,先求 A T A A^TA ATA,再求最大特征值的根号
    ∣ ∣ A ∣ ∣ 2 = λ max ⁡ ( A T A ) = 16.848 \begin{equation} ||A||_2=\sqrt{\lambda_{\max}(A^TA)}=16.848 \end{equation} ∣∣A2=λmax(ATA) =16.848

2. 代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :matrix_normtest.py
# @Time      :2024/9/26 9:53
# @Author    :Jason Zhang
import numpy as np

np.set_printoptions(suppress=True, precision=3)
np.random.seed(20230512)


class Eigenvalue():
    def __init__(self, array):
        self.array = array
        self.value, self.vector = np.linalg.eig(self.array)
        self.L1 = np.linalg.norm(self.array, 1)
        self.L2 = np.linalg.norm(self.array, 2)
        self.Linfty = np.linalg.norm(self.array, np.inf)

    def __str__(self):
        return f"array:\n{self.array}:\n eigenvalue:\n{self.value}\n,eigenveotr:\n{self.vector}" \
               f"\nL1:={self.L1},\nL2:={self.L2}\nL_inf:={self.Linfty}"


if __name__ == "__main__":
    run_code = 0
    A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
    ATA = np.dot(A.T, A)
    A_eigen = Eigenvalue(A)
    print(A_eigen)
    ATA_eigen = Eigenvalue(ATA)
    print(ATA_eigen)
  • 运行结果:
array:
[[1 2 3]
 [4 5 6]
 [7 8 9]]:
 eigenvalue:
[16.117 -1.117 -0.   ]
,eigenveotr:
[[-0.232 -0.786  0.408]
 [-0.525 -0.087 -0.816]
 [-0.819  0.612  0.408]]
L1:=18.0,
L2:=16.84810335261421
L_inf:=24.0
array:
[[ 66  78  90]
 [ 78  93 108]
 [ 90 108 126]]:
 eigenvalue:
[283.859   1.141   0.   ]
,eigenveotr:
[[-0.48  -0.777  0.408]
 [-0.572 -0.076 -0.816]
 [-0.665  0.625  0.408]]
L1:=324.0,
L2:=283.8585865803701
L_inf:=324.0

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部