SVD(奇异值分解)算法及其评估
矩阵的奇异值分解及其实际应用

矩阵的奇异值分解及其实际应用矩阵的奇异值分解(Singular Value Decomposition,SVD)是一种重要的矩阵分解方法,它在数据处理、信号处理、图像处理、自然语言处理等领域有广泛的应用。
一、SVD的定义和原理SVD是一种矩阵分解方法,把一个矩阵分解为三个矩阵的乘积,即:$A=U\Sigma V^T$其中,$A$为一个$m\times n$的矩阵,$U$为$m\times m$的酉矩阵,$\Sigma$为$m\times n$的对角矩阵,$V$为$n\times n$的酉矩阵,$T$表示转置。
$\Sigma$中的对角元素称为奇异值,是矩阵$A$的奇异值分解中的核心。
$\Sigma$中的奇异值按从大到小的顺序排列,它们可以用来表示原始矩阵$A$的主要特征。
在一些情况下,我们只需要保留前$k$个最大的奇异值对应的列向量组成的$\Sigma$和对应的$U$、$V$矩阵,即可以得到一个$k$维的近似矩阵,这种方法称为截断奇异值分解。
SVD的原理可以利用矩阵的特征值和特征向量的概念来解释。
对于一个$n\times n$的矩阵$A$,它可以表示为:$A=Q\Lambda Q^{-1}$其中,$Q$为特征向量矩阵,$\Lambda$为特征值矩阵,这里我们假设$A$是对称矩阵。
SVD可以看做是对非对称矩阵的特征值和特征向量的推广,它把矩阵$A$分解为$U\Sigma V^T$,其中,$U$矩阵的列向量为$AA^T$的特征向量,$V$矩阵的列向量为$A^TA$的特征向量,而$\Sigma$则由$AA^T$和$A^TA$的特征值的平方根构成。
二、SVD的应用SVD在数据处理、信号处理、图像处理、自然语言处理等领域都有广泛的应用。
1、数据处理在数据分析和数据挖掘中,我们常常需要对数据进行降维,以便于可视化和分析。
SVD可以对数据进行降维,并且保留了数据的主要特征。
例如,我们可以利用SVD对用户-物品评分矩阵进行降维,得到一个低维的用户-主题矩阵和一个低维的主题-物品矩阵,从而实现推荐系统。
SVD奇异值分解

SVD奇异值分解
继而可以得到A矩阵的奇异值分解:
现在可以来对A矩阵的映射过程进行分析了:如果在 n维空间中找到一个(超)矩形,其边都落在A'A的特 征向量的方向上,那么经过A变换后的形状仍然为(超)矩形! vi为A'A的特征向量,称为A的右奇异向量,ui=Avi实际上为AA'的特征向量,称为A的左奇异向量。下面 利用SVD证明文章一开始的满秩分解:
特征值分解——EVD
所以可得到A的特征值分解(由于对称阵特征向量两两正交,所以U为正交阵,正交阵的逆矩阵等于其转置)
SVD奇异值分解
现在假设存在M*N矩阵A,事实上,A矩阵将n维空间中的向量映射到k(k<=m)维空间中, k=Rank(A)。现在的目标就是:在n维空间中找一组正交基,使得经过A变换后还是正交的。假设已经找到 这样一组正交基: 则A矩阵将这组基映射为: 如果要使他们两两正交,即 根据假设,存在
利用矩阵分块乘法展开得:
SVD奇异值分解
可以看到第二项为0,有
令
则A=XY即是A的满秩分解。
SVD奇异值分解
SVD奇异值分解
SVD奇异值分解
SVD奇异值分解
SVD奇异值分解
SVD奇异值分解
这样就找到了正交基使其映射后还是正交基了,现在,将映射后的正交基单位化: 因为
SVD奇异值分解
所以有
所以取单位向量
由此可得 当k < i <= m时,对u1,u2,...,uk进行扩展u(k+1),...,um,使得u1,u2,...,um为m维空间中的一组 正交基,即
同样的,对v1,v2,...,vk进行扩展v(k+1),...,vn(这n-k个向量存在于A的零空间中,即Ax=0的解空间的 基),使得v1,v2,...,vn为n维空间中的一组正交基,即
随机矩阵奇异值分解算法在机器学习中的应用优化与效果评估

