行列式计算的C语言源代码

来源:百度知道 编辑:UC知道 时间:2024/09/12 22:22:22
急求!要求关键算法有注释(展开法和对角化法都行,最好是对角化法).好的话追加300分.,两者都有的给500分!
一楼的承认算法有问题,已经放弃,请各位大侠帮忙.

阶数M
原行列式的值在 a[M][M] 中。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define M 3
double temp[M][2*M];

double HLS(double a[M][M])
{
int i,j,c,c1;
double r=0,t=1;
for(i=0;i<M;i++){
for(j=0;j<2*M;j++){
temp[i][j]=a[i][j%M];
};
};
for(c1=0;c1<M;c1++)
{// positive
i=0;j=c1;t=1;
for(c=0;c<M;c++){
t = t*temp[i][j];
i++;
j++;
}
r = r + t;
}
for(c1=0;c1<M;c1++)
{ // negative
i=M-1;j=c1;t=1;
for(c=0;c<M;c++)
{
t = t* temp[i][j];
i--;
j++;
}
r = r - t;
}
return r;
}

void main()
{
double a[M][M]={1,-1,1,1,-2,4,1,2,5};
printf("%lf\n",HLS(a));
system("pause");
}