线性代数Python计算:矩阵的转置、方阵的行列式和方阵的逆

在这里插入图片描述

1.矩阵的转置

numpy用来表示矩阵的2维数组的array对象的T属性,返回矩阵的转置。
例1 A = ( 2 0 1 1 3 2 ) \boldsymbol{A}=\begin{pmatrix}2&0&1\\1&3&2\end{pmatrix} A=(210312) B = ( 1 7 − 1 4 2 3 2 0 1 ) \boldsymbol{B}=\begin{pmatrix}1&7&-1\\4&2&3\\2&0&1\end{pmatrix} B= 142720131 ,在Python中验证 ( A B ) T = B T A T (\boldsymbol{AB})^{\text{T}}=\boldsymbol{B}^\text{T}\boldsymbol{A}^\text{T} (AB)T=BTAT

import numpy as np          #导入numpy
A=np.array([[2,0,-1],       #矩阵A
            [1,3,2]])
B=np.array([[1,7,-1],       #矩阵B
            [4,2,3],
            [2,0,1]])
print((np.matmul(A,B)).T)   #积的转置
print((np.matmul(B.T, A.T)))#转置的积

程序中第2~3行和第4~6行分别设置矩阵 A \boldsymbol{A} A B \boldsymbol{B} B。第7行调用numpy的函数matmal(A,B)计算积 A B \boldsymbol{AB} AB,然后访问其转置属性matmal(A,B).T输出 ( A B ) T (\boldsymbol{AB})^\text{T} (AB)T。第8行调用函数matmul(B.T,A.T)计算 B T A T \boldsymbol{B}^\text{T}\boldsymbol{A}^\text{T} BTAT。运行程序,输出

[[ 0 17]
 [14 13]
 [-3 10]]
[[ 0 17]
 [14 13]
 [-3 10]]

2. 方阵的行列式

numpy包中用于处理线性代数的linalg模块提供的det函数可用来计算方阵的行列式。
例2:在Python中验算矩阵 A = ( 3 1 − 1 2 − 5 1 3 − 4 2 0 1 − 1 1 − 5 3 − 3 ) \boldsymbol{A}=\begin{pmatrix}3&1&-1&2\\-5&1&3&-4\\2&0&1&-1\\1&-5&3&-3\end{pmatrix} A= 3521110513132413 的行列式 det ⁡ A \det\boldsymbol{A} detA

import numpy as np          #导入numpy
A=np.array([[3,1,-1,2],     #矩阵A
            [-5,1,3,-4],
            [2,0,1,-1],
            [1,-5,3,-3]])
print(np.linalg.det(A))     #A的行列式

运行程序,输出

40.0

det ⁡ ( 3 1 − 1 2 − 5 1 3 − 4 2 0 1 − 1 1 − 5 3 − 3 ) = 40 \det\begin{pmatrix}3&1&-1&2\\-5&1&3&-4\\2&0&1&-1\\1&-5&3&-3\end{pmatrix}=40 det 3521110513132413 =40

3. 方阵的逆阵

numpy.linalg的inv函数计算可逆方阵的逆矩阵。
例3 设矩阵 A = ( 1 2 3 2 2 1 3 4 3 ) \boldsymbol{A}=\begin{pmatrix}1&2&3\\2&2&1\\3&4&3\end{pmatrix} A= 123224313 ,计算逆矩阵 A − 1 \boldsymbol{A}^{-1} A1

import numpy as np                          #导入numpy
from utility import adjointMatrix           #导入adjointMatrix
from fractions import Fraction as F
np.set_printoptions(formatter={'all':lambda x:
                               str(F(x).limit_denominator())})
A=np.array([[1,2,3],                        #设置矩阵A
            [2,2,1],
            [3,4,3]])
print('%.1f'%np.linalg.det(A))              #输出A的行列式
print(np.linalg.inv(A))                     #输出A的逆阵

注意程序中的第8行,调用numpy.linalg的inv函数,计算A的逆矩阵。运行程序输出

2.0
[[  1   3 -2]
 [-3/2 -3 5/2]
 [  1   1 -1]]

由于 det ⁡ A = 2 \det\boldsymbol{A}=2 detA=2,故 A \boldsymbol{A} A可逆, A = ( 1 3 − 2 − 3 2 − 3 5 2 1 1 − 1 ) \boldsymbol{A}=\begin{pmatrix}1&3&-2\\-\frac{3}{2}&-3&\frac{5}{2}\\1&1&-1\end{pmatrix} A= 12313312251
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值