线性代数:矩阵知识点总结(jupyter)
线性代数:矩阵知识点总结(jupyter)
线性代数是数学的一个重要分支,广泛应用于科学和工程领域。矩阵作为线性代数的核心概念,是解决线性方程组、进行数据处理和分析的重要工具。本文将对矩阵的基本概念、计算方法、向量乘积、行列式、线性方程和向量空间等知识点进行系统总结,帮助读者更好地理解和掌握线性代数中的矩阵理论。
一、矩阵的定义以及与数组的区别
定义
矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合。矩阵是数组的特殊形式,通常用大写字母表示,如A、B、C等。矩阵中的元素用小写字母加下标表示,如aij表示矩阵A中第i行第j列的元素。
与数组的区别
- 矩阵中的元素只能是数字,而数组中的元素可以是字符或者字符串
- 矩阵是二维的,数组可以是一维的、多维的
- 矩阵显示时,元素之间无逗号;数组显示时,元素之间用逗号隔开
二、矩阵的计算
1. 矩阵的基本计算(加减乘法)
矩阵的加法和减法
两个矩阵的行数和列数必须相同。设A和B是两个同型矩阵,即A和B都有m行n列,那么A和B的和(差)也是一个m行n列的矩阵,记作A+B(A-B),其元素为对应元素的和(差)。
矩阵的乘法
矩阵的乘法要求前者的列数必须和后者的行数相同。设A是一个m×n矩阵,B是一个n×p矩阵,那么A和B的乘积是一个m×p矩阵,记作AB,其元素为:
$$(AB){ij} = \sum{k=1}^{n} a_{ik}b_{kj}$$
矩阵的除法
矩阵没有除法的概念,但可以使用逆矩阵来实现类似除法的操作。如果矩阵A可逆,那么A的逆矩阵记作A-1,满足AA-1 = A-1A = I,其中I是单位矩阵。
2. 更多计算方法
矩阵的转置
矩阵的转置是将矩阵的行和列互换。设A是一个m×n矩阵,那么A的转置是一个n×m矩阵,记作AT,其元素为:
$$(A^T){ij} = a{ji}$$
零矩阵
零矩阵是所有元素都为0的矩阵。零矩阵具有以下性质:
- A+0=A
- 0A=0
- A0=0
单位矩阵
单位矩阵是对角线上的所有元素都为1,而所有其他元素都为零的方阵,用I表示。单位矩阵具有以下性质:
- AI=IA=A
逆矩阵
如果矩阵A可逆,那么存在一个矩阵B,使得AB=BA=I,其中I是单位矩阵。矩阵B称为A的逆矩阵,记作A-1。
计算法则
矩阵的计算遵循以下法则:
- 结合律:(AB)C = A(BC)
- 分配律:A(B+C) = AB+AC
- 数乘结合律:k(AB) = (kA)B = A(kB)
三、向量乘积
标量积
标量积也叫点乘、内积,是两个向量之间的运算。设a和b是两个n维向量,那么a和b的标量积定义为:
$$a \cdot b = \sum_{i=1}^{n} a_i b_i$$
向量积
向量积也叫叉乘、外积,是两个向量之间的运算。设a和b是两个三维向量,那么a和b的向量积定义为:
$$a \times b = (a_2b_3 - a_3b_2, a_3b_1 - a_1b_3, a_1b_2 - a_2b_1)$$
向量积的结果是一个向量,其方向垂直于a和b所在的平面,大小等于a和b构成的平行四边形的面积。
四、行列式和代数余子式及矩阵的逆
行列式
行列式是方阵的一个标量值,记作det(A)或|A|。行列式的计算方法有多种,最常用的是行分解和列分解。行列式具有以下性质:
- 交换两行(列)的值,行列式的值变号
- 某一行(列)的倍加到另一行(列),行列式的值不变
- 某一行(列)的元素都乘以一个常数k,行列式的值也乘以k
代数余子式
代数余子式是行列式计算中的一个重要概念。设A是一个n阶方阵,aij是A中第i行第j列的元素,那么aij的代数余子式记作Aij,定义为:
$$A_{ij} = (-1)^{i+j}M_{ij}$$
其中Mij是A中去掉第i行第j列后剩余元素构成的(n-1)阶方阵的行列式。
矩阵的逆
矩阵的逆是矩阵除法的重要概念。如果矩阵A可逆,那么存在一个矩阵B,使得AB=BA=I,其中I是单位矩阵。矩阵B称为A的逆矩阵,记作A-1。矩阵的逆可以通过以下方法计算:
- 伴随矩阵法
- 初等变换法
- 克拉默法则
五、线性方程和向量空间
行最简矩阵
行最简矩阵是通过初等行变换将矩阵化简得到的最简形式。行最简矩阵具有以下性质:
- 非零行的第一个非零元素为1
- 每个非零行的第一个非零元素所在列的其他元素都为0
- 非零行在上,零行在下
行最简矩阵可以用于求解线性方程组的解。求行最简矩阵的方法有以下三种:
- 利用初等行变换化行最简就矩阵
- 利用矩阵乘法
- 利用公式
六、代码总结
以下是Python中一些常用的矩阵运算代码示例:
矩阵的乘法
import numpy as np
V = np.array([[1, 2], [3, 4]])
M = np.array([[5, 6], [7, 8]])
W = np.dot(V, M)
print(W)
矩阵的转置操作
import numpy as np
M = np.array([[1, 2], [3, 4]])
M_transpose = M.transpose()
print(M_transpose)
求行列式
import numpy as np
M_4 = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]])
det_M_4 = np.linalg.det(M_4)
print(det_M_4)
初等行变换
def row_times_number(matrix, row, number):
matrix[row] = matrix[row] * number
def add_row_to_row(matrix, add_row, to_row, by):
matrix[to_row] = matrix[to_row] + by * matrix[add_row]
def switch_row(matrix, row_a, row_b):
matrix[[row_a, row_b]] = matrix[[row_b, row_a]]
求行最简矩阵
from sympy import Matrix
import numpy as np
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
rref = Matrix(A).rref()[0].tolist()
print(rref)