SymPy学习笔记(七)矩阵
Matrix()
可以创建矩阵,参数是一个二维数组。如果传入了一维数组,默认会生成一个列向量。
与 SymPy 中的其他对象不同,Matrix
是可变的。这意味着它们可以就地修改。这样的缺点是 Matrix
不能用于需要不可变的地方,例如其他 SymPy 表达式内部或作为字典的键。要用不可变版本的 Matrix,可以使用 ImmutableMatrix
。
shape(M)
返回一个元组,描述了矩阵的形状。
.row(0)
可以得到第一行,.col(-1)
可以得到最后一列,负数下标倒序访问这一点和 Python 中的数组是一样的。
.col_del()
和``.row_del()可以删除行或列。
.row_insert和
.col_insert`可以插入行或列。
1 | >>> M.col_del(0) |
基本操作
+
*
**
,分别代表加法,乘法和乘方,矩阵求逆就是M**-1
M.T
返回矩阵的转置。
eye(n)
、ones(n, m)
、zeros(n, m)
分别可以用来创建单位矩阵、全1矩阵和零矩阵。
diag()
可以创建对角矩阵
1 | >>> diag(-1, ones(2, 2), Matrix([5, 7, 5])) |
其他操作
- 行列式:
.det()
- 转化为简化行阶梯矩阵:
.rref()
,返回一个元组,第一个元素是简化行阶梯矩阵,第二个元素是一个存放了阶梯头所在列的列标的元组。
- 子空间:
.nullspace()
零空间、.columnspace()
列空间、rowspace()
行空间。 .eigenvals()
特征值、.eigenvects()
特征向量、.charpoly(lamda)
特征多项式、.diagonalize()
对角化。
一个实例
矩阵是一个线性方程组的增广矩阵,问取多少的时候,该方程组有解?
输入以下代码,即可解出,当 或 时方程组有解。
1 | a, x1, x2, x3 = symbols('a x1 x2 x3') |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cyrus' Blog!
评论