矩陣的定義及基本運算


前言

  矩陣在數學和計算機科學中都有非常重要的作用,這篇博客將會向你講述矩陣的定義及它的基本運算。

一、定義

由 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}$

    證畢

  要注意的是,矩陣乘法不滿足交換律,所以在做題時,要特別注意相乘的順序。至於證偽,反例其實挺好找的,就不列舉出來了。

后言

  矩陣作為一種強有力的工具,這篇文章僅僅介紹了基本使用方法,關於矩陣的具體運用,我會在另寫一篇博文。

  本人水平有限,如果出現錯誤,歡迎在評論區指正。如果確實幫助到你的話,推薦是對我最大的支持!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM