若一個nxn的方形矩陣A存在一個B使得AB = BA = In ,則B稱為A的反矩陣。
現給予一個3x3的矩陣A,求A的反矩陣。
舉例:
.jpg)
注意本題要求反矩陣的數值若為分數須化為最簡分數,且分母須為正數。
反矩陣公式:
.jpg)
以下是範例code的一部分:
#includeint a[3][3]={0},nu[3][3]={0},de[3][3]={0},div[3][3]={0}; //a[3][3] is input, nu[3][3] is the numerator of output, de[3][3] is the denominator of input, div[3][3] is gcd of nu[3][3] and de[3][3] int i,j,det=0; void show(); void simple(); int gcd(int x,int y); int main(void) { for(i=0;i<3;i++){ for(j=0;j<3;j++){ scanf("%d",&a[i][j]); } } /* your code */ simple(); show(); return 0; } void show(){ for(i=0;i<3;i++){ for(j=0;j<3;j++) printf("%4d",nu[i][j]/div[i][j]); printf("\n --- --- ---\n"); for(j=0;j<3;j++) printf("%4d",de[i][j]/div[i][j]); printf("\n\n"); } } void simple(){ for(i=0;i<3;i++){ for(j=0;j<3;j++){ if(nu[i][j]!=0) if(de[i][j]>0) div[i][j]=gcd(abs(nu[i][j]),abs(de[i][j])); else div[i][j]=-gcd(abs(nu[i][j]),abs(de[i][j])); else{ de[i][j]=0; div[i][j]=1; } } } } int gcd(int x,int y){ if(x%y==0) return y; else return gcd(y,x%y); }
3x3矩陣A
A的反矩陣