随机矩阵奇异值分解算法在机器学习中的应用优化与效果评估随机矩阵奇异值分解(Randomized Singular Value Decomposition,简称RSVD)算法是一种常用的矩阵分解方法,广泛应用于机器学习领域。
本文将探讨该算法在机器学习中的应用优化及效果评估。
一、介绍RSVD算法是基于奇异值分解(Singular Value Decomposition,简称SVD)算法的一种改进方法。
与传统的SVD算法相比,RSVD通过随机选择矩阵的列向量构建一个近似矩阵,然后再对该近似矩阵进行SVD分解,从而在减少计算量的同时,保持了较高的分解精度。
二、应用优化1.计算效率优化传统的SVD算法计算复杂度较高,随着数据规模的增大,计算时间会显著增加。
RSVD算法通过随机选择矩阵的列向量,将原始矩阵的规模缩小,从而减少了计算时间。
此外,RSVD还可以通过调节随机选择的列向量的数量来平衡计算效率和分解精度之间的关系。
2.精度保证优化尽管RSVD算法在计算效率上有较大优势,但在一些场景下可能会对分解精度产生影响。
为了保证结果的精度,可以适当增加随机选择的列向量的数量,提高近似矩阵的质量,从而达到更高的分解精度。
三、效果评估1.算法比较实验为了评估RSVD算法在机器学习中的效果,可以搭建实验环境,对RSVD算法与其他矩阵分解算法进行比较。
实验可以选择一些具有代表性的数据集,如Movielens数据集,通过对比不同算法在预测评分准确度和计算时间上的表现,来评估RSVD算法在推荐系统等应用中的优势。
2.性能对比评估除了算法比较实验外,还可以进行性能对比评估。
通过对比不同规模数据集上RSVD算法的计算时间和内存占用等指标,来分析RSVD算法的可扩展性和适用性。
四、总结RSVD算法作为一种优化的矩阵分解方法,在机器学习领域有着广泛的应用。
通过对矩阵的随机选择和近似构建,RSVD可以在保证一定分解精度的同时,显著提高计算效率。
矩阵的奇异值分解

矩阵的奇异值分解(Singular Value Decomposition,SVD)是一种重要的矩阵分解方法,可以将一个复杂的矩阵分解为三个简单的矩阵相乘的形式。
SVD 可以应用于各种领域,如图像处理、语音识别、推荐系统等。
SVD 分解将一个m × n 的矩阵 M 分解为U × Σ × V^T 的形式,其中 U 是一个m × m 的酉矩阵(unitary matrix),Σ 是一个m × n 的矩阵,只有对角线上的元素大于等于 0,V^T 是一个n × n 的酉矩阵。
通常情况下,SVD 可以通过奇异值分解定理进行求解。
首先,我们需要计算矩阵M × M^T 和M^T × M 的特征向量和特征值。
设 M 是一个m × n 的矩阵,M^T 是它的转置矩阵,那么M × M^T 是一个m × m 的矩阵,M^T × M 是一个n × n 的矩阵。
我们可以通过特征值分解方法求解这两个矩阵的特征向量和特征值。
然后,我们可以将M × M^T 和M^T × M 的特征向量和特征值组成两个酉矩阵 U 和 V。
特征值的平方根构成了Σ 矩阵的对角线元素。
我们可以将 U 和V 按照特征值降序排列,以保证U × Σ × V^T 是一个矩阵。
最后,我们可以利用奇异值分解定理,将 M 分解为U × Σ × V^T 的形式。
这样的分解可以帮助我们理解原始矩阵的结构和特征,提取重要信息,并进行维度降低等操作。
在某些情况下,SVD 还可以作为矩阵的伪逆(pseudo-inverse),帮助我们解决线性方程组等问题。
SVD 分解在各个领域都有广泛的应用。
在图像处理中,SVD 可以用于图像压缩和降噪等操作。
在语音识别中,SVD 可以用于语音特征提取和模式匹配。
随机矩阵奇异值分解算法在知识表达中应用效果评估

随机矩阵奇异值分解算法在知识表达中应用效果评估随机矩阵奇异值分解(RSVD)算法是一种应用于大规模数据处理的有效方法,它可以用于知识表达中的数据降维和特征提取。
本文将对RSVD算法在知识表达中的应用效果进行评估,并探讨其优点和局限性。
一、介绍在知识表达任务中,需要从大量的文本数据中提取有用的信息和特征。
传统的机器学习算法通常在处理大规模数据时会面临计算耗时和存储开销大的问题。
而RSVD算法通过随机采样的方式,对原始数据进行了降维处理,从而大大减少了计算开销和存储开销。
二、RSVD算法原理RSVD算法的核心思想是通过矩阵奇异值分解(SVD)来实现数据的降维和特征提取。
传统的SVD算法需要对整个数据矩阵进行分解,计算复杂度较高。
而RSVD算法则通过随机采样的方式,仅对采样后的子集进行SVD分解,从而降低了计算复杂度。
经过分解得到的奇异值和奇异向量可以表示原始数据的主要特征,可以应用于知识表达任务中。
三、RSVD算法在知识表达中的应用1. 数据降维知识表达任务中,常常需要处理大规模的高维数据。
RSVD算法可以通过降维,将高维数据映射到低维空间中,从而减少数据的冗余和噪声,提取出数据的主要特征。
这样不仅可以减小计算开销,还可以提高模型的准确性和泛化能力。
2. 特征提取RSVD算法还可以用于特征提取。
通过对原始数据进行RSVD分解,得到的奇异向量表示了数据的重要特征。
这些特征可以应用于知识表达任务,比如文本分类、推荐系统等。
在文本分类中,可以利用RSVD得到的特征向量表示文本的语义信息,从而实现有效的分类。
在推荐系统中,可以利用RSVD提取出用户和物品的隐含特征,用于个性化推荐。
四、RSVD算法的评估指标对于评估RSVD算法在知识表达中的应用效果,可以采用以下指标:1. 准确性:评估算法在知识表达任务中的分类或预测准确率。
2. 效率:评估算法在处理大规模数据时的计算效率和存储开销。
3. 泛化能力:评估算法在未知数据上的表现能力,即模型的泛化能力。
随机矩阵奇异值分解算法在图像去噪中的应用效果评估

随机矩阵奇异值分解算法在图像去噪中的应用效果评估随机矩阵奇异值分解(Randomized Singular Value Decomposition,简称rSVD)是一种高效的矩阵分解算法,已在许多领域得到广泛应用。
本文将评估rSVD算法在图像去噪中的应用效果。
一、引言图像去噪是数字图像处理中的重要任务之一。
随着图像采集设备的不断发展,图像噪声问题也变得日益突出。
传统的去噪方法如小波变换、均值滤波等存在着对细节信息的模糊以及计算复杂度较高的问题。
因此,研究一种有效的图像去噪算法具有重要意义。
二、rSVD算法原理rSVD算法是基于奇异值分解(Singular Value Decomposition,简称SVD)的一种近似算法。
传统的SVD算法可以将一个矩阵分解为三个矩阵的乘积,即A = UΣV^T,其中U和V是正交矩阵,Σ是对角矩阵。
但是,在实际应用中,SVD计算复杂度较高,因此rSVD算法提出了一种近似的计算方法。
rSVD算法的基本思想是通过随机映射将原始矩阵A降维,然后对降维后的矩阵进行SVD分解。
具体步骤如下:1. 从标准正态分布中随机生成一个n×k的矩阵P;2. 计算样本矩阵B = AP;3. 对B进行SVD分解,得到B = UΣV^T;4. 计算原始矩阵的近似矩阵A' = UΣV^TPT。
三、rSVD在图像去噪中的应用在图像去噪中,可以将图像看作一个矩阵,并将之前的rSVD算法应用于图像去噪任务中。
具体步骤如下:1. 读取待去噪的图像,并将其转换为灰度图像;2. 将图像转换为矩阵形式,并进行归一化处理;3. 对图像矩阵应用rSVD算法,得到近似矩阵;4. 对近似矩阵进行反归一化处理,并显示去噪结果。
四、实验设计与结果分析为了评估rSVD算法在图像去噪中的应用效果,我们选取了多张包含不同程度噪声的图像作为实验样本。
通过与传统的去噪方法进行对比,我们评估了rSVD算法的去噪效果。
矩阵奇异值分解具体计算过程_解释说明以及概述

