mkl中dsytri求解矩阵的逆
2011-04-07 20:31
295 查看
mkl是intel提供的专门用来处理大型矩阵运算的一个库,比我们自己写的函数基本都要快很多。
dsytri是用来求解对称实矩阵的逆矩阵的函数。
在求解之前先使用dsytrf对矩阵进行分解,dsytrf通过LU分解将矩阵分解成上三角或下三角矩阵
下面是使用C++语言写的一个求解对称矩阵逆举证的函数。
matrx是要求解的矩阵。
matrix_rank是对称矩阵的维数。
info是标志,当函数求解成功时返回0值,加入返回非0值则求解的逆矩阵不正确。
"U"表示矩阵分解成上三角的形式。如果是"L"表示矩阵分解成下三角的形式。这里需要注意的是dsytrf和dsytri必须使用统一的形式。
ivpv和work是求解过程中需要的两个空间矩阵,一般为矩阵维数的大小。
求解之后的解存放在原来的矩阵matrix中,这里需要注意的是:解的形式为上三角或者下三角的矩阵,所以求解完后还需要将矩阵进行对称赋值,假如使用的是"U",则需要将上三角的值再赋值给下三角,假如使用的是"L",则需要将下三角的值赋值给上三角。这样最后的matrix就是最后的解。
}
dsytri是用来求解对称实矩阵的逆矩阵的函数。
在求解之前先使用dsytrf对矩阵进行分解,dsytrf通过LU分解将矩阵分解成上三角或下三角矩阵
下面是使用C++语言写的一个求解对称矩阵逆举证的函数。
matrx是要求解的矩阵。
matrix_rank是对称矩阵的维数。
info是标志,当函数求解成功时返回0值,加入返回非0值则求解的逆矩阵不正确。
"U"表示矩阵分解成上三角的形式。如果是"L"表示矩阵分解成下三角的形式。这里需要注意的是dsytrf和dsytri必须使用统一的形式。
ivpv和work是求解过程中需要的两个空间矩阵,一般为矩阵维数的大小。
求解之后的解存放在原来的矩阵matrix中,这里需要注意的是:解的形式为上三角或者下三角的矩阵,所以求解完后还需要将矩阵进行对称赋值,假如使用的是"U",则需要将上三角的值再赋值给下三角,假如使用的是"L",则需要将下三角的值赋值给上三角。这样最后的matrix就是最后的解。
}
void FDA::InverseMatrix(double *matrix,int matrix_rank) { int info=0; int lwork=matrix_rank; int *ivpv=new int[matrix_rank]; double *work=new double[lwork]; dsytrf("U",&matrix_rank,matrix,&matrix_rank,ivpv,work,&lwork,&info); dsytri("U",&matrix_rank,matrix,&matrix_rank,ivpv,work,&info); for(int i=0;i<matrix_rank;++i) { for(int j=i+1;j<matrix_rank;++j) matrix[i*matrix_rank+j]=matrix[j*matrix_rank+i]; } delete []ivpv; delete []work; }
相关文章推荐
- mkl中dsytri求解矩阵的逆
- C语言调用MKL进行矩阵计算—特征值特征向量求解
- mkl中dgeev求解矩阵的特征向量和特征值
- 转载:Intel MKL 稀疏矩阵求解PARDISO 函数
- 【计算方法笔记】矩阵分解求解线性方程组
- 矩阵(二维数组)的性质在算法求解中的应用
- 求解这个矩阵形式的HTML5线性方程组
- java实现动态规划求解矩阵连乘问题
- 矩阵乘法求解线性递推(二)
- 矩阵特征分解介绍及雅克比(Jacobi)方法实现特征值和特征向量的求解(C++/OpenCV/Eigen)
- 矩阵的LU分解求解线性方程组(C++实现)
- HDU 3292(No more tricks, Mr Nanguo 佩尔方程矩阵快速幂求解)
- 矩阵连乘问题-动态规划求解
- 利用矩阵快速幂求解斐波那契数列
- 动态规划法求解矩阵中最长的递增路径的长度
- 随机梯度下降求解矩阵分解的sample(M=UV类型分解)
- 算法导论笔记:04最大子数组矩阵乘法以及递归式求解
- poj 3233 Matrix Power Series ——矩阵快速幂+二分求解
- 斐波那契数列——矩阵的幂求解
- 矩阵快速幂算法的原理与实践——“使用MATLAB求解大型斐波那契数"