矩陣加 減 乘法的C語言實現

矩陣的加減法:就是對應位置相加減即可

對於滿足以下條件的矩陣A,B:

\large A \in M_{n \times m} (\mathbb{C})\; , \; B \in M_{n \times m}(\mathbb{C})

我們有:

加法,

\large A + B = C\; , \; C \in M_{n \times m}(\mathbb{C})

\large C_{ij} = A_{ij} + B_{ij}

減法,

\large A - B = C\; , \; C \in M_{n \times m}(\mathbb{C})

\large C_{ij} = A_{ij} - B_{ij}

 

 

矩陣的乘法:

對於滿足以下條件的矩陣A,B,C:

\large A\in M_{m\times r}(\mathbb{C}),B\in M_{r\times n}(\mathbb{C}),C\in M_{m\times n}(\mathbb{C})

我們有:

\large A\times B=C

其中:

\large C_{ij}=\sum_{k=1}^{r}(A_{ik}\times B_{kj});\forall 1\leqslant i\leqslant m,1\leqslant j\leqslant n

 

要注意的是矩陣羣沒有乘法交換律,也就是說:

\large A \cdot B \neq B\cdot A

下面的代碼是輸入兩個矩陣,輸出他們的乘

#include <stdio.h>

int main(void)
{
	int mTemp, rTemp, nTemp;
	scanf("%d %d %d", &mTemp, &rTemp, &nTemp);
	const int m = mTemp, r = rTemp, n = nTemp;	//注意數組的聲明要用常數
	double A[m][r], B[r][n], C[m][n];

	//輸入A,B兩個矩陣
	for (int i = 0; i <= m - 1; i++) {
		for (int j = 0; j <= r - 1; j++) {
			scanf("%lf", &A[i][j]);
			}
		}
	for (int i = 0; i <= r - 1; i++) {
		for (int j = 0; j <= n - 1; j++) {
			scanf("%lf", &B[i][j]);
			}
		}

	//將矩陣(二維數組)C 的所有元素全部初始化爲零
	for (int i = 0; i <= m - 1; i++) {
		for (int j = 0; j <= n - 1; j++) {
			C[i][j] = 0;
			}
		}

	//矩陣乘法
	for (int i = 0; i <= m - 1; i++) {
		for (int j = 0; j <= n - 1; j++) {
			for (int k = 0; k <= r - 1; k++) {
				C[i][j] += A[i][k] * B[k][j];
				}
			}
		}
	
	//輸出結果
	for (int i = 0; i <= m - 1; i++) {
		for (int j = 0; j <= n - 1; j++) {
			printf("%10.5f ", C[i][j]);
			}
			printf("\n");
		}

	return 0;
}

 

當我們要進行計算的時候,首先輸入m, r, n,再輸入矩陣A, 再輸入矩陣B

比如,我想要計算一下這兩組矩陣

\large \begin{pmatrix} 1 &2 &3 \\ 4 & 5 & 6\\ 7& 8 & 9\\ 10&11 & 12 \end{pmatrix}\times \begin{pmatrix} 1 &1.1 \\ 2 &2.2 \\ 3 &3.3 \\ 4& 4.4 \end{pmatrix}

我就要這樣輸入

輸出結果:

發現精度都沒用上,居然是整數,那就再算一組,來個複雜點的

 


輸入:

輸出:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章