矩阵奇异值分解具体计算过程解释说明以及概述1. 引言1.1 概述矩阵奇异值分解(Singular Value Decomposition,简称SVD)是一种重要的矩阵分解方法,广泛应用于数据降维、图像处理、推荐系统和信号处理等领域。
通过将一个矩阵分解为三个独特的部分,即原始矩阵的奇异向量和奇异值,SVD 可以提供有关原始数据的宝贵信息。
本文旨在详细介绍矩阵奇异值分解的具体计算过程,并对其应用领域以及算法优化和改进方向进行探讨。
首先,我们将给出该方法的定义和基本原理,并描述其计算方法和数学推导。
接着,我们将深入探究矩阵奇异值分解在图像压缩与降维、推荐系统和数据挖掘以及信号处理和模式识别等方面的应用。
然后,我们将讨论近似求解算法、加速技术以及大规模矩阵奇异值分解算法的最新进展。
最后,我们还将探索结合其他矩阵分解技术发展方向。
1.2 文章结构本文共包含五个主要部分。
第一部分是引言,主要概述了本文的目的和结构。
第二部分将详细介绍矩阵奇异值分解的具体计算过程,包括定义、基本原理、计算方法和数学推导。
第三部分将解释说明矩阵奇异值分解在不同领域中的应用,如图像压缩与降维、推荐系统和数据挖掘以及信号处理和模式识别。
第四部分将讨论矩阵奇异值分解算法的优化和改进方向,包括近似求解算法、加速技术以及结合其他矩阵分解技术的发展方向。
最后一部分是结论,总结文章的主要内容和贡献,并对未来研究方向进行展望。
1.3 目的本文旨在通过详细讲解矩阵奇异值分解的具体计算过程,深入理解其原理和应用,并探讨其改进方向。
通过对该方法进行全面系统地介绍,希望能够增加读者对矩阵奇异值分解有关知识的了解,并为相关领域的研究者提供参考和启示。
同时,本文也为后续相关领域深入研究和应用提供了理论基础和开发方向。
2. 矩阵奇异值分解具体计算过程2.1 矩阵奇异值分解定义和基本原理矩阵奇异值分解(Singular Value Decomposition,简称SVD)是一种常用的矩阵分解方法。
奇异值矩阵分解算法改进设计与应用效果分析

