利用qr分解求方程组,QR分解和LU分解
学习文章总结目录学习总结1。三角分解(LU分解)1.1高斯消元1.2 LU分解原理1.3 LU分解python代码1.4 LU分解算法2。QR分解2.1 Schmid正交化2.2 QR分解2.3 QR分解栗子3、SVD分解3.1 SVD定义3.2 SVD基础理论(1)线性变换(2)SVD求导(略)(3)SVD栗子四、SVD图像压缩五、SVD手写识别参考
1.三角分解(LU分解)1.1高斯消元1.2 LU分解原理1.3 LU分解python代码1.4 LU分解算法2。QR分解2.1 Schmid正交化2.2 QR分解2.3 QR分解栗子3。奇异值分解3.1奇异值分解定义
奇异值分解.
奇异值分解是基于矩阵分解提取信息的有力工具,它可以发现数据中潜在的模式。应用领域,例如:
潜在语义分析,LSA)或潜在语义索引(LSI);推荐系统可以说是最有价值的应用点(但现在很多推荐系统都是基于深度学习模型);压缩矩阵数据(主要是图像数据)。3.2 SVD的基本理论(1)线性变换以一个22的线性变换矩阵为例。现在有一个对角矩阵。
M=[3 0 0 1]M=\ left[\ begin { array } { ll } 3 0 \ \ 0 1 \ end { array } \ right]M=[30 01]
对角矩阵M是将二维平面上的一点(x,y)线性变换为另一点的变换矩阵(变换效果:平面沿x水平方向拉伸三次,垂直方向不变):[3001][x y]=[3xy]\ left[\ begin { array } { ll } 30 \ 01 \。right]\ left[\ begin { array } { l } x \ \ y \ end { array } \ right]=\ left[\ begin { array } { c } 3 x \ \ y \ end { array } \ right][30 01][xy]=[3xy]
(2)奇异值分解的推导(略)从几何角度理解二维奇异值分解:借助于奇异值分解,可以将一个正交网格变换成另一个正交网格。
在实际中,我们只需要保持三个相对较小的矩阵来表示A,这样既节省了内存,又减少了计算量。SVD在信息检索(隐式语义索引)、图像压缩、推荐系统、金融等领域都有应用。
(3)SVD栗子,其中正交矩阵的特征值和特征向量的求解可以复习线性代数。
四。SVD图像压缩(1)下载CV2: pip安装opencv-python。
(2)凡NP。Lina LG。SVD (a,full _ matrices=1,compute _ UV=1)函数:
输入参数:
a是类似(M,N)的矩阵。full _ matrices的值为0或1,默认值为1。此时,u的大小为(M,M),v的大小为(N,N)。否则,u为(M,K),v为(K,N),K=min(M,N)。compute_uv的值为0或1,默认值为1,表示计算u、s和v。当为0时,仅计算s。输出参数(三个):
u是(M,M),S是(M,N),V是(N,N)。A=usv其中s是矩阵a的奇异值分解.s除对角线元素不为0外,所有元素均为0,对角线元素从大到小排列。s有n个奇异值,一般最后一个接近0,所以只保留r个奇异值。(3)numpy.stack函数:按照指定的维度堆叠多个数组。请参考博客。
# -*-编码:utf-8 -* - 创建于1 2月11日星期六23:14:35 2021 @ author:86493 import cv2 import matplotlib as mpl import numpy as np import matplotlib . py plot as PLT # U8 type def restore 1(u,sigma,v,k):m=len(u)n=len(v)a=NP . zeros((m,n)) a=np.dot (u [:k),NP .]) # S1=NP.size (U [:K])# S1=NP . size(NP . diag(sigma[:K])# S1=NP . size(NP . diag(V[:K,))# S2=NP . size S1/S2)A[A0]=0A[A255]=255返回NP。RINT(一)。ASType (uint8) DEF SVD (frame,k=10): A=NP。Array (frame) #因为是彩色图像,所以有3个通道。A最里面的数组是三个数字,分别代表RGB,用来代表一个像素U _ R,适马_ R,V _ R=NP。利纳格。SVD (A [:0]) U _ G,适马_ G,V _ G=NP。利纳格。SVD (A [:v_b=np.linalg.svd(a[:2]) R=restore1(u_r,sigma_r,v_r,K) G=restore1(u_g,sigma_g,v_g,K) B=restore1(u_b,sigma_b,v_b,K) I=np.stack((R,G,B),axis=2)返回I if _ _ name _ _= _ _ main _ _ :mpl . rcd/刘亦菲. bmp ,-1) frame=cv2.imread (pig.jpg ,-1) I=SVD (frame,40)PLT . im show(I)cv2 . im write( out . BMP ,)
压缩后的图像如下:
动词(verb的缩写)SVD手写识别参考(1)SVD-矩阵奇异值分解——原理及几何意义
(2)将奇异值分解应用于图像压缩的Python代码测试
(3)https://www.zhihu.com/question/277311874
(4)矩阵的SVD分解(一个应用:手写数字识别)
(5)讨论SVD的原理和python实现小demo。
(6)6)SVD(奇异值分解)的Python实现(原理很清楚)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。