下面只是我構建整個線性代數計算器的其中一部分,完整的程式還在完善中。
它的功能就是計算一個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]; //算出來下一行之間的係數
matrix[i+k+1][j]=matrix[i+k+1][j]+xshu*matrix[k][j];
/* printf("三角行列式為:\n");
printf("%.2lf ",matrix[i][j]);
}*/
for(i=0;i<n;i++) //計算結果
result*=matrix[i][i];
printf("計算結果為:%.3f\n\n",result);
if(result!=0.0)
printf(" 這是一個非奇異行列式\n");
else
printf(" 這是一個奇異行列式\n");
return;
下面只是我構建整個線性代數計算器的其中一部分,完整的程式還在完善中。
它的功能就是計算一個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;
}