jsm*_*894 4 c algorithm matrix linear-algebra
过去几周以来,我一直在尝试在C中实现SVD,目前我一直在使用此处找到的算法6 ,据我了解,该算法将在时间O(n ^ 5)上运行,因为有两个循环(其中一个循环不会从0到n,我知道但是n ^ 5可以作为一个粗边界),并且在内部循环矩阵内部必须进行乘法,这是一个n ^ 3的过程。
但是,根据该网站,对于n×n矩阵,可以以O(2n ^ 3)计算SVD。有谁知道我在哪里可以找到那种时间复杂度的算法?
如果将来有人在寻找答案,如果矩阵是方矩阵,则在O(n ^ 3)中计算SVD的算法就是Jacobi旋转方法。
有关特定算法的更多信息,请访问此网站上的算法7 。
由于输入错误,网站上的表示法有些混乱,但是在确定d1,d2,c和?的值的步骤中。(抱歉,我最接近戴帽子的c),它们的意思是c = cos(theta),s = sin(theta)、?= cos(phi)和š= sin(phi)。
您可以通过消除和替换来计算theta和phi的这些值,或者可以查看此StackExchange帖子以了解如何计算它们。
之后,它只是遵循该算法。