「学习笔记」矩阵
矩阵
主要记录在 python 跟 sage 中关于矩阵的语法与相关函数, 实时更新中.
基环与数域
在 sage 中, 基环指的是创建某个数学对象(如矩阵、多项式、模)时, 该元素所属的那个底层代数世界, 他决定了这些元素能做的运算以及运算的规则.
数域是基环的一种, 基环的范围则要更广泛一些. 所有域都是环, 但环不一定是域.
当环满足:
- 乘法可交换(矩阵环不是域)
- 无零因子(不存在两个非零数相乘得到零)
- 非零元素都可逆
则此时, 环是域.
基本算术环
| 名称 | 描述 | 准确性 |
|---|---|---|
| ZZ | 整数环 | 准确 |
| 有理数域 | 准确 | |
| RR | 实数域 | 双精度浮点, 不准确 |
| CC | 复数域 | 双精度浮点, 不准确 |
| RDF/CDF | 快速版实数/复数环 | 不准确 |
ZZ 不允许除法
有限环与有限域
| 名称 | 描述 | 示例 |
|---|---|---|
| GF(\(p\)) | 包含 \(p\) 个元素的有限域(\(p\) 是质数) | matrix(GF(7), [[1, 2], [3, 4]]) |
| GF(\(p^n\)) | 包含 \(p^n\) 个元素的有限域 | K.<a> = GF(2^8) |
| Integers(\(n\)) | 模 \(n\) 的整数环(\(n\) 是合数时是环, 不是域) | matrix(Integers(6), [[1, 2], [3, 4]]) |
GF(\(p\)) 可以看做模 \(p\) 的有限域, 但 GF(\(p^n\)) 不可以看做模 \(p^n\) 的有限域, 因为模 \(p^n\) 的环含有零因子, 不是域, 不等价于 GF(\(p^n\)).
构造性环
- 多项式环
- 幂级数环
- 符号环
- P-adic 环
后面遇到了再做详细补充
matrix
创建矩阵
核心语法: matrix(基环, 行数, 列数, 数据), 但 sage 也提供了许多简写:
A = matrix([[1, 2], [3, 4]]) # 基环自动推断为 ZZ(整数环)
A = matrix(QQ, [[1, 2], [3, 4]]) # 有理数域上的矩阵
B = matrix(QQ, 2, 3, [1,2,3,4,5,6]) # 2行3列
C = matrix(QQ, '1 2 3; 4 5 6') # 分号分隔行
# 特殊矩阵快捷函数
I = identity_matrix(QQ, 3) # 单位矩阵
Z = zero_matrix(ZZ, 2, 3) # 零矩阵
D = diagonal_matrix([1, 2, 3]) # 对角矩阵
R = random_matrix(QQ, 3, density=0.5) # 随机矩阵(50%非零)
运算
基础运算
- 矩阵乘法:
* - 幂运算:
A ** 3 - 加法/减法/数乘:
+, -, *
核心线性代数方法
- 转置:
.T,.transpose - 逆矩阵:
.inverse(),~A(仅当基环为域且可逆) - 行列式:
.det() - 秩:
.rank() - 迹:
.trace() - 特征值:
.eigenvalues()
解线性方程组
.solve_right 解方程 \(A \cdot X = B\), \(X\) 是未知矩阵(matrix)或向量(vector)
如果只有一个方程组要解, \(B\) 可以用 vector, 如果是多个方程组, 则 \(B\) 可以用 matrix.
增删改查
- 索引:
A[0, 1]取第 \(0\) 行第 \(1\) 列,A[0]取第 \(0\) 行. - 赋值:
A[0, 1] = 99 - 拼接:
-
- 横向:
A.augment(B)(把 \(B\) 拼在 \(A\) 右边)
- 横向:
-
- 纵向:
A.stack(B)(把 \(B\) 拼在 \(A\) 下边)
- 纵向:
- 换基环:
A.change_ring(QQ)
朝气蓬勃 后生可畏

浙公网安备 33010602011771号