我想使用基本变换将我的矩阵转换为上三角矩阵(或下三角矩阵),然后将对角线元素相乘以找到给定非奇异矩阵的行列式。我是 c 编程的初学者,并编写了以下代码来计算非奇异矩阵的行列式。代码是
#include<stdio.h>
#include<math.h>
void main()
{
int i,j,k,r;
float mat[20][20],temp,diag=1;
printf("enter the order of the square matrix\n\n");
scanf("%d",&r);
for(i=0;i<r;i++)
{
for(j=0;j<r;j++)
{
printf("enter the (%d , %d)th entry",i+1,j+1);
scanf("%f",&mat[i][j]);
}
}
printf("The matrix we have entered is\n\n ");
for(i=0;i<r;i++)
{
for(j=0;j<r;j++)
{
printf("\t%f",mat[i][j]);
}
printf("\n");
}
for(i=0;i<r-1;i++)
{
for(j=i+1;j<r;j++)
{
temp=mat[j][i]/mat[i][i];
for(k=0;k<r;k++)
{
mat[j][k]=mat[j][k]-temp*mat[i][k];
}
}
}
for(i=0;i<r;i++)
{
diag=diag*mat[i][i];
}
printf("\n\nThe value of the determinant is %f",diag);
}
这适用于任何非奇异矩阵,除了将零作为其第 (1,1) 个元素(即第一个对角元素)的矩阵。我可以理解这是由于我的
temp=mat[j][i]/mat[i][i];
代码。但是这段代码是计算行列式所必需的。所以必须有一些方法来改变程序,使其适用于任何非奇异矩阵。我怎样才能编辑我的程序来实现我的目的?谢谢你的帮助。