文章目录

  • 一、python 矩阵操作
  • 二、python 矩阵乘法
  • 三、python 矩阵转置
  • 四、python 求方阵的迹
  • 五、python 方阵的行列式计算方法
  • 六、python 求逆矩阵 / 伴随矩阵
  • 七、python 解多元一次方程
  • 八、总结


一、python 矩阵操作

先引入 numpy ,使用 mat 函数创建一个 2×3 矩阵。

#引入numpy
import numpy as np
#使用mat函数创建一个2×3矩阵
a=np.mat([[1,2,3],[4,5,6]])
a

python 矩阵与运算 python做矩阵运算_二维数组


使用 shape 可以获取矩阵的大小

#使用shape可以获取矩阵的大小
a.shape

python 矩阵与运算 python做矩阵运算_numpy_02


使用下表读取矩阵中的元素

#使用下标读取矩阵中的元素
a.T

python 矩阵与运算 python做矩阵运算_numpy_03


进行行列转换。

#进行行列转换
a.transpose()

a.T

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_04


python 矩阵与运算 python做矩阵运算_线性代数_05


实际上官方文档建议我们使用二维数组代替矩阵来进行矩阵运算;因为二维数组用得较多,而且基本可取代矩阵。

#用二维数组代替矩阵
b=np.array([[1,2,3],[4,5,6]])
b

b.T

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_06


python 矩阵与运算 python做矩阵运算_线性代数_07

加减法也是一样的。

#加减法
a+a

b+b

python 矩阵与运算 python做矩阵运算_numpy_08


当然列表是不能这么尽兴加减的。

#列表不能尽兴加减
c=[[1,2,3],[4,5,6]]
c+c

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_09

二、python 矩阵乘法

使用二维数组创建两个矩阵 A 和 B。

#使用二维数组创建两个矩阵A和B
A=np.array([[1,2,3],[4,5,6]])
B=A.T

A

B

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_10


python 矩阵与运算 python做矩阵运算_python 矩阵与运算_11

先来一个矩阵的数乘,其实是矩阵的每一个元素乘以该数。

#矩阵每个元素乘以该数
2*A

2*B

python 矩阵与运算 python做矩阵运算_二维数组_12

python 矩阵与运算 python做矩阵运算_线性代数_13


dot 函数用于矩阵乘法,对于二维数组,它计算的是矩阵乘积,对于一维数组,它计算的是内积。

A*B

np.dot(A,B)

np.dot(B,A)

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_14


python 矩阵与运算 python做矩阵运算_二维数组_15


python 矩阵与运算 python做矩阵运算_python 矩阵与运算_16


再创建一个二维数组

#创建一个二维数组
C=np.array([[1,2],[1,3]])
C

python 矩阵与运算 python做矩阵运算_二维数组_17


我们验证一个矩阵乘法的结合性:(AB)C=A(BC)。

python 矩阵与运算 python做矩阵运算_线性代数_18

python 矩阵与运算 python做矩阵运算_线性代数_19


接着看一下对加法的分配性:(A+B)C=AC+BC、C(A+B)=CA+CB。

#验证加法的分配性 (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)

python 矩阵与运算 python做矩阵运算_二维数组_20


python 矩阵与运算 python做矩阵运算_numpy_21


python 矩阵与运算 python做矩阵运算_python_22


数乘的结合性,也是一样的。

#验证数乘的结合性
2*(np.dot(A,B))

np.dot(A,2*B)

np.dot(2*A,B)

np.dot(A,2*B)

python 矩阵与运算 python做矩阵运算_线性代数_23


python 矩阵与运算 python做矩阵运算_python_24


python 矩阵与运算 python做矩阵运算_python 矩阵与运算_25


python 矩阵与运算 python做矩阵运算_二维数组_26


使用 eye 创建一个单位矩阵

#使用 eye 创建一个单位矩阵
I=np.eye(3)
I

python 矩阵与运算 python做矩阵运算_python_27


一个矩阵 A 乘以一个单位矩阵,还是它本身。

python 矩阵与运算 python做矩阵运算_二维数组_28

三、python 矩阵转置

A

python 矩阵与运算 python做矩阵运算_线性代数_29


