Python不使用庫進行矩陣運算詳解
Python矩陣運算
矩陣乘法
矩陣乘法中,需要判斷兩個矩陣是否可以進行相乘,即前一個矩陣的列是否等于后一個矩陣的行。具體代碼如下:
class Solution:
def multiplyofmatrix(self, A, f):
"""
Compute matrix A * matrix f.
For example:
Input:
A: [[1, 2], [3, 4]] Row of A: 2 Col of A: 2
f: [[1, 2], [3, 4]] Row of f: 2 Col of f: 2
Output:
ans: [[7, 10], [15, 22]]
s.t. A.col == f.col
"""
Arow, Acol = len(A), len(A[0])
frow, fcol = len(f), len(f[0])
if Acol != frow:
return 'False!'
ans = [[0] * fcol for _ in range(Arow)]
for i in range(fcol):
for j in range(Arow):
for k in range(frow):
ans[j][i] += A[j][k]*f[k][i]
return ans
if __name__=='__main__':
a = Solution().multiplyofmatrix([[1, 2], [3, 4]], [[1, 2], [3, 4]])
print(a)轉(zhuǎn)置矩陣
def transposeofmatrix(A):
"""
Matrix transpose.
For example:
Input:
A = [[1, 2],
[3, 4]]
Output:
A_transpose = [[1, 3],
[2, 4]]
"""
return [list(raw) for raw in zip(*A)]矩陣余矩陣
def submatrix(A, i, j):
# 矩陣A第i行第j列元素的余矩陣
m, n = len(A), len(A[0])
C = [[A[x][y] for y in range(n) if y != j] for x in range(m) if x != i] # 列表推導式
return C矩陣行列式
需要用到矩陣余矩陣函數(shù),代碼如下:
def detofmatrix(A):
m = len(A) # 矩陣的行數(shù)
n = len(A[0]) # 矩陣的列數(shù)
if (m == 1 and n == 1):
return A[0][0]
else:
value = 0
for j in range(n):
value += ((-1) ** (j + 2)) * A[0][j] * detofmatrix(submatrix(A, 0, j))
return value矩陣的逆
需要用到矩陣行列式函數(shù)和余矩陣函數(shù),代碼如下:
def inverseofmatrix(A):
m = len(A) # 矩陣的行數(shù)
n = len(A[0]) # 矩陣的列數(shù)
C = [[0] * n for _ in range(m)]
d = self.detofmatrix(A)
for i in range(m):
for j in range(n):
C[i][j] = ((-1) ** (i + j + 2)) * detofmatrix(submatrix(A, j, i))
C[i][j] = C[i][j] / d
return C求方程組根
求∣ A x − b ∣ = 0即為求 x = A-1 ∗b(A可逆的情況下),調(diào)用求逆函數(shù)和矩陣相乘函數(shù)即可。
求一元n次方程正實數(shù)根
例如: x3 + ax2 +bx = c,其中a, b, c, 均為正整數(shù),求正實數(shù)根。
到此這篇關(guān)于Python不使用庫進行矩陣運算詳解的文章就介紹到這了,更多相關(guān)Python矩陣運算內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pytorch實現(xiàn)ResNet結(jié)構(gòu)的實例代碼
ResNet網(wǎng)絡可以達到很深的層數(shù)的原因就是不斷的堆疊殘差結(jié)構(gòu)而來的,接下來通過本文給大家介紹pytorch實現(xiàn)ResNet結(jié)構(gòu)的示例代碼,喜歡的朋友跟隨小編一起看看吧2021-05-05
python實現(xiàn)樹形打印目錄結(jié)構(gòu)
這篇文章主要為大家詳細介紹了python樹形打印目錄結(jié)構(gòu)的相關(guān)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03
django 多數(shù)據(jù)庫及分庫實現(xiàn)方式
這篇文章主要介紹了django 多數(shù)據(jù)庫及分庫實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python兩個整數(shù)相除得到浮點數(shù)值的方法
這篇文章主要介紹了Python兩個整數(shù)相除得到浮點數(shù)值的方法,本文直接給出代碼示例,需要的朋友可以參考下2015-03-03
Python虛擬環(huán)境virtualenv的安裝與使用詳解
virtualenv可以用來管理互不干擾的獨立python虛擬環(huán)境,在有些場景下非常有用,下面這篇文章主要給大家介紹了Python虛擬環(huán)境virtualenv安裝與使用的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-05-05

