求解矩阵行列式
来源:互联网 发布:ubuntu 恢复图形界面 编辑:程序博客网 时间:2024/04/30 14:48
写了个求矩阵行列式的函数,经过测试了,后面有示例函数。
matrix_det.h//这个头文件后面要用到,以后不要说不知道
//放在头文件里
namespace jks
{
//////////////////////////////////////////////////////////////////////////
inline long factorial(int n)
{
// assert(n>0);
long result=1;
while(n>0)
result*=n--;
return result;
}
inline int inversionnum(int a[],int n)
{
int i,j;
int t=0;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
t++;
return t;
}
template<typename T>
double matrix_det(T* p,int n)
{
int i,j,count;
int *array;
array = new int[n];
double t=1.0;
double result=0;
// to initiate the array/
for(i=0;i<n;i++)
array[i]=i;
for(count=0;count<factorial(n);count++)
{
t=1;
for(i=0;i<n;i++)
{
j=array[i];
t=t*p[i*n+j];
}
if(inversionnum(array,n)%2==1)
result+=-t;
else
result+=t;
int i1,j1;
int temp;
for(i1=n-2;i1>=0;i1--)
if(array[i1]<array[i1+1]) break;
for(j1=n-1;j1>i1;j1--)
if(array[j1]>array[i1]) break;
int start;
if(i1<0||j1<0)
goto Out;
temp=array[i1];
array[i1]=array[j1];
array[j1]=temp;
start = i1+1;
int i2,j2;
for(i2=start;i2<n;i2++)
for(j2=start;j2<n-1;j2++)
if(array[j2]>array[j2+1])
{
int t=array[j2];
array[j2]=array[j2+1];
array[j2+1]=t;
}
Out: ;
}
delete []array;
return result;
}
//////////////////////////////////////////////////////////////////////////
}
+++++++++++++++++++++++示例
int example()
{
double p[3][3]={0,0,3,0,3,0,3,0,0};
cerr<<jks::matrix_det(p[0],3)<<endl;
}
传闻中的begtostudy之编程技术文集
- 求解矩阵行列式
- 递归法求解矩阵行列式
- 编程求解矩阵的行列式
- 行列式求解
- 使用MKL求解矩阵的行列式值与逆
- 矩阵行列式
- Java进阶(四十九)实现矩阵秩的求解-转置-行列式-逆矩阵操作
- 高斯消元法求解行列式
- n阶行列式求解
- 求解行列式(一)
- 行列式求解【线性代数】
- 矩阵行列式求解的递归和非递归算法代码(已通过Matlab验证)
- 利用python做矩阵的简单运算(行列式、特征值、特征向量等的求解)
- 矩阵行列式det()
- ACM矩阵行列式计算
- MATLAB矩阵行列式
- 线性代数:矩阵行列式
- 分块矩阵行列式
- java连接sql2000
- *饭 后 随 笔*
- Java学习的30个目标
- [RHEL 4U4] [最小] 安装Lustre 1.6
- 面试题 简单基于角色控制的权限管理系统
- 求解矩阵行列式
- 《Thinking in Java》和《Core Java》
- Microsoft Windows 今天21岁生日!
- I'm a 偏执狂!
- 模糊C均值聚类
- 开发进度报告-何
- 如何显示位图,位图相关知识
- 页面生存周期
- java多态的学习