【應用C】C語言實現行列式與矩陣的運算系統(+原始碼)
阿新 • • 發佈:2019-01-13
文章目錄
很久之前的課程小組作業,實際用處不大,因為有Matlab的存在,雖然現在已經不提倡從輪子造起,但是從輪子開始瞭解是必須的,記錄
01 - 行列式和矩陣
1.1 - 行列式定義
行列式是一個數值,表現為有n2個數,排成n行n列的數表
n個取自不同行不同列的n個元素乘積的代數和稱為行列式
1.2 - 矩陣定義
矩陣是一個數表,表現為有
個數
(
)排成
行
列,矩陣是一個整體,總是加一個括弧表示
02 - 基本運算
不像Matlab這麼強大,C語言只實現基本功能就可以,因為再複雜的運算都由基本功能組成
2.1 - 行列式基本運算
1、行列式的值
2、轉置行列式
3、行列式中第i行(列)乘以k
4、互換行列式的兩行 (列)
5、行列式化為上三角
6、第(i,j)元的代數餘子式
7、第j行(列)乘以k後,加到第i行(列)上
8、檢查行列式D是否能拆分成D1+D2(行/列)
2.2 - 矩陣基本運算
1、逆矩陣
2、轉置矩陣
3、矩陣的秩
4、兩個矩陣相乘
5、兩個矩陣相加
6、交換矩陣的兩行
7、矩陣的某行乘以k
8、常數k與矩陣相乘
9、矩陣化為行階梯型
10、矩陣化為行最簡型
11、矩陣對應的行列式的值
12、矩陣的第i行乘以k,加到第j行
03 - 資料結構
抽象出行列式和矩陣的相似點,構建以下結構體
typedef struct DetOrMar
{
//通用
NuDe con[Defaul_size][Defaul_size];
char type; //m-矩陣,d-行列式
int row; //行數
int col; //列數
//行列式相關
int value; //行列式的值
int Aij_value; //代數餘子式的值
}DorM;
NuDe其實是一個分子分母分開存放的結構體(不知道為什麼當初用這個英文,這是躶體的意思,看到結構體後就知道,原來是分子/分母英文縮寫的組合nude,奇葩),分子分母分開存放的原因是防止精度丟失,能使用整數運算就不要使用浮點數
typedef struct Elem
{
int deno; //分母
int nume; //分子
}NuDe;
04 - 結果測試
4.1 - 選單
4.2 - 行列式
4.3 - 矩陣
05 - 原始碼下載
小組課程作業,連結:百度網盤 提取碼:xt1m
06 - 總結
- 實現了行列式和矩陣的基本運算
- 輸入比較麻煩,可以改一下檔案讀入的掃描方式
- 細節有問題,存在記憶體洩露的問題