Numpy庫進階教程(一)求解線性方程組

前言

Numpy是一個非常強大的python科學計算庫,爲了機器學習的需要,想深入研究一下Numpy庫的用法,用這個系列的博客,記錄下我的學習過程。
系列:
Numpy庫進階教程(二)
正在持續更新

計算逆矩陣

numpy.linalg模塊包含線性代數的函數,可以用來求矩陣的逆,求解線性方程組、求特徵值及求解行列式。
mat函數可以用來構造一個矩陣,傳進去一個專用字符串,矩陣的行與行之間用分號隔開,行內的元素用空格隔開。

import numpy as np

A = np.mat("0 1 2;1 0 3;4 -3 8")
print "A\n", A

現在我們使用inv函數計算逆矩陣

inverse = np.linalg.inv(A)
print "inverse of A\n", inverse

我們檢查一下兩矩陣相乘的結果

print "Check\n", A * inverse

需要說明的是這裏的 A * inverse是兩個矩陣中對應元素逐個相乘,這就要求了兩矩陣的行和列相等。

求解線性方程組

創建矩陣A和數組b:


A = np.mat("1 -2 1;0 2 -8;-4 5 9")
print "A\n", A

b = np.array([0, 8, -9])
print "b\n", b

這裏可以直接調用linalg中的solve函數求解

x = np.linalg.solve(A, b)
print "Solution", x

使用dot函數檢查解的正確性:

print "Check\n", np.dot(A , x)

這裏的dot函數是兩個矩陣相乘,而非矩陣內元素逐個相乘

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章