SVD分解

对于任一给定的矩阵Am×n\boldsymbol{A}_{m\times n}Am×n​,都存在这样的分解:
A=UDVT\boldsymbol{A}=\boldsymbol{U}\boldsymbol{D}\boldsymbol{V}^TA=UDVT
这里:
U\boldsymbol{U}U是一个(m×m)(m\times m)(m×m)的正交矩阵
D\boldsymbol{D}D是一个(m×n)(m\times n)(m×n)的对角矩阵
V\boldsymbol{V}V是一个(n×n)(n\times n)(n×n)的正交矩阵

D\boldsymbol{D}D中的对角元叫做A\boldsymbol{A}A的奇异值
U\boldsymbol{U}U中的列向量叫做A\boldsymbol{A}A的左奇异向量
V\boldsymbol{V}V中的列向量叫做A\boldsymbol{A}A的右奇异向量

SVD解优化问题

解非齐次线性方程组(Ax = b)

问题等价于min⁡∥Ax−b∥2\min\parallel \boldsymbol{Ax}-\boldsymbol{b}\parallel^2min∥Ax−b∥2,是一个非线性优化问题。
对A进行SVD分解
min⁡∥Ax−b∥2=min⁡∥UDVTx−b∥2=min⁡∥DVTx−UTb∥2\min\parallel \boldsymbol{Ax}-\boldsymbol{b}\parallel^2 \\ = \min \parallel \boldsymbol{U}\boldsymbol{D}\boldsymbol{V}^T \boldsymbol{x}-\boldsymbol{b}\parallel^2 \\ = \min \parallel \boldsymbol{D}\boldsymbol{V}^T \boldsymbol{x}- \boldsymbol{U}^T\boldsymbol{b}\parallel^2min∥Ax−b∥2=min∥UDVTx−b∥2=min∥DVTx−UTb∥2
设y=VTx\boldsymbol{y}=\boldsymbol{V}^T\boldsymbol{x}y=VTx, c=UTb\boldsymbol{c} = \boldsymbol{U}^T \boldsymbol{b}c=UTb,则min⁡∥DVTx−UTb∥2\min \parallel \boldsymbol{D}\boldsymbol{V}^T \boldsymbol{x}- \boldsymbol{U}^T\boldsymbol{b}\parallel^2min∥DVTx−UTb∥2可以表述为Dy=c\boldsymbol{D}\boldsymbol{y}= \boldsymbol{c}Dy=c,方程组的解为yi=ci/di\boldsymbol{y}_i=\boldsymbol{c}_i/\boldsymbol{d}_iyi​=ci​/di​

解齐次方程组(Ax = 0)

问题等价于min⁡∥Ax∥2\min\parallel \boldsymbol{Ax}\parallel^2min∥Ax∥2
上式转化为:
min⁡∥Ax∥2=min⁡∥UDVTx∥2\min\parallel \boldsymbol{Ax}\parallel^2 \\=\min \parallel \boldsymbol{U}\boldsymbol{D}\boldsymbol{V}^T \boldsymbol{x}\parallel^2min∥Ax∥2=min∥UDVTx∥2
令y=VTx\boldsymbol{y} = \boldsymbol{V}^T\boldsymbol{x}y=VTx,则上式变为
min⁡∥Dy∥2\min \parallel \boldsymbol{Dy}\parallel^2min∥Dy∥2
D是一个对角矩阵,且对角元素按照递减的顺序排列,所以最小值即最优解在y=(0,0,...,1)T\boldsymbol{y}=(0,0,...,1)^Ty=(0,0,...,1)T时取得,此时x=Vy\boldsymbol{x}=\boldsymbol{V}\boldsymbol{y}x=Vy,所以最优解就是V\boldsymbol{V}V的最小奇异值对应的列向量。比如,最小奇异值在第10行10列,那么解向量x\boldsymbol{x}x就等于V\boldsymbol{V}V的第10个列向量.

参考链接: link.