我们使用属性 T 来得到矩阵 A 的转置矩阵

A.T

python 矩阵与运算 python做矩阵运算_二维数组_30


(A’)’=A

A.T.T

python 矩阵与运算 python做矩阵运算_二维数组_31

B

D

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_32


python 矩阵与运算 python做矩阵运算_python 矩阵与运算_33


(A±B)’=A’±B’

(B+D).T

B.T+D.T

python 矩阵与运算 python做矩阵运算_numpy_34


python 矩阵与运算 python做矩阵运算_线性代数_35


(KA)’=KA’

10*A.T

(10*A).T

python 矩阵与运算 python做矩阵运算_线性代数_36


python 矩阵与运算 python做矩阵运算_python_37


(A×B)’=B’×A’

np.dot(A.T,B.T)

np.dot(B.T,A.T)

python 矩阵与运算 python做矩阵运算_二维数组_38


python 矩阵与运算 python做矩阵运算_numpy_39

四、python 求方阵的迹

方阵的迹就是主对角元素之和,创建一个方阵

E=np.array([[1,2,3],[4,5,6],[7,8,9]])
E

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_40


用 trace 计算方阵的迹

np.trace(E)

python 矩阵与运算 python做矩阵运算_numpy_41


再创建一个方阵 F

F=E-2
F

python 矩阵与运算 python做矩阵运算_python_42


验证一下方阵的迹等于方阵的转置的迹

np.trace(E)

np.trace(E.T)

python 矩阵与运算 python做矩阵运算_python_43


python 矩阵与运算 python做矩阵运算_二维数组_44


验证一下方阵的和的迹等于方阵的迹的和

np.trace(E+F)

np.trace(E)+np.trace(F)

python 矩阵与运算 python做矩阵运算_python_45


python 矩阵与运算 python做矩阵运算_二维数组_46

五、python 方阵的行列式计算方法

如何计算方阵的行列式,用到的是 numpy 模块的 linalg.det 方法

创建两个行列式

python 矩阵与运算 python做矩阵运算_numpy_47

python 矩阵与运算 python做矩阵运算_numpy_48


使用 det 方法求得方阵 E 和方阵 F 的行列式

np.linalg.det(E)

np.linalg.det(F)

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_49

python 矩阵与运算 python做矩阵运算_numpy_50

C

np.linalg.det(C)

python 矩阵与运算 python做矩阵运算_numpy_51


python 矩阵与运算 python做矩阵运算_python_52

六、python 求逆矩阵 / 伴随矩阵

创建一个方阵。

A=np.array([[1,-2,1],[0,2,-1],[1,1,-2]])
A

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_53


使用 linalg.det 求得方阵的行列式。

A_abs=np.linalg.det(A)
A_abs

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_54


使用 linalg.inv 求得方阵 A 的逆矩阵

B=np.linalg.inv(A)
B

python 矩阵与运算 python做矩阵运算_线性代数_55


利用公式:

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_56

A_bansui=B*A_abs
A_bansui

python 矩阵与运算 python做矩阵运算_线性代数_57

七、python 解多元一次方程

将这个方程格式调整好,按照 x-y-z-常数项的顺序排列:

python 矩阵与运算 python做矩阵运算_线性代数_58


未知数的系数写下来,排列成一个矩阵 a

a=[[1,2,1],[2,-1,3],[3,1,2]]
a=np.array(a)
a

python 矩阵与运算 python做矩阵运算_numpy_59


常数项构成一个一维数组(向量)

b=[7,7,18]
b=np.array(b)
b

python 矩阵与运算 python做矩阵运算_线性代数_60


使用linalg.solve 方法解方程,参数 a 指的是系数矩阵,参数 b 指的是常数项矩阵

x=np.linalg.solve(a,b)
x

python 矩阵与运算 python做矩阵运算_线性代数_61


使用点乘的方法可以验证一下,系数乘以未知数可以得到常数项

np.dot(a,x)

python 矩阵与运算 python做矩阵运算_python 矩阵与运算_62

八、总结

通过本次联系了解了并且初步熟悉了python语言再矩阵运算和多元一次方程运算中的多种调用方法,为之后的编程打基础。