使用 lapacke_dgesv 在 cpp 中求解线性方程组

solving linear equationsystem in cpp using lapacke_dgesv

我正在尝试求解 M*Z=V 形式的非常简单的方程组,其中 M 是 2x2 矩阵,V 和 Z 是具有 2 个条目的向量。如果我在 Matlab 中使用 Z = linsolve( M, V ); 结果是正确的。 我需要以某种方式在 C++ 中实现它,所以我正在尝试使用 INTEL MKL 数学库。 Z 应计算为大约 [0.3091,0.6115]。但是 Z 的 LAPACKE_dgesv returns [1,2]。我做错了什么?

#include <iostream>
#include <math.h>
#include <vector>
#include <numeric>
#include <mkl.h>
#include <stdlib.h>
#include <stdio.h>
#include "mkl_lapacke.h"
using namespace std;

 int main (){
    
    const int N = 2;
    const int NRHS = 1;
    const int LDA = N;
    const int LDB = NRHS;

    MKL_INT n = N, nrhs = NRHS, lda = LDA, ldb =LDB, info;
    MKL_INT z[2];
    
    double M[LDA * N] = {
        2, 1.5388, 
        1.5388,  2,
    };

    double V[LDB * N] = {
        1.5593,
        1.6987,
    };
    

    info = LAPACKE_dgesv(LAPACK_ROW_MAJOR, n, nrhs, M, lda, z, V, ldb);
    
    cout << "solution for z" "\n";
    for (int i = 0; i < 2; i++) {
        cout << z[i] << "     ";
    }


}

您应该打印 V 向量而不是 z,z 只是主元信息。