SVD求解线性方程组相关推荐

  1. 求解线性方程组(SVD,QR,Gauss,LU)

    曲线拟合过程中,需要求解线性方程组,下面谈谈线性方程组的求解方法: 1)svd求解 对于齐次线性方程 A*X =0; 当A的行数大于列数时,就需要求解最小二乘解,在||X||=1的约束下,其最小二乘解 ...

  2. 【原创】开源Math.NET基础数学类库使用(06)直接求解线性方程组

    阅读目录 前言 1.数值分析与线性方程 2.Math.NET解线性方程源码分析 3.Math.NET求解线性方程的实例 4.资源                本博客所有文章分类的总目录:[总目录]本 ...

  3. 五、广义逆矩阵–求解线性方程组

    五.广义逆矩阵–求解线性方程组 1. 广义逆矩阵A+ 为解决各种线性方程组(系数矩阵是非方阵和方阵为奇异),将逆矩阵的概念推广到"不可逆方阵"和"长方形矩阵"上 ...

  4. 雅克比(Jacobi)迭代法求解线性方程组

    长博文不利于翻阅,于是又将Jacobi迭代法单独出来了. 这篇博文把高斯-赛德尔迭代法和雅克比迭代法都放到一起了,个人觉得看着有点累.(迭代法求解线性方程组),不过还是要看的,因为它引出了迭代法. 进 ...

  5. 迭代法求解线性方程组的收敛问题总结

    本讲之前,先将高斯-赛德尔迭代法和雅克比迭代法以及迭代法求解线性方程组贴出来,毕竟收敛问题研究的是迭代方法的收敛问题. 进入主题: 判断迭代法收敛的办法: 1.首先根据方程组的系数矩阵A的特点判断: ...

  6. Gauss-Seidel迭代求解线性方程组

    高斯-赛德尔迭代法考试比较多,所以考虑再三,还是单独提取出来独立一篇,方便查阅,突出重点. 首先举例引入: 通过手动求解下面的线性方程组得到精确解: 再用高斯-赛德尔迭代法求解比较: 本人拙见,将每一 ...

  7. Guass列主元消去法求解线性方程组

    上篇博文讲到:Guass消去法求解线性方程组,也提到了此方法求解线性方程组存在的问题,因此有如下: 基本思想: 看不懂没关系,直接看下面的例题,会有更直观的理解,然后再回到这里继续看. 选主元的步骤( ...

  8. Guass消去法求解线性方程组

    基本思想: 具体消元过程: 回代解方程组: 高斯顺序消去法求解线性方程组的计算公式: 存在的问题: 这种方法不是很实用,但是通常讲求解线性方程组都会先提到这种方法,这是基础,还是需要看看.

  9. python解矩阵方程_用Python代写的Numpy求解线性方程组

    在本文中,您将看到如何使用Python的Numpy库解决线性方程组. 什么是线性方程组? 维基百科将线性方程组定义为: 在数学中,线性方程组(或线性系统)是两个或多个涉及同一组变量的线性方程的集合. ...

  10. Python求解线性方程组

    我们可以直接调用现成的函数库,直接求解线性方程组,而不用自己去写源代码. #  求解线性方程组 from scipy import linalg import numpy as np # x1 + x ...

最新文章

  1. 韩国文档的编码方式_像韩国学生学习英语一样学习编码
  2. Interview Q A 小明一家5口如何过桥
  3. linux 重启udev服务,Linux 7.x 中 UDEV 生效的方法
  4. python画不出来图是什么原因-完美解决ARIMA模型中plot_acf画不出图的问题
  5. 心得体悟帖---12、志向还是太短浅,目光也是
  6. C语言试题五十七之假定输入的字符串中只包含字母和*号。请编写函数function,它的功能是:删除字符串中所有*号。在编写函数时,不得使用c语言提供的字符串函数。
  7. 幼儿园小班上计算机课 作业内容是手口一致,小班幼儿手口不能一致的点数怎么办...
  8. java在初始化过程_Java初始化和实例化顺序
  9. 在分页后web报表的最后一页补足空行的方法
  10. 口布杯花的60种叠法_10种餐巾折花杯花的步骤用文字解说怎么折
  11. 红外遥控的发射和接收原理
  12. 理解机器翻译模型 Transformer
  13. 主流四大虚拟化架构对比分析
  14. 体验Windows Mobile 6.5 (模拟器)
  15. vss服务器状态失败_vss问题解决办法
  16. log4j2配置详解及自定义Appender
  17. springboot springsecurity报错 **.LoginUser cannot be cast to **.LoginUser
  18. 【荣耀】2021年招聘开启,新荣耀,新征程 (base Xian or Beijing) - 内推
  19. 苹果系统怎样修改mac地址?
  20. java生成订单编号

热门文章

  1. SHA1摘要算法(带示例)
  2. kali 安装volatility_volatility的使用
  3. 关于Javascript的学习心得
  4. spring boot启动报错: The APR based Apache Tomcat Native library which allows optimal performance
  5. Python之网络编程
  6. KNN算法实现鸢尾花数据集分类 C语言实现(附数据集)
  7. 汉洛塔问题(c解决)
  8. 《中国睡眠研究报告2022》:被调查大学生睡前不看手机的不足3%
  9. 畅游人工智能之海 | Keras教程之Keras的知识结构
  10. 人生的镜像-菌群人生,从出生到死亡的菌群演替