Системы компьютерной алгебры, которые поддерживают матрицы переменного размера
Я знаком с sympy, символьным пакетом Matlab, Reduce и пробовал несколько других систем компьютерной алгебры. Однако, насколько я могу судить, ни один из них, похоже, не способен выполнять алгебру на матрицах переменного размера - они могут работать только с матрицами фиксированного размера.
Есть ли что-нибудь, что может сделать алгебру для матриц переменного размера? Я понимаю, что было бы довольно много грубых случаев, но я чувствую, что есть значительное количество, которое выполнимо просто из-за простоты многих упрощений / алгебры, которые можно сделать вручную с помощью матриц в R^nxn.
Можно просто работать с некоммуникативными алгебраическими элементами во многих из них, и таким образом это охватывает сложение и произведение Адамара с матрицами, что полезно и является началом. Однако он охватывает очень небольшую часть того, что на самом деле делает с матрицами (скажем, транспонирование, инверсия, разложение по собственным значениям, использование матриц в R^nxm и т. Д.). Существует ли более общее программное обеспечение?
1 ответ
SymPy имеет модуль матричных выражений, который делает это. Пример:
>>> 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 для полной функциональности.