linalg.svd 和 JacobiSVD<MatrixXf> svd ,结果不一样

问题描述 投票:0回答:0

我正在将 Python 代码翻译成 C++ 版本,但是我发现这两个函数(linalg.svd 和 JacobiSVD svd )产生不同的结果。我该怎么办?

A = np.array([[1, 2, 3, 4],
              [5, 6, 7, 8],
              [9, 10, 11, 12],
              [13, 14, 15, 16]])
U, S, V = svd(A,0)
print("U =\n", U)
print("S =\n", S)
print("V =\n", V)

 MatrixXf m = MatrixXf::Zero(4,4);
    m << 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;
    cout << "Here is the matrix m:" << endl << m << endl;
    JacobiSVD<MatrixXf> svd(m, ComputeFullU | ComputeFullV);
    cout << "Its singular values are:" << endl << svd.singularValues() << endl;
    cout << "Its left singular vectors are the columns of the thin U matrix:" << endl << endl << svd.matrixU() << endl;
    cout << "Its right singular vectors are the columns of the thin V matrix:" << endl << endl << svd.matrixV() << endl;

虽然结果有些小偏差,但会影响我的工作吗?

python c++ eigen svd
© www.soinside.com 2019 - 2024. All rights reserved.