Tag: matrix inverse

用CBLAS / LAPACK进行C中的对称矩阵求逆

我在C中编写一个需要矩阵和向量乘法的算法。 我有一个矩阵Q (W x W),它是通过将矢量J (1 x W)的转置与其自身相乘并添加使用标量a缩放的单位矩阵I而 创建的 。 Q = [(J ^ T)* J + aI]。 然后我必须将Q的倒数乘以向量G以得到向量M. M =(Q ^( – 1))* G. 我正在使用cblas和clapack来开发我的算法。 当使用随机数(类型float)填充矩阵Q并使用例程sgetrf_和sgetri_反转时 ,计算的逆是正确的 。 但是当矩阵Q是对称的时,你乘以(J ^ T)x J就是这种情况,计算出的逆是错误的! 。 我知道从C调用lapack例程时数组的行主要(在C中)和列主要(在FORTRAN中)格式,但对于对称矩阵,这应该不是问题,因为A ^ T = A. 我已经在下面附加了我的C函数代码用于矩阵求逆。 我相信有更好的方法来解决这个问题。 谁能帮我这个? 使用cblas的解决方案会很棒…… 谢谢。 void InverseMatrix_R(float *Matrix, int W) { int LDA = W; int […]

使用C中的lapack计算矩阵的逆矩阵

我希望能够使用lapack计算C / C ++中一般NxN矩阵的逆。 我的理解是在lapack中进行反转的方法是使用dgetri函数,但是,我无法弄清楚它的所有参数应该是什么。 这是我的代码: void dgetri_(int* N, double* A, int* lda, int* IPIV, double* WORK, int* lwork, int* INFO); int main(){ double M [9] = { 1,2,3, 4,5,6, 7,8,9 }; return 0; } 你将如何完成它以使用dgetri_获得3×3矩阵M的逆?