使用 C++ 库犰狳或特征对矩阵求逆

计算科学 C++ 本征 犰狳
2021-12-04 06:05:22

我正在尝试使用 c++ 库armadilloeigen找到矩阵的逆。但是矩阵的第一行是错误的,请注意其他元素是正确的。我无法理解我犯了什么错误,请帮助我。

我的代码是:

#include <iostream>
#include <armadillo>
#include <cmath>
#include <Eigen/Dense>
using namespace std;
using namespace arma;
using namespace Eigen;

int main()
{
    vec a;
int h=5;

    MatrixXd b(5,5);
    MatrixXd im(5,5);

     a <<-2 << -1 << 0 << 1 << 2;

   for(int i1=0;i1<h;i1++)
   {

            b(i1,0)=1;
            b(i1,1)=a(i1);
            b(i1,2)=a(i1)*a(i1)+1/12;
            b(i1,3)=pow(a(i1),3)+a(i1)/4;
            b(i1,4)=1/80+pow(a(i1),2)/2+pow(a(i1),4);


    }

    im=b.inverse();

    cout<<im<<endl;
    return 0;
}

当前代码的输出是 在此处输入图像描述

正确的结果是:

   0.00469  -0.06042   1.11146  -0.06042   0.00469
   0.10417  -0.70833   0.00000   0.70833  -0.10417
  -0.06250   0.75000  -1.37500   0.75000  -0.06250
  -0.08333   0.16667   0.00000  -0.16667   0.08333
   0.04167  -0.16667   0.25000  -0.16667   0.04167
1个回答

请在您的代码中进行以下更改并检查答案

        b(i1,0)=1;
        b(i1,1)=a(i1);
        b(i1,2)=a(i1)*a(i1)+1.0/12.0;
        b(i1,3)=pow(a(i1),3)+a(i1)/4;
        b(i1,4)=1.0/80.0+pow(a(i1),2)/2+pow(a(i1),4);