c語言實現兩個3階矩陣相乘,二階矩陣與三階矩陣相乘的C語言

2021-03-03 22:13:24 字數 4139 閱讀 5143

1樓:匿名使用者

#include

void main()

;int b[3][3]=;

int c[3][3]=;//要初始化

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

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

二階矩陣與三階矩陣相乘的c語言

2樓:匿名使用者

方法1:

把兩個行列式,都分別求出來,然後相乘

方法2:

把兩個行列式相應的矩陣,相乘,得到一個新的3階矩陣(元素aij,是第1個矩陣的i行,與第2個矩陣的j列元素,分別相乘之後,求和)

然後求這個新矩陣的行列式,即可

3樓:thx_吳

#include

void main()

;int b[9]=;

//輸出一位陣列a[9] b[9]

printf("a[9]:");

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

printf("%d ",a[i]); printf("\n\n");

printf("b[9]:");

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

printf("%d ",b[i]);

//定義3*3二維陣列

int c[3][3];

//依照3*3矩陣格式列印結果

printf("\n結果為:\n\n");

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

printf("\n");}}

求大神,c語言的一個矩陣相乘(兩個3*3的矩陣),中值濾波問題

4樓:匿名使用者

按照題目要求寫如下**,後面附結果,如果滿意,望採納!

#include

#include

#include

double a[3][16] = ;

double mask[3][3] = ;

*p++ = sum/16;

}return;

}int main(int argc, char const *argv)

printf("\n");

system("pause");

return 0;}

用c語言實現兩個矩陣相乘怎麼做?

5樓:灩麗

1、程式執行輸入資料時,第一行為a矩陣的行列數和b矩陣的行列數,接著分別輸入a、b兩個矩陣的值。

2、首先,定義6個整型變數,儲存a、b矩陣的行和列,以及控制迴圈的變數,k則用於實現矩陣的乘法。

3、接著,定義三個整型二維陣列,儲存a、b和c矩陣的各元素。

4、輸入三個矩陣的行數和列數,儲存在變數a、b、c中。

5、輸入矩陣a的各元素,儲存在陣列x中。

6、輸入矩陣b的各元素,儲存在陣列y中。

7、將二維陣列z的各元素,初始化為0。

8、用兩層for迴圈,控制矩陣的乘法,並輸出乘法所得的結果。

9、計算a矩陣和b矩陣的乘法,結果儲存在陣列z中。

10、最後,輸出乘法所得的結果,即輸出z陣列中的所有元素。

11、執行程式,輸入矩陣a和b的行數和列數,以及a矩陣和b矩陣的所有元素,電腦就會計算出乘積c矩陣的所有元素,並輸出c矩陣。

6樓:匿名使用者

#include

#include

#define m 3

int main(void)