奇异值矩阵分解算法改进设计与应用效果分析1.引言奇异值矩阵分解(Singular Value Matrix Factorization, SVD)是一种常用的矩阵分解算法,被广泛应用于推荐系统、图像压缩、自然语言处理等领域。
然而,在实际应用中,原始的SVD算法存在一些限制,如计算复杂度较高、容易产生过拟合等问题。
为了克服这些限制,研究者们提出了一系列的改进设计,本文将对这些改进进行分析,并评估其在实际应用中的效果。
2.奇异值矩阵分解算法2.1 基本原理SVD算法通过将矩阵分解为三个矩阵的乘积,实现对原始矩阵的降维和特征提取。
具体而言,对于一个m×n的矩阵A,SVD将其分解为U、S和V三个矩阵的乘积,即A=USV^T,其中U和V是正交矩阵,S是对角矩阵。
S的对角元素称为奇异值,表示矩阵A在对应的特征向量方向上的重要性。
2.2 算法流程传统的SVD算法主要包括以下几个步骤:(1)计算A^TA的特征向量和特征值,得到V;(2)计算AA^T的特征向量和特征值,得到U;(3)将A进行奇异值分解,得到S。
3.算法改进设计3.1 隐式反馈数据处理在许多应用场景中,用户对物品的喜好往往是隐式的,例如用户的点击、观看历史等。
传统的SVD算法无法直接利用这些隐式反馈数据,因此研究者们提出了一系列的改进方法,如隐反馈矩阵分解(Implicit Matrix Factorization, IMF)算法。
IMF算法通过将隐式反馈数据转化为正态分布的隐式评分进行计算,从而提升了推荐系统的性能。
3.2 正则化项引入SVD算法容易受到过拟合的影响,为了解决这个问题,研究者们引入了正则化项。
正则化项可以限制模型的复杂度,防止过拟合的发生。
常用的正则化项有L1正则化和L2正则化,通过最小化正则项与损失函数的和来求解优化问题,达到控制模型复杂度的目的。
3.3 基于深度学习的改进近年来,深度学习在推荐系统领域取得了巨大的成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
由此得到的是LS问题的最小范数解。
而文献[3]中还给出了一般通解的形式如下:
其中 如前定义,而 是任意的 维向量。
(4)广义逆问题(pseudo-inverse)
记 ,从(2.3)式我们可以看出,最小二乘法的解为 ,和一般的线性方程组 的解为 相类似,所以我们当我们已知矩阵 的奇异值分解 后可以定义 的广义逆为 。
, , ;
(iii)如果存在i满足 使得
,
则 ,转步(iv),否则转步(4).
(iv)确定 和 使
//这也相对于 所以可以直接调用算法3.1.1得到
//这相当于
(v)如果 ,则
, , , ,
转步(iv),否则转步(i).
(4)SVD迭代:应用算法3.1.3于二对角阵
(4)如果 ,则 ;否则进行下一步
(5)计算 和 使得
//可直接输入x,y调用算法3.1.1得到 和 ;
//利用算法3.1.2
//其中 分别为矩阵 的第k和k+1列
(6)如果 ,则
,转步(3);
否则,
迭代结束。
上述算法的导出是在 不可约的条件下进行的。从 容易推出,T不可约的充分必要条件是 和 (除 外)都不为零,而当某个 时,B具有形状
对于一般的n,用完全类似的方法可确定2n-3个Givens变换 , , , ,…, , 将 中不受欢迎的元素都驱逐出境,即使:
为二对角矩阵,而且这样得到的 满足
这样我们就得到了计算二对角阵奇异值的最基本的QR迭代算法了。
为了方便,我们在《QR分解算法及其评估》中的算法2.3.1的基础上构造以下算法;构造函数 ,当已知 的值时,计算出满足
方法第一步是:将A二对角化,即求正交矩阵 和 ,使得
……(3.1.1)
其中
……(3.1.2)
分解式(3.1.1)可以用Householder变换来实现,将A分块为
先计算m阶HousehoHale Waihona Puke der变换 使得并且形成:
再计算n-1阶Householder变换 使得
并形成:
然后对 依次进行:
(a)计算m-k+1阶Householder变换 使得
因此,可将B的奇异值分解问题分解为两个低阶二对角阵的奇异值分解问题;而当某个 时,我们可以给B依次左乘 坐标平面内适当选取的Givens变换使B变为第i行全为零的二对角阵.因此,此种情形亦可约化为两个低阶二对角阵的奇异值分解问题.
在实际计算时,当 或 很小时,就可将B分解为两个低阶二对角阵的奇异值分解问题.通常使用的准则是:当
3.1:传统QR迭代算法[1,2,3]
设 ,可知奇异值分解可从实对称矩阵 的Schur分解导出[1],因此我们自然想到先利用对称QR方法来实现C的Schur分解,然后借助C的Schur分解来实现A的奇异值分解,然而这样做有两个缺点:一是计算 要很大的计算量;二是计算 会引入较大的误差。因此Golub和Kahan在1965年提出了另一种十分稳定的方法,其基本思想就是隐含地应用对称QR算法于 上,而并不需要将 计算出来。
(3) 是 (值域)的一组标准正交基;
(4) 称为 的满秩奇异值分解;
其中 , 分别指得是 的零空间和值域。
为了方便,我们采用如下表示奇异值的记号:
的第 大奇异值;
的最大奇异值;
的最小奇异值。
现在来考察矩阵奇异值的几何意义[1,2],不妨设 ,此时有
是一个超椭球面,它的 个半轴长正好是 的 个奇异值 ,这些轴所在的直线正好是 的左奇异向量所在的直线,它们分别是对应的右奇异向量所在直线的象:
的 ;算法如下:
算法3.1.1:
给定数值 ,本函数计算 使得 ,
并且可知每次对奇异向量的更新都相当于对奇异矩阵右乘上一个相应的Givens矩阵 ,这只改变了矩阵的两列,具体操作可如下进行:
算法3.1.2:
: replace n-vectors and by and
for i = 1 to n//这里的n为向量 , 的维数
六十年代一份没有出版的技术报告中,Kahan证明了双对角线矩阵的奇异值可以精确地计算,具有和原矩阵元素的相对的精确度;进一步,1990年Demmel和Kahan给出了一种零位移的QR算法(zero-shift QR algorithm),这种算法计算双对角矩阵的奇异值具有很高的相对精度[13],并且由此得到的奇异向量也具有很高的精度[14]。
(5)条件数
如果已知矩阵 的秩为 ,那么在式子(2.3)中,解 随着矩阵 的扰动而改变的剧烈程度有多大呢?这可以用矩阵的条件数来衡量,条件数的定义如下:
以上只是针对SVD的应用,而简单地介绍了LS问题,广义逆;而在文献[5,6]中则对这两个问题有详细的说明,在以后的报告中也将进行更进一步的分析,并且综合其它方法来全面分析和处理这些问题。
可知 在(2,1)位置上出现了一个我们不希望有的非零元素,于是我们可以左乘一个(1,2)坐标平面的Givens变换 消去这一非零元素;但是这样又在(1,3)位置上出现了一个非零元素;因此,我们又需右乘一个(2,3)坐标平面的Givens变换 消去这一非零元素;这又会在(3,2)位置上出现了一个非零元素,再左乘一个(2,3)坐标平面的Givens变换 消去这一非零元素。最终完成了 时的 二对角化任务。
(2)确定投影算子
假设矩阵 的秩为 ,那么我们可以将(1.3)式中的 划分为以下的形式
其中 为 的矩阵,并且 的列向量构成了矩阵 的列空间的正交向量基。
容易得到 为投影到矩阵 的列空间上的正交投影算子;而 则是到矩阵 列空间的正交补空间上的投影。
同理如果将 划分为以下的形式
其中 为 的矩阵,则 的列向量构成矩阵 的行空间的正交向量基。且 为投影到矩阵 的行空间上的正交投影算子;而 则是到矩阵 行空间的正交补空间上的投影。
一、SVD简介
定义1.1设 , 的特征值的非负平方根称作 的奇异值; 的奇异值的全体记作 [1]。
当 为复矩阵 时,只需将 改为 ,定义1.1仍然成立。
定理1.1(奇异值分解定理)设 ,则必存在正交矩阵
和
使得
,(1.1)
其中 [2]。
当 为复矩阵 时,只需将定理中 改为酉矩阵,其它不变,定理1.2仍然成立[1]。
除了这些传统的应用以外,在图像压缩和大型数据库的数据恢复中,SVD也具有广泛的应用[7]。
三、各种SVD算法及其特点
首先来对SVD算法的发展来做简单的回顾[11,12]:关于SVD算法的研究最早可以追溯到1873年Beltrami所做的工作,这中间在理论方面进行了大量的工作,这个历史过程可以参考Stewart的文献[8]。但是直到1965年Golub和Kahan才在SVD的数值计算领域取得突破性进展[9],并且于1969给出了比较稳定的算法[10](以下简称传统QR迭代算法),这也是后来在LINPACK中所采用的方法[3]。它的中心思想是用正交变换将原矩阵化为双对角线矩阵,然后再对双对角线矩阵迭代进行QR分解。
进行QR迭代的第一步是取矩阵 的右下角 主子阵:
靠近 最近的特征值作为位移 ,这一步不需将 计算出来。
第二步就是,确定Givens变换 ,其中 满足
这里 和 是 的第一列位于(1,1)和(1,2)位置的仅有的两个非零元素,这一步也不需先将 计算出来。
迭代的第三步就是确定正交矩阵 使得 为对称三对角阵,这相当于将 二对角化,可以用“驱逐出境”法如下进行,取 为例:
称分解式(1.1)为矩阵 的奇异值分解,通常简称为SVD。 是 的奇异值,向量 和 分别是第 个左奇异向量和第 个右奇异向量。
从 的奇异值分解,我们可以得到 的一些非常有用的信息,下面的推论就列举其中几条最基本的结论[1]:
推论1.2设 ,则
(1) 的非零奇异值的个数就等于 ;
(2) 是 (零空间)的一组标准正交基;
一般地我们假设 ,(对于 的情况,我们可以先对 转置,然后进行奇异值分解,最后对所求得的SVD分解式进行转置就可以得到原式SVD分解式),此时我们对(1.1)进行化简将 表示为:
(1.2)
则可以得到更加细腻的SVD分解式[2,3]:
(1.3)
其中 具有 列 维正交向量, 和(1.1)式中的定义相同; ,并且 为矩阵 的奇异值。
或
时,就将 或 视作零,这里 是一个略大于机器精度的正数.
综述上面的讨论,就可得到传统的计算奇异值分解的算法如下:
算法3.1.4(传统的SVD算法)
(1)输入 及允许误差 .
(2)二对角化:计算Householder变换 使得
其中 ;
(3)收敛性检验:
(i)将所有满足
的j置零;
(ii)如果 ,则输出有关信息结束;否则, ,确定正整数 ,使得
endfor
由此可知传统SVD算法中完成一次QR迭代可如下进行:
算法3.1.3:
(1)输入二对角矩阵B的对角元素 和次对角元素 ;
//其中 分别为子矩阵B在总矩阵中的上下标
(2) ,
,
,
;
(3)计算 和 使得
//可直接输入x,y调用算法3.1.1得到 和 ;
并且更新
//利用算法3.1.2
//其中 分别为矩阵 的第k和k+1列
并且形成:
(b)计算n-k阶Householder变换 使得
并形成:
进行到 之后,再计算 阶Householder变换矩阵 使得
并形成:
然后计算 阶Householder变换矩阵 使得
。
现令
,
则有:
即实现了分解(3.1.1)。
将A二对角化以后,下一步任务就是对三对角矩阵 进行带Wilkinson位移的对称QR迭代,这一步也可以不通过明确地将T计算出来而进行。