C語言實現行列式和代數余子式

2021-09-08 23:56:36 字數 1500 閱讀 4279

/*建立行列式(人工輸入資料),輸出該行列式和代數余子式,並輸出其值*/

/*2006-1-7  梁見斌*/

#include

#include

#define n 3

typedef struct node

array;

int sum; //全域性變數,儲存行列式的值

void create(int h[n]);  //構造乙個行列式

void printh(const int h[n]); //輸出行列式

void printyh(const int yh[n-1]);//輸出代數余子式

void solveh(const int h[n], array s, int i, int nixu); //採用遞迴方式求行列式的值

void solveyh(const int yh[n-1], array s, int i, int nixu);//採用遞迴方式求代數余子式的值

bool judge(const array s, int line, int len); //判斷行列式的元素的縱座標是否重複

int main(void)

}  printyh(yh); //輸出代數余子式

sum = 0;

solveyh(yh, sl, 0, 0);//採用遞迴方式求代數余子式的值

if((x+1+y+1)%2==0)

y[x][y] = sum;

else

y[x][y] = sum*(-1);

}for(x=0; xfor(y=0; yprintf("y[%d][%d] = %d/n", x+1, y+1, y[x][y]); //輸出該代數余子式的值

system("pause");

return 0;

}void create(int h[n]) }

void printh(const int h[n])

}void printyh(const int yh[n-1])

}void solveh(const int h[n], array s, int i, int nixu)//採用遞迴方式求行列式的值

for(k=0; k<=top; k++) //複製棧

cs[k] = s[k];

if(isolveh(h, cs, i+1, cnixu);

else  //否則計算該乘積項的值,並儲存到棧中 }}

}bool judge(const array s, int line, int len)

void solveyh(const int yh[n-1], array s, int i, int nixu)//採用遞迴方式求行列式的值

for(k=0; k<=top; k++) //複製棧

cs[k] = s[k];

if(isolveyh(yh, cs, i+1, cnixu);

else  //否則計算該乘積項的值,並儲存到棧中 }}

}

代數余子式與行列式

乙個矩陣的行列式我們定義為 sum 1 times prod na 其中 sigma p 表示 p 的逆序對個數 高斯消元 m 表示遠矩陣去除第 i 行和第 j 列之後剩下矩陣的行列式 我們稱 m m times 1 為代數余子式 任意乙個 n 階矩陣的行列式可以用某一行或者某一列的代數余子式展開,...

行列式公式和代數余子式

前一篇介紹了行列式 determinant 的10個性質,且簡單闡述了如何用消元法求行列式。今天簡單介紹求解行列式的2個一般公式,先看第乙個公式,以最簡單的2 2矩陣為例,對行列式的求法如下 整個求解思想就是盡量將矩陣化為對角矩陣,每次取一行,逐漸化簡矩陣,在化簡過程中,有很多矩陣出現零行或零列,行...

1 2線性代數之行列式,余子式及代數余子式

行列式的樣子?行列式通常用豎線來表示 或者det a 求行列式a的a23的余子式 通常用m來表示余子式 也就是去掉指定位置的行和列的小行列式,結果就是余子式.求行列式a的a23的代數余子式 通常用a來表示余子式 a23 1 的 行 列 次方 m2 行列式只是乙個數,是一組數按一定規則進行代數運算的值...