{int i,j,k,matrix1[m][m],matrix2[m][m],row1=m ,col1=m ,row2=m,col2=m,matrix[m][m];

/*為需要相乘的兩個矩陣賦值:*/

printf("輸入第一個矩陣:\n");

for(i=0;i

7樓:育知同創教育

c語言實現矩陣相乘

問題描述:

編寫程式,可以實現m*n矩陣和n*p矩陣相乘。m,n,p均小於10,矩陣元素為整數。

分析:首先我們可以根據題意寫出函式頭。可以定為void matrixmutiply(int m,int n,int p,long lmatrix1[max][max],long lmatrix2[max][max],long lmatrixresult[max][max]),其中lmatrix1和lmatrix2分別是輸入的m*n矩陣和n*p矩陣,lmatrixresult是輸出的m*p矩陣。

因為m,n和p都是未知量,要進行處理的矩陣大小是變數。但我們可以定義比較大的二維陣列,只使用其中的部分陣列元素。

矩陣相乘的演算法比較簡單,輸入一個m*n矩陣和一個n*p矩陣,結果必然是m*p矩陣,有m*p個元素,每個元素都需要計算,可以使用m*p巢狀迴圈進行計算。

根據矩陣乘法公式:

可以用迴圈直接套用上面的公式計算每個元素。巢狀迴圈內部進行累加前,一定要注意對累加變數進行清零。

資料要求

問題中的常量:

#define max 10  /*矩陣最大行數和列數*/

問題的輸入:

int m,n,p;   /*相乘的兩個矩陣的行列數*/

long lmatrix1[max][max],lmatrix2[max][max]; /*相乘的兩個矩陣*/

問題的輸出:

long lmatrixresult[max][max];    /*矩陣相乘後得到的矩陣*/

初始演算法

1.輸入兩個矩陣的的行列數m,n,p;

2.輸入第一個矩陣的每個元素;

3.輸入第二個矩陣的每個元素;

4.呼叫函式進行乘法運算,結果放在lmatrixresult 中;

5. 列印輸出結果矩陣。

演算法細化

演算法的步驟4計算兩個矩陣的乘法演算法如下:

4.1 定義迴圈變數i,j,k;

4.2 巢狀迴圈計算結果矩陣(m*p)的每個元素。

程式**如下:

#define max 10

void matrixmutiply(int m,int n,int p,long lmatrix1[max][max],

long lmatrix2[max][max],long lmatrixresult[max][max])

}main()

/*輸入第二個矩陣的每個元素*/

printf("\nplease elements of matrix2(%d*%d):\n",n,p);

for(i=0;i

for(j=0;j

/*呼叫函式進行乘法運算,結果放在lmatrixresult 中*/

matrixmutiply(m,n,p,lmatrix1,lmatrix2,lmatrixresult);

/*列印輸出結果矩陣*/

printf("\nresult matrix: \n");

for(i=0;i

}程式執行結果如下:

please input m of matrix1:

**lease input n of matrix1:

2please input p of matrix2:

**lease elements of matrix1(3*2):

1 20 1

3 0please elements of matrix2(2*3):

1 2 0

3 1 1

result matrix:

7 4 2

3 1 1

3 6 0

8樓:匿名使用者

有c語言實現兩個句子呢相同的話我覺得這個在程式設計的時候只要把兩個句子兩個句子然後涉及到一個什麼可以了

9樓:匿名使用者

用c語言實現兩個矩陣相乘,編寫程式就行。

10樓:xc望心闖天下

#include

int main()

}for(i = 0;i < 3 ; i++)}for(i = 0; i < 3; i++)}for(i = 0;i < 3 ; i++)printf("\n");}}請採納

兩個矩陣相乘後的秩和兩個矩陣的秩相乘的結果一樣嗎

這個顯然是錯的,考慮兩個n階單位陣相乘 定理 如果ab 0,則秩 a 秩 b n。證明 將矩陣b的列向量記為bi。ab 0,所 abi 0,bi為ax 0的解。ax 0的基礎解系含有n 秩 a 個線性無關的解,秩 b n 秩 a 即秩 a 秩 b n。ps 這個結論在證明或者選擇填空中都經常用到,需...

兩個矩陣相乘零矩陣,秩的關係,兩個矩陣的乘積為零矩陣,那麼這兩個矩陣的秩之間有什麼關係?

兩種證明方法。第一種是用分塊矩陣乘法來證明。不太好書寫,可以見線性代數習題冊答案集 第二種是線性方程組的解的關係來證明。因為ab 0,所以b的每一列都是線性方程組ax 0的解。而根據線性方程組理論,ax 0的基礎解系中線性無關的解的個數 或者說解空間的維數 n r a 而b的列向量組是解空間的一部分...

MATLAB中兩個矩陣相乘的問題

你這個j 1 544 並沒有在迴圈,而是直接賦給 j 一個向量了。要實現你的目的直接 sig returne.cjl 即可 matlab中的兩個矩陣 是怎麼個乘法來著 矩陣分析是解決很多問題的好方法,但是很多時候矩陣的運算比較繁瑣,特別是高階矩陣運算。這時候如果用matlab來計算就方便快捷得多。下...