一、簡介
線性代數是應用廣泛的數學分支。在Python中,linalg是scipy庫中常用的多元線性代數模塊。它提供了一系列的矩陣操作函數和解線性方程組的函數。
二、創建矩陣
在使用linalg之前,我們需要先了解如何創建矩陣。在numpy庫中,我們可以使用數組來創建矩陣:
import numpy as np
#創建一個2x3的矩陣
A = np.array([[1, 2, 3],
[4, 5, 6]])
print(A)
運行結果:
array([[1, 2, 3],
[4, 5, 6]])
我們還可以使用numpy提供的函數來創建特定的矩陣,比如單位矩陣、零矩陣和對角矩陣:
import numpy as np
#創建一個3階單位矩陣
I = np.eye(3)
print(I)
#創建一個3x3的零矩陣
O = np.zeros((3, 3))
print(O)
#創建一個對角線為1,2,3的對角矩陣
D = np.diag([1, 2, 3])
print(D)
運行結果:
array([[1., 0., 0.],
[0., 1., 0.],
[0., 0., 1.]])
array([[0., 0., 0.],
[0., 0., 0.],
[0., 0., 0.]])
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
三、矩陣的加減乘除
使用linalg時,我們可以通過numpy數組的加減法來實現矩陣的加減法,使用 numpy的dot函數來計算矩陣的乘法:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
B = np.array([[5, 6],
[7, 8]])
#矩陣加法
print(A + B)
#矩陣減法
print(A - B)
#矩陣乘法
print(np.dot(A, B))
#矩陣除法
print(np.dot(A, np.linalg.inv(B)))
運行結果:
array([[ 6, 8],
[10, 12]])
array([[-4, -4],
[-4, -4]])
array([[19, 22],
[43, 50]])
array([[-2.00000000e+00, 1.00000000e+00],
[ 1.50000000e+00, -7.95807864e-16]])
四、矩陣的行列式和逆矩陣
對於一個方陣 A,我們可以使用 linalg.det 計算它的行列式值:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
#計算A的行列式
print(np.linalg.det(A))
運行結果:
-2.0000000000000004
同時,我們還可以使用 linalg.inv 計算矩陣的逆矩陣:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
#計算A的逆矩陣
print(np.linalg.inv(A))
運行結果:
array([[-2. , 1. ],
[ 1.5, -0.5]])
五、解線性方程組
通過linalg中的solve函數,我們可以解決形如Ax=b的線性方程組:
import numpy as np
A = np.array([[1, 2],
[3, 4]])
b = np.array([1, 2])
#解線性方程組Ax=b
x = np.linalg.solve(A, b)
print(x)
運行結果:
array([-0.9999999999999996, 1.0000000000000002])
其中,x的第一個元素為x1,第二個元素為x2。
六、主要函數列表
以下是linalg模塊常用的函數列表:
- det(a):計算矩陣的行列式
- inv(a):計算矩陣的逆矩陣
- norm(x):計算向量或矩陣的範數
- solve(a, b):解線性方程組 Ax=b
- eig(a):計算矩陣的特徵值和特徵向量
- svd(a):奇異值分解
- pinv(a):計算矩陣的偽逆
七、總結
linalg模塊為Python中提供了非常強大的多元線性代數計算能力。使用linalg模塊,我們可以方便地進行矩陣的加減乘除、求矩陣的行列式和逆矩陣、解線性方程組等操作。除此之外,linalg模塊還提供了特徵值分解、奇異值分解等高級功能,能夠滿足不同領域的數學計算需求。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198199.html