tft每日頭條

 > 生活

 > python中矩陣乘法

python中矩陣乘法

生活 更新时间:2024-07-31 15:15:10

矩陣是線性代數中一種非常重要的概念,在競賽題中經常會出現矩陣的加法和乘法相關的操作。本次的内容不再具體舉原題的例子,我們了解一下矩陣的加法和乘法的計算方式,并使用Python語言編寫矩陣相加和相乘的程序。Python的Numpy庫提供了矩陣計算的相關方法,這裡不做講解,本次的内容僅講解使用手工的方法編寫程序計算矩陣加法和乘法的思路。

一、矩陣的加法

輸入兩個 n 行 m 列的矩陣 A 和 B,它們的和寫作 A B,矩陣加法的規則是兩個矩陣中對應位置的值進行加和。

python中矩陣乘法(少兒Python每日一題19)1

矩陣的加法相對來說比較簡單,從上面的公式中我們可以看出,我們需要定義兩個二維數據,通過循環将對應位置的值相加即可。

假設我們輸入兩個三行三列的矩陣,并計算出它們的結果,由于是二維數據,我們在運算的過程中需要使用到循環的嵌套。程序可以這樣寫:

a = [] b = [] c = [] for i in range(3): a.append(list(map(int, input().split()))) for i in range(3): b.append(list(map(int, input().split()))) for i in range(3): t = [] for j in range(3): t.append(a[i][j] b[i][j]) c.append(t) for i in c: for j in i: print(j, end=' ') print()

看完了3行3列的矩陣的加法的計算方法如果是m行n列的矩陣,我們也可以使用同樣的方式進行計算,我們看一下m行n列的矩陣的代碼如何書寫:

m = int(input()) # 矩陣行數 n = int(input()) # 矩陣列數 a = [] b = [] c = [] for i in range(m): a.append(list(map(int, input().split()))) for i in range(m): b.append(list(map(int, input().split()))) for i in range(m): t = [] for j in range(n): t.append(a[i][j] b[i][j]) c.append(t) for i in c: for j in i: print(j, end=' ') print()

二、矩陣的乘法

矩陣的乘法的定義相對于矩陣的加法要難一點:

n×m 階的矩陣 A 乘以 m×k 階的矩陣 B 得到的矩陣 C 是 n×k 階的,且 C[i][j]=A[i][0] × B[0][j] A[i][1] × B[1][j] …… A[i][m-1] × B[m-1][j](C[i][j] 表示 C 矩陣中第 i 行第 j 列元素)。

python中矩陣乘法(少兒Python每日一題19)2

我們就以2×3階矩陣乘以3×2階矩陣為例,講一下矩陣的乘法的Python代碼如何編寫。

從上面的公式我們可以得知,A矩陣的一行需要與B矩陣的一列逐個相乘,并相加。

我們可以先定義一個3×3階的矩陣,讓它所有的元素的初始值都為0。這時候我們需要先寫一個二層循環,分别對應乘積中的各個元素。每個元素需要再套一層循環,計算兩個矩陣中的第k行和第k列中每個元素的乘積,并進行累加。

a = [] b = [] c = [] for i in range(3): a.append(list(map(int, input().split()))) for i in range(2): b.append(list(map(int, input().split()))) for i in range(3): c.append([0] * 3) # 存放乘法結果的矩陣中所有初始值為0 for i in range(3): for j in range(3): for k in range(2): c[i][j] = a[i][k] * b[k][j] for i in c: for j in i: print(j, end=' ') print()

剛剛以2×3階矩陣乘以3×2階矩陣為例,如果是n×m階矩陣乘以m乘k階矩陣,方法也是一樣的。大家不妨自己試着寫一寫。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved