如何确定迭代方法可以应用于大小可能达到 10^3 的大型矩阵?

计算科学 线性代数 迭代法
2021-12-05 04:26:24

我有一种计算 Moore-Penrose 广义逆矩阵的迭代方法,即

Xk+1=((IβXkA)t)+Xk

初始近似值:

X0=βAAt

在哪里:

  • A是给定的矩阵m×n
  • β[0,1]
  • Xk是算法生成的第次迭代,近似于矩阵的 Moore-Penrose 广义逆。kA

  1. 这种方法可以应用于高阶矩阵吗?
  2. 与奇异值分解和 QR 分解等其他算法相比,这种方法有什么优势?
  3. 我如何确定迭代算法是否比上述其他方法运行得更快?
2个回答

从问题 2 的措辞来看,我假设这是一个家庭作业问题,所以我将给出模糊的答案,并且不会对此感到太难过:

1) 1000 X 1000 矩阵并没有那么大,所以只要你的计算机有足够的内存(过去十年制造的任何计算机都可能如此),是的,你可以在这样的矩阵上运行这个算法。

2和3)这些是相关的问题。您最好的选择是从每个算法的数量级分析开始。基本上,使用这种分析,您可以粗略地计算出每个算法需要多少计算步骤,作为矩阵大小的函数。您可能可以假设,如果算法需要更少的步骤来产生答案,那么它将运行得更快(尽管实际上这取决于每个步骤的计算成本。但是,成本非常依赖于实现,因此您可能不想进入它)。一种算法相对于另一种算法的其他可能优势包括需要更少的内存或更容易并行化。A

此外,仅就运行速度而言,您可以制作一组测试用例,然后计算每个算法完成该组所需的时间。

例如,在 Matlab 中对其进行编程,并针对 SVD 对其进行测试,以增加由A=BDC具有随机正方形 B 和非随机对角线D>0随着比例的增加maxiDii/miniDii最有可能的是,对于相同的精度,您的方法要慢得多。