面临不平衡矩阵,如3 * 5000,为什么有人通过圣言会降低计算成本(*)。

3视图(30天)
计算奇异值分解是许多算法的主要计算成本。矩阵a (m * n),如果m远远大于n,可以计算一个*的圣言”,然后得到一个近似计算的简单操作来减少计算成本。 它如何降低计算成本?
如下的代码。
函数[S, V D Sigma2] = MySVD (A)
[m, n] =大小(一个);
如果2 * m < n
AAT = *”;
[S Sigma2 D] =圣言(AAT);
Sigma2 =诊断接头(Sigma2);
V =√Sigma2);
托尔= max(大小(A)) * eps (max (V));
R =总和(V > tol);
V = (1: R);
S = S (:, 1: R);
D =“* *诊断接头(1. / V);
V =诊断接头(V);
返回;
结束
如果m > 2 * n
[S, V D Sigma2] = MySVD (');
中期= D;
D = S;
S =中期;
返回;
结束
[S V D] =圣言();
Sigma2 =诊断接头(V) ^ 2;

接受的答案

克里斯汀Tobler
克里斯汀Tobler 2021年6月21日
圣言的计算复杂度(使用“经济学”选项时,这是非常必要的矩阵远离广场)是O (max (m, n) *分钟(m, n) ^ 2)。这可以被看作是应用QR的第一步,然后计算R矩阵的奇异值分解出来的QR操作(相比相对便宜)。 不需要你在MATLAB调用QR代码,这样做是在内部计算命令。
而不是计算一个*”/“*(哪个是基于小尺寸)有相同的计算复杂度。然而,比QR矩阵乘法是一个便宜的操作,所以在实践中它是更便宜的应用。
但这也计算不准确:计算*“广场条件数,所以更糟的圣言是应用于矩阵条件准确并将低于原始矩阵的应用。
5个评论

登录置评。

更多的答案(0)

类别

找到更多的在线性代数帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!