矩阵特征值和奇异值

1. 方阵

这里我们讨论的都是方阵情况,即m=n ,结论如下:
当矩阵 A 的奇异值和特征值通常不一样!!! 当矩阵A的奇异值和特征值通常不一样!!! 当矩阵A的奇异值和特征值通常不一样!!!

  • 当矩阵A为对称的正定矩阵时,奇异值和特征值一样。特征向量的绝对值等于V矩阵的绝对值。

2. Python代码验证

python 复制代码
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :eigen_sigular_test.py
# @Time      :2024/10/26 14:41
# @Author    :Jason Zhang
import numpy as np

np.set_printoptions(suppress=True, precision=3)


class EigenSingularTest(object):
    def __init__(self, matrix):
        self.matrix = matrix
        self._e_value = np.zeros_like(self.matrix)
        self._e_vector = np.zeros_like(self.matrix)
        self._s_value = np.zeros_like(self.matrix)
        self._su_vector = np.zeros_like(self.matrix)
        self._svt_vector = np.zeros_like(self.matrix)

    def init_method(self):
        pass

    @property
    def e_value(self):
        self._e_value, _ = np.linalg.eig(self.matrix)
        self._e_value = np.diag(self._e_value)
        return self._e_value

    @property
    def e_vector(self):
        _, self._e_vector = np.linalg.eig(self.matrix)
        return self._e_vector

    @property
    def su_vector(self):
        self._su_vector, _, _ = np.linalg.svd(self.matrix)
        return self._su_vector

    @property
    def s_value(self):
        _, self._s_value, _ = np.linalg.svd(self.matrix)
        self._s_value = np.diag(self._s_value)
        return self._s_value

    @property
    def svt_vector(self):
        _, _, self._svt_vector = np.linalg.svd(self.matrix)
        return self._svt_vector

    def check_result(self):
        check_e_value = self.e_value
        check_e_vector = self.e_vector
        check_su_vector = self.su_vector
        check_s_value = self.s_value
        check_svt_vector = self.svt_vector
        print(f"$"*50)
        print(f"e_value=\n{check_e_value}")
        print(f"e_vector=\n{check_e_vector}")
        print("*" * 50)
        print(f"u_vector=\n{check_su_vector}")
        print(f"s_value=\n{check_s_value}")
        print(f"vt_vector=\n{check_svt_vector}")
        check_result_value = np.allclose(check_e_value, check_s_value)
        check_result_vector = np.allclose(np.abs(check_svt_vector.T), np.abs(check_e_vector))
        print(f"e_value is {check_result_value} same with s_value")
        print(f"e_vector is {check_result_vector} same with abs(svt_vector.T)")
        print(f"$"*50)


if __name__ == "__main__":
    run_code = 0
    matrix_n = 5
    # test_matrix = np.random.randint(1, 10, (matrix_n, matrix_n))
    test_matrix = np.arange(9).reshape((3, 3))
    test1 = EigenSingularTest(test_matrix)
    test1.check_result()
    s_matrix = test_matrix @ test_matrix.T
    s_matrix1 = EigenSingularTest(s_matrix)
    s_matrix1.check_result()
  • 结果如下:
python 复制代码
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
e_value=
[[13.348  0.     0.   ]
 [ 0.    -1.348  0.   ]
 [ 0.     0.    -0.   ]]
e_vector=
[[ 0.165  0.8    0.408]
 [ 0.506  0.104 -0.816]
 [ 0.847 -0.591  0.408]]
**************************************************
u_vector=
[[-0.135  0.903  0.408]
 [-0.496  0.295 -0.816]
 [-0.858 -0.313  0.408]]
s_value=
[[14.227  0.     0.   ]
 [ 0.     1.265  0.   ]
 [ 0.     0.     0.   ]]
vt_vector=
[[-0.466 -0.571 -0.676]
 [-0.785 -0.085  0.614]
 [-0.408  0.816 -0.408]]
e_value is False same with s_value
e_vector is False same with abs(svt_vector.T)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
e_value=
[[202.399   0.      0.   ]
 [  0.      1.601   0.   ]
 [  0.      0.     -0.   ]]
e_vector=
[[-0.135 -0.903  0.408]
 [-0.496 -0.295 -0.816]
 [-0.858  0.313  0.408]]
**************************************************
u_vector=
[[-0.135  0.903  0.408]
 [-0.496  0.295 -0.816]
 [-0.858 -0.313  0.408]]
s_value=
[[202.399   0.      0.   ]
 [  0.      1.601   0.   ]
 [  0.      0.      0.   ]]
vt_vector=
[[-0.135 -0.496 -0.858]
 [ 0.903  0.295 -0.313]
 [-0.408  0.816 -0.408]]
e_value is True same with s_value
e_vector is True same with abs(svt_vector.T)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
相关推荐
啊阿狸不会拉杆5 分钟前
第二十一章:Python-Plotly库实现数据动态可视化
开发语言·python·plotly
月走乂山13 分钟前
nocobase + Python爬虫实现数据可视化
爬虫·python·低代码·信息可视化
滴答滴答嗒嗒滴16 分钟前
Python小练习系列 Vol.12:学生信息排序(sorted + key函数)
开发语言·python
天天进步20151 小时前
Python项目-基于Flask的个人博客系统设计与实现(1)
开发语言·python·flask
安然无虞1 小时前
31天Python入门——第20天:魔法方法详解
开发语言·后端·爬虫·python
靠近彗星1 小时前
基于 Vue + Django + MySQL 实现个人博客/CMS系统
前端·vue.js·python·mysql·django
励志成为大佬的小杨2 小时前
pytorch模型的进阶训练和性能优化
人工智能·pytorch·python
m0_490240672 小时前
软件自动化测试(1):python+selenium自动化测试环境搭建
开发语言·python·selenium
橘猫云计算机设计3 小时前
基于ssm的食物营养成分数据分析平台设计与实现(源码+lw+部署文档+讲解),源码可白嫖!
后端·python·信息可视化·数据挖掘·数据分析·django·毕业设计
liuhaoran___4 小时前
计算机求职面试中高频出现的经典题目分类整理
python