lanczos bidiagonalization(1)

Lanczos bidiagonalization是大型稀疏矩阵奇异值分解的有效方法,分为对称和非对称两种算法。文章讨论了部分重新正交化(PRO)方法在处理病态矩阵时的问题,提出BPRO算法,该算法是Matlab包PROPACK的一部分,适用于大型稀疏矩阵的计算。LAPACK库中的SVD实现基于对称矩阵的特征值计算,但在处理条件数较大时可能不准确。BPRO和ARPACK的svds函数提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 科研需要拜读了有关lanczos bidiagonalization的三篇论文,也是上篇博客最后里提到的三篇,下面试第一篇。

Lanczos bidiagonalization with partial reorthogonalization (Rasmus Munk Larsen 1998)
读本文之前,首先要知道lanczos有两种算法,一种针对大型稀疏对称矩阵的三对角算法,一种是针对大型稀疏非对称矩阵的二对角算法。
lanczos bidiagonalization(LBD)最早是由Golub 和Kahan提出的,并且它的分块扩展成为了许多方法的计算核心部分,已经被证实是求大型稀疏矩阵或者结构化矩阵的奇异值分解的有效方法。
Berry认为,PRO方法是计算大型稀疏矩阵最大奇异值以及奇异值向量的最有效方法。在SVDPACk, LANSO包里的子程序lanso是用于显示计算对称矩阵 ATA,

的特征值,然后再形成矩阵A的奇异值。然而,当A是ill-conditioned矩阵时, 会导致计算的奇异值的精确度降低。虽然采用C的形式,能够避免,但是同时会使从正交化的计算和存储空间显著增加,因为lanczos向量长度是m+n。同样计算同样数量的奇异值需要的迭代次数会加倍。
本文提出的BPRO算法,即是Matlab包里的PROPACK.
这里写图片描述
从上文可知有两种对称化的方法,可以通过求 对称矩阵的特征值和特征向量,求得A的奇异值和向量。这是Golub 和Kahan提出的最早期的算法,在LAPACK中的SVD就是通过对对称矩阵 ATA 用隐式的QR算法求特征值实现的。

但事实是 ATA形成对于算法的数值稳定性十分重要,除非矩阵A里是非常小的条件数,那么对称矩阵会导致舍入误差,从而我们不能保证从 ATA 的特征值得到的最小奇异值的准确性。

因为针对大型稀疏矩阵Golub 和Kahan算法的不切合实际性,lanczos算法由早期针对对称矩阵三对角化,然后对三对角矩阵进行对称QR算法(LAPACK _STEQR),QR算法是用于计算三对角矩阵特征向量最快的算法。lanczos二对角化之后,用二对角svd子程序(LAPACK _BDSQR).
这里写图片描述

BPRO已经实现,可以根据需要,下载并添加到matlab中,而matlab里自带的ARPACK里的eigs函数,是根据the implicitly restarted lanczos算法,svds函数是调用了eigs函数计算得到的。

BPRO还有其他基于lanczos bidiagonalization算法适合于计算大概规模稀疏或者结构性矩阵的计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值