首页 > 解决方案 > lu_factorize 损坏数据(行列式)

问题描述

伙计们。当我试图计算行列式时,我的矩阵有时会遇到问题。在这张图片中,您可以看到 (2, 2) 成员的问题。 这是非常罕见的情况。我的功能:

    double_t Determinant(const ublas::matrix<double_t> & matrix)
    {
        // boost::numeric::ublas
        ublas::matrix<double_t> mLu(matrix);
        ublas::permutation_matrix<std::size_t> pivots(matrix.size1());

        std::cout << "BEFORE FACTORIZE" << std::endl;
        PrintMatrix(mLu); // just printing the matrix

        if (ublas::lu_factorize(mLu, pivots)) // there are some problems here
        {
            return 0.0;
        }

        std::cout << std::endl << "AFTER FACTORIZE" << std::endl;
        PrintMatrix(mLu); // just printing the matrix

        double_t det = 1.0;
        for (std::size_t i = 0; i < pivots.size(); ++i)
        {
            det *= (pivots(i) != i ? -1. : 1.) * mLu(i, i);
        }

        return det;
    }

如何解决?谢谢。

标签: c++mathmatrixboostalgebra

解决方案


推荐阅读