43python数据分析numpy基础之det计算矩阵的行列式
矩阵:矩形阵列,由相同类型元素按矩形网格排列组成的二维结构。矩阵有2个维度,行和列,m×n的矩阵有m行n列。
方阵:方形矩阵,行数和列数相等的矩阵。如果一个矩阵有n行和n列,则称为方阵。
n阶矩阵:一个具有n行和n列的方阵,即行和列相等都为n的矩阵。由n个向量组成,每个向量都有n个分量。
一个向量由一组有序的数值组成,这些数值称为该向量的分量。
行列式:一个n阶矩阵的行列式等于其任意行(或列)的元素与对应的代数余子式乘积之和。
余子式:一个n阶行列式中的元素a_ij所在的第i行和第j列划去后,留下来的n-1阶行列式叫做元素a_ij的余子式,记作M_ij。A_ij=
M_ij,叫做元素a_ij的代数余子式。
python的numpy库的linalg.det(a)函数,用于计算矩阵的行列式。
用法
numpy. linalg.det(a)
描述
numpy. linalg.det(a),返回n阶矩阵a的行列式,是一个标量。
入参
a:必选,数组、列表、元组;
1.1 入参a
numpy. linalg.det(a)的入参a为必选入参,必须为二阶及以上矩阵。
可以为列表、元组、数组。
>>> import numpy as np
# det(a)计算n阶矩阵a的行列式
# a为2阶列表
>>> np.linalg.det([[1,2],[8,9]])
-6.999999999999998
# a为2阶元组
>>> np.linalg.det(((1,2),(8,9)))
-6.999999999999998
# a为2阶数组
>>> np.linalg.det(np.array(((1,2),(8,9))))
-6.999999999999998
# a必须为2阶及以上矩阵
>>> np.linalg.det([1,2])
Traceback (most recent call last):File "<pyshell#7>", line 1, in <module>np.linalg.det([1,2])File "D:\python39\lib\site-packages\numpy\linalg\linalg.py", line 2176, in det_assert_stacked_2d(a)File "D:\python39\lib\site-packages\numpy\linalg\linalg.py", line 206, in _assert_stacked_2draise LinAlgError('%d-dimensional array given. Array must be '
numpy.linalg.LinAlgError: 1-dimensional array given. Array must be at least two-dimensional
>>> np.linalg.det([[1,2,3],[4,5,6]])
Traceback (most recent call last):File "<pyshell#8>", line 1, in <module>np.linalg.det([[1,2,3],[4,5,6]])File "D:\python39\lib\site-packages\numpy\linalg\linalg.py", line 2177, in det_assert_stacked_square(a)File "D:\python39\lib\site-packages\numpy\linalg\linalg.py", line 213, in _assert_stacked_squareraise LinAlgError('Last 2 dimensions of the array must be square')
numpy.linalg.LinAlgError: Last 2 dimensions of the array must be square
1.2 二阶三阶行列式
对于二阶矩阵 A = [[a, b], [c, d]],其行列式计算公式为 |A| = ad - bc。
三阶矩阵:对于一个三阶矩阵 A = [[a, b, c], [d, e, f], [g, h, i]],其行列式计算公式为 |A| = aei + bfg + cdh - ceg - bdi - afh。
>>> import numpy as np
#二阶矩阵 A = [[a, b], [c, d]],其行列式计算公式为 |A| = ad - bc
>>> np.linalg.det(np.arange(6,10).reshape(2,2))
-1.9999999999999998
# 三阶矩阵 A = [[a, b, c], [d, e, f], [g, h, i]],其行列式计算公式为 |A| = aei + bfg + cdh - ceg - bdi - afh。
>>> np.linalg.det(np.arange(6,15).reshape(3,3))
0.0