數據結構三元組是什么,算法與數據結構(二)三元組矩陣行列式的計算(用遞歸)

 2023-12-06 阅读 27 评论 0

摘要:1.具體思想: 關于計算矩陣行列式有兩個主要方法: 1.根據矩陣行列式的定義式用遞歸計算(就是本文所講) 2.先做矩陣行變換,轉化為上三角矩陣,再求行列式。 數據結構三元組是什么?? (我先是思考了行變換轉化為三角矩陣,

1.具體思想:

關于計算矩陣行列式有兩個主要方法:

1.根據矩陣行列式的定義式用遞歸計算(就是本文所講)

2.先做矩陣行變換,轉化為上三角矩陣,再求行列式。

數據結構三元組是什么??

(我先是思考了行變換轉化為三角矩陣,但中途遇到了些問題,所以先把遞歸的方法寫下來,之后會繼續更新另外一種方法。)

線性代數里我們已經了解了遞歸求矩陣行列式的方法。下圖:

稀疏矩陣三元組順序表表示、然后每一個代數余子式又可以看做相對于“n階母矩陣”的“n-1階子矩陣”,再次對這個子矩陣按照行或列展開,這就是遞歸求矩陣行列式的思想。

2.三元組和二維數組

二維數組不用多說,它和矩陣是一一對應的,表示完全相同。

三元組是指形如((r,c),d)的集合,我們規定(r,c)是三元組中的一個數在二維數組中的對應位置,d表示數據的值。

三元組的數據結構如下:

 1 typedef struct2 {3     int r;4     int c;5     int d;6 }TupNode;7 typedef struct8 { 9 int rows; 10 int cols; 11 int nums; 12  TupNode data[Maxsize]; 13 }TSMatrix;

行列式的遞歸算法,具體的計算行列式代碼如下:

 1 //計算矩陣行列式2 int DatMat(TSMatrix t){3     if(t.cols!=t.rows){4         printf("該矩陣無法求行列式!");5         return 0; 6     }7     else{ 8 int n=t.cols; 9 int a[n][n]; 10 //將三元組轉化為二維數組 11 for(int i=0;i<n;i++){ 12 for(int j=0;j<n;j++){ 13 a[i][j]=0; 14  } 15  } 16 for(int k=0;k<t.nums;k++){ 17 int i = t.data[k].r; 18 int j = t.data[k].c; 19 a[i][j] = t.data[k].d; 20  } 21 if (n == 1){ 22 return a[0][0]; 23  } 24 else{ 25 int b[n-1][n-1];//創建n-1階的代數余子式陣bb 26 int c[(n-1)*(n-1)]; 27 int sum = 0;//sum為行列式的值 28  TSMatrix t1; 29 30 //以第一列為基礎,求行列式 31 for(int l=0;l<n;l++){ 32 int m1=0; 33 int m2=0; 34 for(int i =0;i<n;i++){ 35 for(int j=0;j<n;j++){ 36 if(i!=l&&j!=0){ 37 c[m1]=a[i][j]; 38 m1++; 39  } 40  } 41  } 42 for(int i =0;i<n-1;i++){ 43 for(int j=0;j<n-1;j++){ 44 b[i][j]=c[m2]; 45 m2++; 46  } 47  } 48 49 //把二維數組轉化為三元組 50 t1.rows=n-1; 51 t1.cols=n-1; 52 t1.nums=0; 53 for(int i=0;i<n-1;i++){ 54 for(int j=0;j<n-1;j++){ 55 if(b[i][j]!=0){ 56 t1.data[t1.nums].r=i; 57 t1.data[t1.nums].c=j; 58 t1.data[t1.nums].d=b[i][j]; 59 t1.nums++; 60  } 61  } 62  } 63 sum+=a[l][0]*DatMat(t1)*pow(-1,l);//通過遞歸來求行列式的值 64  } 65 return sum; 66  } 67  } 68 } 

?

轉載于:https://www.cnblogs.com/OrdinaryMan/p/10022255.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/190833.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息