mkl中dsytri求解矩阵的逆
2011-09-26 16:53
423 查看
/article/10436625.html
mkl是intel提供的专门用来处理大型矩阵运算的一个库,比我们自己写的函数基本都要快很多。
dsytri是用来求解对称实矩阵的逆矩阵的函数。
在求解之前先使用dsytrf对矩阵进行分解,dsytrf通过LU分解将矩阵分解成上三角或下三角矩阵
下面是使用C++语言写的一个求解对称矩阵逆举证的函数。
matrx是要求解的矩阵。
matrix_rank是对称矩阵的维数。
info是标志,当函数求解成功时返回0值,加入返回非0值则求解的逆矩阵不正确。
"U"表示矩阵分解成上三角的形式。如果是"L"表示矩阵分解成下三角的形式。这里需要注意的是dsytrf和dsytri必须使用统一的形式。
ivpv和work是求解过程中需要的两个空间矩阵,一般为矩阵维数的大小。
求解之后的解存放在原来的矩阵matrix中,这里需要注意的是:解的形式为上三角或者下三角的矩阵,所以求解完后还需要将矩阵进行对称赋值,假如使用的是"U",则需要将上三角的值再赋值给下三角,假如使用的是"L",则需要将下三角的值赋值给上三角。这样最后的matrix就是最后的解。
}
view plain
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是intel提供的专门用来处理大型矩阵运算的一个库,比我们自己写的函数基本都要快很多。
dsytri是用来求解对称实矩阵的逆矩阵的函数。
在求解之前先使用dsytrf对矩阵进行分解,dsytrf通过LU分解将矩阵分解成上三角或下三角矩阵
下面是使用C++语言写的一个求解对称矩阵逆举证的函数。
matrx是要求解的矩阵。
matrix_rank是对称矩阵的维数。
info是标志,当函数求解成功时返回0值,加入返回非0值则求解的逆矩阵不正确。
"U"表示矩阵分解成上三角的形式。如果是"L"表示矩阵分解成下三角的形式。这里需要注意的是dsytrf和dsytri必须使用统一的形式。
ivpv和work是求解过程中需要的两个空间矩阵,一般为矩阵维数的大小。
求解之后的解存放在原来的矩阵matrix中,这里需要注意的是:解的形式为上三角或者下三角的矩阵,所以求解完后还需要将矩阵进行对称赋值,假如使用的是"U",则需要将上三角的值再赋值给下三角,假如使用的是"L",则需要将下三角的值赋值给上三角。这样最后的matrix就是最后的解。
}
view plain
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求解矩阵的逆
- 转载:Intel MKL 稀疏矩阵求解PARDISO 函数
- mkl中dgeev求解矩阵的特征向量和特征值
- C语言调用MKL进行矩阵计算—特征值特征向量求解
- 随机梯度下降求解矩阵分解的sample(M=UV类型分解)
- 算法导论笔记:04最大子数组矩阵乘法以及递归式求解
- poj 3233 Matrix Power Series ——矩阵快速幂+二分求解
- 斐波那契数列——矩阵的幂求解
- 矩阵快速幂算法的原理与实践——“使用MATLAB求解大型斐波那契数"
- [转载]随机梯度下降求解矩阵分解的sample(M=UV类型分解)
- 利用矩阵快速幂求解斐波那契数列
- 动态规划法求解矩阵中最长的递增路径的长度
- 螺旋矩阵问题求解
- Matrix Power Series(POJ 3233 构造新矩阵求解+ 快速矩阵幂)
- 灰度图像之同现矩阵的求解算法与实现
- 【矩阵快速幂】 斐波那契数列求解。
- 51nod_1024 矩阵中不重复的元素(对数求解·)
- 求解矩阵的最简行矩阵的C++程序代码
- CUDA的cublas 和 Intel的MKL 矩阵运算对比
- 利用矩阵求解fibonacci数列 时间复杂度为O(lgn)