矩陣演算法描述

2022-09-20 05:18:03 字數 1957 閱讀 1852

矩陣乘法:

設c=a*b;

a的列數(必須等於b的行數(

c的列數=b的列數,c的行數=a的行數;

c[i][j]為a的第i行與b的第j列乘積累加;

具體實現:

for(i=0;i<

for(j=0;j<

for(k=0;k<

c[i][j] += a[i][k] * b[k][j];

}}}**:int multmatrix(matrix dat,matrix *res)//矩陣左乘

res->m =

res->n =

for(i=0; i< i++)

}return 1;

}矩陣求逆:

必須為方陣;

對於k從0到n-1作如下幾步,n為方陣維數;

1.從第k行,第k列,開始的右下角子陣中選取絕對值最大的元素a[r][c],並記住此元素所在的行號和列號,分別以一維陣列is[n],與js[n]儲存, 設r為絕對值最大的行號,c為絕對值最大的列號,is[k]=r , js[k]=c, 如果a[k][k]的右下角矩陣全為0,則該矩陣無法求逆;

再通過行交換與列交換將它交換到主元素位置上.這一步稱全選主元;

a[k][j]<->a[r][j]; j =0,1,2…n-1; r != k;

a[i][k]<->a[i][c]; i =0,1,2…n-1; c != k;

= 1/a[k][k]

= a[k][j]*a[k][k], j=0,1,...n-1; i,j!=k

i,j=0,1,...,n-1; i,j!=k

i=0,1,...,n-1; i!=k;

對於k從n-1到0作恢復,原則如下

在全選主元過程中,先交換的行,列後進行恢復;原來的行(列)交換用列(行)交換來恢復;

a[k][j]<->a[c][j];a[i][k]<->a[i][r]; i , j =0,1,2…n-1; c , r != k;

**:int inv(matrix dat,matrix *res)

else

for(k=>=0;k--)

*res = dat;

return 1;

}}求行列式:

必須為方陣;

對於k從0到n-1作如下幾步,n為方陣維數

1. 從第k行,第k列,開始的右下角子陣中,找出絕對值最大的元素a[is][js],把其下標儲存在is,js中,如果a[k][k]的右下角矩陣全為0,則行列式的值為0;

2. 再通過行交換與列交換將它交換到主元素位置上.這一步稱全選主元;

a[k][j]<->a[is][j]; j =0,1,2…n-1; is != k;

a[i][k]<->a[i][js]; i =0,1,2…n-1; js != k;

交換時記錄交換次數,交換次數為奇數時,要把所求得的行列式*(-1);

3. det = det * a[k][k];

4. d = a[i][k] / a[k][k] ; i = k+1,k+2,…n-1; d為第i行第k列元素a[i][k]與a[k][k]的比值;

5. a[i][j] = a[i][j] – d * a[k][j]; i,j = k+1,k+2…n-1; i行減去k行的d倍數(第j列);

結束k的迴圈

det = det * a[n-1][n-1];//若交換次數為奇數,則*-1;

det為返回的行列式值;

**:double det(matrix dat)

for(k=0; k<= k++)

如果右下角矩陣全為0,則行列式值為0

if(q==0.0)

不是當前行,則置換第k行和第is行

if(is != k)

不是當前列,則置換第k行和第js行

if(js != k)

det = det*

for(i=k+1;i<

}det = f*det*

教案四演算法和演算法的描述

用輾轉相除法求最大公約數 教學目標 1.了解並掌握輾轉相除法的基本思想。2.學會用輾轉相除法求最大公約數。3.培養學生用多種方法解決問題的能力。教學方法 講授法與討論法相結合。教學過程 1 引入 1 教師舉例講解輾轉相除法 例如 求164與64的最大公約數 基本思想 164 64 2 36 64 3...

12演算法描述與設計

演算法分析 從1開始順次取出乙個自然數判斷它被3 5 7整除後的餘數是否為2 3 2。如果是,則這個數即是所求的數,求解結束 否則,用下乙個數再試,直到找到這個數為止。演算法描述 第一步 將n初始值賦為1 第二步 如果n被3 5 7整除後的餘數分別為2 3 2,則輸出n的值,轉到第四步。第三步 將n...

第1章C語言概述與演算法描述

1.c程式的基本組成單位是函式。2.c語言本生沒有輸入輸出語句。3.結構化程式有順序結構 選擇結構 迴圈結構三種基本結構組成。5.在c語言中,乙個變數代表記憶體中乙個儲存單元。7.1 演算法的特性 有窮性 包含有限的操作步驟。確定性 演算法中的每乙個步驟都應當是確定的。有零個或多個輸入 輸入是指在執...