Python矩阵基本运算

本文介绍了Python中使用numpy库进行矩阵的基本运算,包括矩阵的创建、加减法、乘法、转置、求迹、行列式计算、逆矩阵求解及多元一次方程的解决方法。通过实例展示了各种运算的实现,并验证了相关性质和定理。
摘要由CSDN通过智能技术生成

实验环境
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)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值