不变矩阵#

标准 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.

不可变矩阵类引用#

sympy.matrices.immutable.ImmutableMatrix[源代码]#

ImmutableDenseMatrix 的别名

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