首页 > 试题广场 >

奇异值分解 (SVD)

[编程题]奇异值分解 (SVD)
  • 热度指数:164 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
使用Jacobi方法编写一个函数,在 2x2 矩阵上近似奇异值分解。
不要使用 numpy 里的svd函数。

输入描述:
输入一个 2x2 的矩阵。


输出描述:
返回:旋转矩阵 、计算出的奇异值和旋转矩阵的转置 
示例1

输入

[[4, 7], [2, 6]]

输出

(array([[ 0.78820544, -0.61541221],
       [ 0.61541221,  0.78820544]]), array([10.19994217,  0.98039772]), array([[ 0.42977167,  0.9029376 ],
       [-0.9029376 ,  0.42977167]]))

备注:
1.Python3对应的输入、输出已给出,您只用实现核心功能函数即可。
2.支持numpy、scipy、pandas、scikit-learn库。
头像 牛客题解官
发表于 2025-02-05 15:13:01
奇异值分解是一种将矩阵分解为三个矩阵的方法,它通过将矩阵分解为三个矩阵,来得到矩阵的奇异值和奇异向量。其数学表达式为: 其中, 是输入矩阵, 是左奇异向量, 是奇异值, 是右奇异向量。 通过的维度选择,可以实现矩阵的降维。 Jacobi方法是一种计算奇异值分解的方法,常用于小矩阵,其具体步骤如下: 展开全文