# 线性代数
# numpy.linalg模块包含线性代数的函数。使用这个模块,可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。
import numpy as np
A = np.mat("0 1 2;1 0 3;4 -3 8")
print (A)
1. 计算逆矩阵(注:矩阵必须是方阵且可逆)
#创建矩阵
A = np.mat("0 1 2;1 0 3;4 -3 8")
#A=vec1=array([[0,1,2],[1,0,3],[4,-3,8])
print (A)
#[[ 0 1 2]
# [ 1 0 3]
# [ 4 -3 8]]
使用inv函数计算逆矩阵
inv = np.linalg.inv(A)
print (inv)
#[[-4.5 7. -1.5]
# [-2. 4. -1. ]
# [ 1.5 -2. 0.5]]
2. 求解线性方程组
numpy.linalg中的函数solve可以求解形如 Ax = b 的线性方程组,其中 A 为矩阵,b 为一维或二维的数组,x 是未知变量
import numpy as np
#创建矩阵和数组
B = np.mat("1 -2 1;0 2 -8;-4 5 9")
b = np.array([0,8,-9])
# 调用solve函数求解线性方程
x = np.linalg.solve(B,b)
print (x)
#[ 29. 16. 3.]
# 使用dot函数检查求得的解是否正确(np中矩阵的乘法)
print (np.dot(B , x))
# [[ 0. 8. -9.]]
3. 特征值(eigenvalue)和特征向量(eigenvector)
应用:1)A与B的特征值是否相同是判断A与B是否相似的根本依据
2)判断矩阵可对角化的充要条件
设 A 是n阶方阵,如果存在数m和非零n维列向量 x,使得 Ax=mx 成立,则称 m 是A的一个特征值
非零n维列向量x称为矩阵A的特征向量
numpy.linalg模块中,eigvals函数可以计算矩阵的特征值,而eig函数可以返回一个包含特征值和对应的特征向量的元组
import numpy as np
# 创建一个矩阵
C = np.mat("3 -2;1 0")
# 调用eigvals函数求解特征值
c0 = np.linalg.eigvals(C)
print (c0)
# [ 2. 1.]
# 使用eig函数求解特征值和特征向量 (该函数将返回一个元组,按列排放着特征值和对应的特征向量,其中第一列为特征值,第二列为特征向量)
c1,c2 = np.linalg.eig(C)
print (c1)
# [ 2. 1.]
print (c2)
#[[ 0.89442719 0.70710678]
# [ 0.4472136 0.70710678]]