不变矩阵#
标准 Matrix
SymPy中的类是可变的。出于性能原因,这一点很重要,但这意味着标准矩阵不能与SymPy的其余部分很好地交互。这是因为 Basic
对象是不可变的,大多数sypy类都继承自该对象。
的使命 ImmutableDenseMatrix
类,别名为 ImmutableMatrix
简言之,就是在性能/可变性和安全性/不变性之间架起一座桥梁。不变矩阵几乎可以做正规矩阵所能做的一切,但它们继承自 Basic
因此可以更自然地与SymPy的其他部分互动。 ImmutableMatrix
也继承自 MatrixExpr
,允许它与SymPy的矩阵表达式模块自由交互。
你可以把任何类似矩阵的对象变成 ImmutableMatrix
通过调用构造函数
>>> from sympy import Matrix, ImmutableMatrix
>>> M = Matrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> M[1, 1] = 0
>>> IM = ImmutableMatrix(M)
>>> IM
Matrix([
[1, 2, 3],
[4, 0, 6],
[7, 8, 9]])
>>> IM[1, 1] = 5
Traceback (most recent call last):
...
TypeError: Can not set values in Immutable Matrix. Use Matrix instead.
不可变矩阵类引用#
- class sympy.matrices.immutable.ImmutableDenseMatrix(*args, **kwargs)[源代码]#
创建矩阵的不可变版本。
实例
>>> from sympy import eye, ImmutableMatrix >>> ImmutableMatrix(eye(3)) Matrix([ [1, 0, 0], [0, 1, 0], [0, 0, 1]]) >>> _[0, 0] = 42 Traceback (most recent call last): ... TypeError: Cannot set values of ImmutableDenseMatrix