急求!要求关键算法有注释(展开法和对角化法都行,最好是对角化法).好的话追加300分.,两者都有的给500分!
一楼的承认算法有问题,已经放弃,请各位大侠帮忙.
行列式计算的C语言源代码
答案:2 悬赏:50 手机版
解决时间 2021-02-23 13:03
- 提问者网友:我是我
- 2021-02-23 07:06
最佳答案
- 五星知识达人网友:等灯
- 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");
}
原行列式的值在 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
temp[i][j]=a[i][j%M];
};
};
for(c1=0;c1
i=0;j=c1;t=1;
for(c=0;c
i++;
j++;
}
r = r + t;
}
for(c1=0;c1
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);
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