行列式化簡

2020-10-05 22:00:13

行列式化簡

行列式化簡成可以直接算出來的形似

#include<stdio.h>
#include<conio.h>
int main()
{
	int x,n,i,j,k,count=0,y,m,c;
	printf("階數n=");
	scanf("%d",&n);
	float mat[n][n],b;
	for(i=1;i<=n;i++){//i是行數,j是列數,一行一行輸入。 
		for(j=1;j<=n;j++){
			scanf("%d",&x);
			mat[i][j]=x;
		}
	}
	for(i=1;i<=n;i++){   //i對角線行和列的數;j是行數;k是列數 
	if(mat[i][i]==0){
		for(m=i;m<=n;m++){
			if(mat[m][i]!=0){
				for(j=1;j<=n;j++){
					c=mat[i][j];
					mat[i][j]=mat[m][j];
					mat[m][j]=c;
					//調換第i行和第m行 
				}
				break;
			}
			else{
				goto here;
			}
		}
		
	}
		for(j=i+1;j<=n;j++){
			b=mat[j][i]/mat[i][i];
			for(k=i;k<=n;k++){ 
				mat[j][k]=mat[j][k]-b*mat[i][k];
				//化為上三角 
			}
		}
	} 

	here:
		printf("\n");
		for(i=1;i<=n;i++)
		for(j=1;j<=n;j++){
			printf("%.2f ",mat[i][j]);
			count++;
			if (count%n==0) printf("\n");
		}
	getch();
}