支持可变大小矩阵的计算机代数系统
Computer Algebra Systems that support variable sized matrices
我熟悉 sympy、matlab 符号包、reduce,并尝试过其他一些计算机代数系统。然而,据我所知,none 他们似乎能够在可变大小的矩阵上进行代数运算——他们只能处理固定大小的矩阵。
是否有任何可以对可变大小矩阵进行代数计算的方法?我知道会有很多严重的情况,但我觉得有很多是可行的,仅仅是因为许多 simplifications/algebra 可以轻松地用 R^nxn 中的矩阵手工完成。
可以只使用其中许多中的非交流代数元素,因此涵盖了矩阵的加法和 Hadamard 乘积,这很有用,也是一个开始。然而,它涵盖了人们实际对矩阵所做的一小部分(例如,转置、求逆、特征值分解、在 R^nxm 中使用矩阵等)。是否存在更通用的软件?
SymPy 有一个 matrix expressions 模块可以执行此操作。示例:
>>> from sympy import MatrixSymbol, Matrix, symbols
>>> n, m = symbols('n m', integer=True)
>>> X = MatrixSymbol('X', n, m)
>>> Y = MatrixSymbol('Y', m, n)
>>> (X*Y).T
Y'*X'
矩阵表达式可以有符号大小(如 n
和 m
)或显式整数大小,在这种情况下,它们可以与显式矩阵组合。
还值得注意的是,我链接到的文档页面中没有记录很多内容,因此请查看 https://github.com/sympy/sympy/tree/master/sympy/matrices/expressions 以了解完整功能。
我熟悉 sympy、matlab 符号包、reduce,并尝试过其他一些计算机代数系统。然而,据我所知,none 他们似乎能够在可变大小的矩阵上进行代数运算——他们只能处理固定大小的矩阵。
是否有任何可以对可变大小矩阵进行代数计算的方法?我知道会有很多严重的情况,但我觉得有很多是可行的,仅仅是因为许多 simplifications/algebra 可以轻松地用 R^nxn 中的矩阵手工完成。
可以只使用其中许多中的非交流代数元素,因此涵盖了矩阵的加法和 Hadamard 乘积,这很有用,也是一个开始。然而,它涵盖了人们实际对矩阵所做的一小部分(例如,转置、求逆、特征值分解、在 R^nxm 中使用矩阵等)。是否存在更通用的软件?
SymPy 有一个 matrix expressions 模块可以执行此操作。示例:
>>> from sympy import MatrixSymbol, Matrix, symbols
>>> n, m = symbols('n m', integer=True)
>>> X = MatrixSymbol('X', n, m)
>>> Y = MatrixSymbol('Y', m, n)
>>> (X*Y).T
Y'*X'
矩阵表达式可以有符号大小(如 n
和 m
)或显式整数大小,在这种情况下,它们可以与显式矩阵组合。
还值得注意的是,我链接到的文档页面中没有记录很多内容,因此请查看 https://github.com/sympy/sympy/tree/master/sympy/matrices/expressions 以了解完整功能。