用C语言编写一个简单的行列式计算程序
下面只是我构建整个线性代数计算器的其中一部分,完整的程序还在完善中。
它的功能就是计算一个n阶的方阵行列式:
void Determinant(void)
{
float matrix[10][10],result=1,xshu;
int n,i,j,k;
do
{
printf("请输入待计算的行列式的阶数(n>1):\n");
scanf("%d",&n);
}while(n<2);
printf("请输入待计算的行列式(用空格隔开):\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
scanf("%f",&matrix[i][j]);
}
}
printf("\n");
for(k=0;k<n-1;k++)
{
for(i=0;i<n-1;i++)
{
xshu=-1*matrix[i+k+1][k]/matrix[k][k]; //算出来下一行之间的系数
for(j=0;j<n;j++)
{
matrix[i+k+1][j]=matrix[i+k+1][j]+xshu*matrix[k][j];
}
}
}
/* printf("三角行列式为:\n");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%.2lf ",matrix[i][j]);
}
printf("\n");
}*/
for(i=0;i<n;i++) //计算结果
result*=matrix[i][i];
printf("计算结果为:%.3f\n\n",result);
if(result!=0.0)
printf(" 这是一个非奇异行列式\n");
else
printf(" 这是一个奇异行列式\n");
printf("\n");
return;
}
在这段代码中行列式计算的思路为先把行列式化简为一个对角行列式,然后把它对角线元素累乘起来即可,其中注释掉的部分用于在屏幕上显示化简后的三角形行列式,方便调试。
如有不妥,或者其他的意见或建议,欢迎大家提出!