文章目录
实验环境
Anconda+python3.8+jupyter
矩阵基本运算
先引入numpy
import numpy as np
1、python矩阵操作
- 使用mat函数创建一个2X3矩阵
import numpy as np
a=np.mat([[1,2,3],[4,5,6]])
a
- 使用shape可以获取矩阵大小
a.shape
- 使用下标读取矩阵中的元素
a.T
- 进行行列转换
a.transpose()
a.T
- 使用二维数组代替矩阵
b=np.array([[1,2,3],[4,5,6]])
b
b.T
- 加减法
a+a
b+b
c=[[1,2,3],[4,5,6]]
c+c
2、python矩阵乘法
- 使用二维数组创建两个矩阵
A=np.array([[1,2,3],[4,5,6]])
B=A.T
-
矩阵的数乘
-
dot函数用于矩阵乘法,对于二维数组,它计算的是矩阵乘积,对于一维数组,它计算的是内积
-
再创建一个二维数组
C=np.array([[1,2],[1,3]])
C
- 验证矩阵乘法的结合性:(AB)C=A(BC)
np.dot(np.dot(A,B),C)
np.dot(A,np.dot(B,C))
- 验证矩阵加法的分配性:(A+B)C=AC+BC,C(A+B)=CA+CB
D=B-1
D
np.dot(A,B+D)
np.dot(A,B)+np.dot(A,D)
- 验证矩阵数乘的结合性
2*(np.dot(A,B))
np.dot(A,2*B)
np.dot(2*A,B)
np.dot(A,2*B)
- 使用eye创建一个单位矩阵
I=np.eye(3)
I
- 一个矩阵A乘以单位矩阵,还是它本身
np.dot(A,I)
3、python矩阵转置
-
创建一个矩阵A
-
使用属性T来得到矩阵A的转置矩阵
A.T
- 验证第一个性质:(A ′) ′=A
A.T.T
-
创建两个尺寸相同的矩阵
-
验证第二个性质:( A ± B ) ′ = A ′ ± B ′
(B+D).T
B.T+D.T
- 验证第三个性质:( K A ) ′ = K A ′
10*A.T
(10*A).T
- 验证第四个性质:( A × B ) ′ = B ′ × A ′
np.dot(A,B)
np.dot(A.T,B.T)
np.dot(B.T,A.T)
4、python求方阵的迹
- 创建一个方阵(方阵也就是行数等于列数的矩阵)
E=np.array([[1,2,3],[4,5,6],[7,8,9]])
E
- 用trace计算方阵的迹
np.trace(E)
- 再创建一个方阵F
F=E-2
F
- 验证方阵的迹等于方阵的转置的迹
np.trace(E)
np.trace(E.T)
- 验证方阵的乘积的迹
np.trace(np.dot(E,F))
np.trace(np.dot(F,E))
- 验证方阵的和的迹等于方阵的迹的和
np.trace(E+F)
np.trace(E)+np.trace(F)
5、python方阵的行列式计算方法
-
创建两个方阵
-
使用det方法求得方阵E和方阵F的行列式
np.linalg.det(E)
np.linalg.det(F)
C
np.linalg.det(C)
6、python求逆矩阵/伴随矩阵
- 创建一个方阵
A=np.array([[1,-2,1],[0,2,-1],[1,1,-2]])
A
- 使用linalg.det求得方阵的行列式
A_abs=np.linalg.det(A)
A_abs
- 使用linalg.inv求得方阵A的逆矩阵
B=np.linalg.inv(A)
B
- 利用公式求伴随矩阵:A-1=A*/|A|==>A∗ = A-1|A|
A_bansui=B*A_abs
A_bansui
7、python解多元一次方程
- 要解的方程
x+2y+z=7
2x-y+3z=7
3x+y+2z=18 - 将未知数的系数写下来,排列成一个矩阵a
a=[[1,2,1],[2,-1,3],[3,1,2]]
a=np.array(a)
a
- 常数项构成一个一维数组(向量)
b=[7,7,18]
b=np.array(b)
b
- 使用linalg.solve方法解方程,常数a指的是系数矩阵,常数b指的是常数项矩阵
x=np.linalg.solve(a,b)
x
- 使用点乘的方法验证一下,系数乘以未知数可以得到常数项
np.dot(a,x)