前言
矩陣在數學和計算機科學中都有非常重要的作用,這篇博客將會向你講述矩陣的定義及它的基本運算。
一、定義
由 m × n 個數排成的m行n列的數表稱為m行n列的矩陣,簡稱m × n矩陣。記作:
這m×n 個數稱為矩陣A的元素,簡稱為元,數aij位於矩陣A的第i行第j列,稱為矩陣A的(i,j)元,以數 aij為(i,j)元的矩陣可記為(aij)或(aij)m × n,m×n矩陣A也記作Amn。——摘自百度百科
上面這段話很好地定義了矩陣(迷茫.jpg),如果要透徹地理解矩陣的定義,不妨去了解一下矩陣的歷史。
為了方便,一般我們都把矩陣封裝成一個結構體,貼代碼:
1 struct matrix{ 2 int zhen[n][n];//n為矩陣的大小,一般來說,只要不是毒瘤題,直接把數據儲存進一個四四方方的矩陣里,是不會爆內存的,也方便我們進行后期的計算 3 void New(){ //初始化 4 for(int i=1;i<=n;i++){ 5 for(int j=1;j<=n;j++){ 6 zhen[i][j]=0; 7 } 8 } 9 } 10 }
二、加(減)法
兩個大小為m*n的矩陣A,B相加,則結果矩陣C可以表示為
這個部分挺簡單的(所以就不貼代碼了),就是對應相加,減法其實可以就是加負數。
三、乘法
設A為p*m大小的矩陣,B為n*p大小的矩陣(注意:如果不滿足這個條件,則不能相乘),那么相乘結果C的第(i,j)項=$A_{i,1}*B_{1,i}+A_{i,2}*B_{2,i}+A_{i,3}*B_{3,i}+…+A_{i,p}*B_{p,i}$,可以簡寫為C=AB。
這樣說也許有些令人迷惑,但是我們可以從矩陣最初的使用目的來理解。最初,矩陣是用來解線性方程組的。如下面這個方程組:
可以表示為:
你看,是不是9和x相乘,2和y相相乘,相加等於15,然后,是不是,是不是就變成了方程組中的第一個式子!同樣的,下面的式子也是以此類推。
那么接下來就貼代碼吧:
matrix mul(matrix a,matrix b){//其實也可以重載運算符的 matrix ans; ans.New(0);//別忘記初始化 for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ for(int k=1;k<=n;k++){ ans.zhen[i][j]+=(a.zhen[i][k]*b.zhen[k][j]);//根據定義進行計算 } } } return ans; }
乘法是矩陣中最重要的基本運算,許多更高級的對矩陣的應用,幾乎都是以矩陣乘法為基礎的。
矩陣乘法滿足乘法結合律,即$(AB)C=A(BC)$。
證明:
設(AB)C=X,A(BC)=Y,B為m*n大小的矩陣。
$X_{i,j}=\sum_{k=1}^{n} (AB)_{i,k}C_{k,j}=\sum_{l=1}^{m}\sum_{k=1}^{n}A_{i,l}B_{l,k}C_{k,j}$
$Y_{i,j}=\sum_{l=1}^{m}A_{i,l}(BC)_{l,j}=\sum_{l=1}^{m}\sum_{k=1}^{n}A_{i,l}B_{l,k}C_{k,j}$
所以,$X_{i,j}=Y_{i,j}$
證畢
要注意的是,矩陣乘法不滿足交換律,所以在做題時,要特別注意相乘的順序。至於證偽,反例其實挺好找的,就不列舉出來了。
后言
矩陣作為一種強有力的工具,這篇文章僅僅介紹了基本使用方法,關於矩陣的具體運用,我會在另寫一篇博文。
本人水平有限,如果出現錯誤,歡迎在評論區指正。如果確實幫助到你的話,推薦是對我最大的支持!