Python不使用庫(kù)進(jìn)行矩陣運(yùn)算詳解
Python矩陣運(yùn)算
矩陣乘法
矩陣乘法中,需要判斷兩個(gè)矩陣是否可以進(jìn)行相乘,即前一個(gè)矩陣的列是否等于后一個(gè)矩陣的行。具體代碼如下:
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] # 列表推導(dǎo)式 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í)數(shù)根
例如: x3 + ax2 +bx = c,其中a, b, c, 均為正整數(shù),求正實(shí)數(shù)根。
到此這篇關(guān)于Python不使用庫(kù)進(jìn)行矩陣運(yùn)算詳解的文章就介紹到這了,更多相關(guān)Python矩陣運(yùn)算內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)AVIF圖片與其他圖片格式間的批量轉(zhuǎn)換
這篇文章主要為大家詳細(xì)介紹了如何使用 Pillow 庫(kù)實(shí)現(xiàn)AVIF與其他格式的相互轉(zhuǎn)換,即將AVIF轉(zhuǎn)換為常見的格式,比如 JPG 或 PNG,需要的小伙伴可以參考下2025-04-04一文總結(jié)學(xué)習(xí)Python的14張思維導(dǎo)圖
一文總結(jié)學(xué)習(xí)Python的14張思維導(dǎo)圖,本文涵蓋了Python編程的核心知識(shí),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Python的requests網(wǎng)絡(luò)編程包使用教程
requests包為Python擴(kuò)展了各種基于HTTP的網(wǎng)絡(luò)數(shù)據(jù)操作功能,包括各種請(qǐng)求與session和cookie等的追加,very強(qiáng)大,下面我們就來(lái)看一下Python的requests網(wǎng)絡(luò)編程包使用教程2016-07-07pandas combine_first函數(shù)處理兩個(gè)數(shù)據(jù)集重疊和缺失
combine_first是pandas中的一個(gè)函數(shù),它可以將兩個(gè)DataFrame對(duì)象按照索引進(jìn)行合并,用一個(gè)對(duì)象中的非空值填充另一個(gè)對(duì)象中的空值,這個(gè)函數(shù)非常適合處理兩個(gè)數(shù)據(jù)集有部分重疊和缺失的情況,可以實(shí)現(xiàn)數(shù)據(jù)的補(bǔ)全和更新,本文介紹combine_first函數(shù)的語(yǔ)法及一些案例應(yīng)用2024-01-01python使用Tkinter實(shí)現(xiàn)在線音樂播放器
這篇文章主要為大家詳細(xì)介紹了python使用Tkinter實(shí)現(xiàn)在線音樂播放器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01