永发信息网

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

答案:2  悬赏:50  手机版
解决时间 2021-02-23 13:03
  • 提问者网友:我是我
  • 2021-02-23 07:06
急求!要求关键算法有注释(展开法和对角化法都行,最好是对角化法).好的话追加300分.,两者都有的给500分!

一楼的承认算法有问题,已经放弃,请各位大侠帮忙.
最佳答案
  • 五星知识达人网友:等灯
  • 2021-02-23 08:29
阶数M
原行列式的值在 a[M][M] 中。

#include
#include
#include
#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 for(j=0;j<2*M;j++){
temp[i][j]=a[i][j%M];
};
};
for(c1=0;c1 {// positive
i=0;j=c1;t=1;
for(c=0;c t = t*temp[i][j];
i++;
j++;
}
r = r + t;
}
for(c1=0;c1 { // negative
i=M-1;j=c1;t=1;
for(c=0;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");
}
全部回答
  • 1楼网友:平生事
  • 2021-02-23 09:51
#define n 4 #include <stdio.h> #include <stdlib.h> void main() { int i,j,m,n,s,t,k=1; double a[n][n],f=1,c,x,sn; for (i=0;i<n;i++) for (j=0;j<n;j++) scanf ("%lf",&a[i][j]); for (i=0,j=0;i<n&&j<n;i++,j++) { if (a[i][j]==0) { for (m=i;a[m][j]==0;m++); if (m==n) { sn=0; printf("deta=%lf\n",sn); exit(0); } else for (n=j;n<n;n++) { c=a[i][n]; a[i][n]=a[m][n]; a[m][n]=c; } k*=(-1); } for (s=n-1;s>i;s--) { x=a[s][j]; for (t=j;t<n;t++) a[s][t]-=a[i][t]*(x/a[i][j]); } } for (i=0;i<n;i++) f*=a[i][i]; sn=k*f; printf ("deta=%lf\n",sn); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