1. 矩陣概念
在數(shù)學(xué)中,矩陣(Matrix)是一個(gè)按照長方陣列排列的復(fù)數(shù)或?qū)崝?shù)集合,最早來自于方程組的系數(shù)及常數(shù)所構(gòu)成的方陣。這一概念由19世紀(jì)英國數(shù)學(xué)家凱利首先提出。
矩陣是高等代數(shù)學(xué)中的常見工具,也常見于統(tǒng)計(jì)分析等應(yīng)用數(shù)學(xué)學(xué)科中。在物理學(xué)中,矩陣于電路學(xué)、力學(xué)、光學(xué)和量子物理中都有應(yīng)用;計(jì)算機(jī)科學(xué)中,三維動(dòng)畫制作也需要用到矩陣,尤其是計(jì)算機(jī)的圖像處理之中,利用矩陣表示圖像元素十分常見。 矩陣的運(yùn)算是數(shù)值分析領(lǐng)域的重要問題。將矩陣分解為簡單矩陣的組合可以在理論和實(shí)際應(yīng)用上簡化矩陣的運(yùn)算。
由 m × n 個(gè)數(shù)aij排成的m行n列的數(shù)表稱為m行n列的矩陣,簡稱m × n矩陣。記作:
這m×n 個(gè)數(shù)稱為矩陣A的元素,簡稱為元,數(shù)aij位于矩陣A的第i行第j列,稱為矩陣A的(i,j)元,以數(shù) aij為(i,j)元的矩陣可記為(aij)或(aij)m × n,m×n矩陣A也記作Amn。
注意:矩陣的概念很多,而且矩陣的運(yùn)算屬于計(jì)算機(jī)圖形學(xué),數(shù)學(xué)等學(xué)科的必備知識,其如果要完全寫下來則完全可以寫出一本書,本文知識簡單介紹,矩陣的基本知識必備要了解加減乘除,其中以乘法在計(jì)算機(jī)中又使用眾多。
2. 矩陣乘法
兩個(gè)矩陣的乘法僅當(dāng)?shù)谝粋€(gè)矩陣A的列數(shù)和另一個(gè)矩陣B的行數(shù)相等時(shí)才能定義。如A是m×n矩陣和B是n×p矩陣,它們的乘積C是一個(gè)m×p矩陣 ,它的一個(gè)元素:
并將此乘積記為: C=AB
例如:
3.矩陣乘法實(shí)現(xiàn)代碼
C語言中實(shí)現(xiàn),核心思路在于利用for循環(huán)每一位的相乘,矩陣1的行與矩陣2的列相乘,逐步補(bǔ)全整個(gè)矩陣。
#include<stdio.h> #include<stdlib.h> #include<string.h> #define M 100 int main(){ int i,j,k; int matrix1[M][M],matrix2[M][M],row1,col1,row2,col2; int ans[M][M]; //運(yùn)算結(jié)果,矩陣輸出 printf("輸入第一個(gè)矩陣的行高和列寬:"); scanf("%d%d",&row1,&col1); printf("輸入第一個(gè)矩陣:\n"); for(i=0;i<row1;i++){ for(j=0;j<col1;j++){ scanf("%d",&matrix1[i][j]); } } printf("輸入第二個(gè)矩陣的行高和列寬:"); scanf("%d%d",&row2,&col2); printf("輸入第二個(gè)矩陣:\n"); for(i=0;i<row2;i++){ for(j=0;j<col2;j++){ scanf("%d",&matrix2[i][j]); } } memset(ans,0,sizeof(ans)); printf("運(yùn)算結(jié)果為:\n"); for(i=0;i<row1;i++){ for(j=0;j<col2;j++){ for(k=0;k<col1;k++){ ans[i][j]=ans[i][j]+matrix1[i][k]*matrix2[k][j]; } } } for(i=0;i<row1;i++){ for(j=0;j<col2;j++){ printf("%d ",ans[i][j]); } printf("\n"); } return 0; }
4.推薦習(xí)題
1024 | [編程入門]矩陣對角線求和 |
1472 | 藍(lán)橋杯基礎(chǔ)練習(xí)VIP-矩陣乘法 |
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:
一點(diǎn)編程也不會(huì)寫的:零基礎(chǔ)C語言學(xué)練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程
從零到寫出一個(gè)爬蟲的Python編程課程
只會(huì)語法寫不出代碼?手把手帶你寫100個(gè)編程真題的編程百練課程
信息學(xué)奧賽或C++選手的 必學(xué)C++課程
藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程
手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程