码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SVD奇异值分解


    一、首先要回顾以下线代一些基础知识:

    1.向量的大小,也就是向量的长度(一般称作为 模),等于他和他自己的内积的平方根

    2.若两个向量互相垂直,则两向量的内积为0。

    3.正交矩阵:任何两行互相垂直,长度为 1,正交矩阵的性质有,如正交矩阵A,A的转置等于A的逆。 ,可逆即满秩,反之满秩即可逆。正交矩阵的逆即其转置,当然可逆。可逆矩阵一定是方阵。可逆变换不改变秩。

    更多的正交变换和正交矩阵的性质参考这个链接:
    https://blog.csdn.net/MoreAction_/article/details/105442932?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166064462716781685349548%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166064462716781685349548&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogtop_positive~default-1-105442932-null-null.nonecase&utm_term=%E6%AD%A3%E4%BA%A4%E7%9F%A9%E9%98%B5&spm=1018.2226.3001.4450

    4.对角矩阵:对角矩阵只在对角线上含有非0元素,其它位置都为0。

    5.实对称矩阵:如果有n阶矩阵A,其矩阵的元素都为实数,且矩阵A的转置等于其本身(aij=aji)(i,j为元素的脚标),则称A为实对称矩阵。(n行n列的矩阵是一个方阵,也叫做n阶矩阵),ATA 即矩阵乘自身的转置得到的就是实对称矩阵,更准确得说是半正定实对称矩阵,特别的,如果矩阵 A的列向量线性无关,那么他的特征值全部为正,即为正定矩阵。实对称矩阵中非零特征值的个数等于该矩阵的秩。

    6.相似矩阵:相似矩阵的定义是,A、B都是n阶矩阵,若存在可逆矩阵P,使得P-1AP = B,(注意文中所有的P-1=P的逆矩阵)则定义矩阵B是矩阵A的相似矩阵或称矩阵A与矩阵B相似。对A 进行P-1AP称为对A进行相似变换。

    7.矩阵的对角化:矩阵对角化:对n阶矩阵A,如果可以找到可逆矩阵P,使得P-1AP = 对角阵,就称为把方阵A对角化。注释:1、对角阵的主对角元素为A的特征值 2、可逆矩阵P由A的n个线性无关的特征向量作列向量构成。 矩阵对角化的充要条件:n阶矩阵有n个线性无关的特征向量。实对称矩阵一定可以对角化。
    矩阵的对角化相关知识点: https://blog.csdn.net/u011484045/article/details/44724369?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166064706316782248513362%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166064706316782248513362&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogsobaiduend~default-3-44724369-null-null.nonecase&utm_term=%E7%9F%A9%E9%98%B5%E5%AF%B9%E8%A7%92%E5%8C%96&spm=1018.2226.3001.4450
    矩阵的对角化的计算过程:
    https://blog.csdn.net/compression/article/details/49180775?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166065017516781432988936%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=166065017516781432988936&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-49180775-null-null.142v41pc_rank_34_ecpm25,185v2tag_show&utm_term=%E7%9F%A9%E9%98%B5%E5%AF%B9%E8%A7%92%E5%8C%96%E8%AE%A1%E7%AE%97%E8%BF%87%E7%A8%8B&spm=1018.2226.3001.4187

    8.正定矩阵和半正定矩阵:如果A是实矩阵,则ATA(A的转置乘A)为实对称半正定矩阵。
    在这里插入图片描述
    正定矩阵的特征值全为正全大于0,而半正定矩阵的特征值是大于等于0,因为正定矩阵的行列式值为所有特征值的乘值,所以正定矩阵的行列式的值一定大于零。

    9.特征值乘积等于对应方阵行列式的值,特征值的和等于对应方阵行列式对角线元素之和,n阶矩阵一定有n个特征值,因为特征值是特征多项式的根,n阶方阵的特征多项式|A-λE|是个n次多项式

    10.如果一个矩阵的特征值两两不同,那么特征值所对应的特征向量线性无关,这个方阵就可以对角化。如果方阵有相同的特征值,他很可能存在线性相关的特征向量,在这种情况下,该方阵就不能被对角化。 矩阵特征值相等时,特征向量的全体构成特征子空间,如果这个特征子空间的维数是1,那么所有的特征向量都是线性相关的。如果维数k大于1,那么必然存在k个线性无关的特征向量。判断特征子空间维数k只要看特征多项式中这个特征根的重数,是几重根,特征子空间的维数就是多少。

    11. 如何判断向量组线性相关还是线性无关:若向量组的秩等于向量的个数,则该向量组是线性无关的;若向量组的秩小于向量的个数,则该向量组是线性相关的。具体做法就是先把向量组的各列向量拼成一个矩阵,并施行初等行变换变成行阶梯矩阵,若矩阵A秩小于向量个数m,方阵的情况下即叫不满秩行列式为0(矩阵的行秩和列秩相等),则向量组线性相关。行列式的性质中,如果行列式有两行(列)元素成比例,则此行列式为零。而组成方阵的各行(列)向量线性相关,只能说明方阵的某一行(列)可以由其他行线性表示。所以如果向量组的行列式为0,说明该向量组是线性相关的。所以可以引出的结论是一个矩阵的行向量里有多少个线性无关的向量,列向量里就一定也有多少个线性无关的向量

    二、SVD分解过程:

    视频:
    https://www.bilibili.com/video/BV1mx411E74T?p=6&vd_source=ec447224213be639260d3e28b04c224f

    博客:
    https://blog.csdn.net/weixin_44413191/article/details/108347942?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%9F%A9%E9%98%B5%E4%BB%BB%E4%BD%95%E4%B8%A4%E8%A1%8C%E4%BA%92%E7%9B%B8%E5%9E%82%E7%9B%B4&utm_medium=distribute.pc_search_result.none-task-blog-2blogsobaiduweb~default-0-108347942.nonecase&spm=1018.2226.3001.4450

    三、SVD奇异值的应用,求解求齐次线性方程组:Ax=0:

    方法一:对矩阵 A做SVD 分解,分解后V 的最后一列向量即为Ax=0 的最小二乘解。
    方法二:求解ATA 的特征向量和特征值,最小特征值对应的特征向量即为Ax=0 的最小二乘解。
    注:L2范数可以省去下标2也就是右下角的2,左上角的2都代表平方,右下角的数字代表范数。

    关于Ax = 0的求解,还有另一种理解,其实就是先看做Ax = λx,即特征值和特征向量的关系,x为特征向量,λ为特征值。当Ax = 0时,x肯定不为0因为x为0(0指向量而不是标量)就没有意义了,所以x就等于λ取0时对应的特征向量,通常我们是取λ最小时对应的特征向量为解但是极端情况下就是λ = 0时。原因如下:对于最小二乘法的对应的A,A等于UTU(U的转置乘U),得到的A是一个半正定实对称矩阵,所以特征值是大于等于0的,最小也就是最极端的情况下就是0,但我们在解的时候直接就是取特征值最小时对应的特征向量为解就行了。
    参考链接(证明):https://zhuanlan.zhihu.com/p/413247298

    当Ax=0, r(A)
    https://ethanli.blog.csdn.net/article/details/117736099

  • 相关阅读:
    软考高级信息系统项目管理师系列论文四:论信息系统项目的成本管理
    Centos 7安装pm2 , 操作等常用命令
    总结线程安全问题的原因和解决方案
    DOM Clobbering的原理及应用
    深度操作系统 15.2——怀揣梦想,笃定前行
    Linux-实用操作(黑马学习笔记)
    黑马笔记---常见算法与Lambda表达式
    【MySQL篇】第二篇——库的操作
    STM32F4x之中断一
    【Ant Design Pro】使用ant design pro做为你的开发模板(八)开发第一个完整的后台页面
  • 原文地址:https://blog.csdn.net/Rolandxxx/article/details/126372052
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号