如何在SymPy中展开矩阵表达式?强制展开平方项方法咨询
SymPy展开矩阵表达式平方的解决办法
直接用sym.expand()搞不定矩阵符号的平方展开?那是因为SymPy默认不会把多项式乘法的分配律套用到矩阵运算上。要强制展开,有两种简单方法:
方法一:给expand()加multinomial参数
在调用expand()时指定multinomial=True,显式让SymPy启用多项式展开规则:
import sympy as sym A = sym.MatrixSymbol('A', 5, 3) E = sym.MatrixSymbol('E', 5, 3) expr = (A*A.T + E*E.T)**2 expanded_expr = sym.expand(expr, multinomial=True) print(expanded_expr)
执行后会得到展开结果:A*A.T*A*A.T + A*A.T*E*E.T + E*E.T*A*A.T + E*E.T*E*E.T
方法二:用expand_mul()函数
把平方写成直接的乘积形式,再调用expand_mul()专门处理乘法展开:
import sympy as sym A = sym.MatrixSymbol('A', 5, 3) E = sym.MatrixSymbol('E', 5, 3) expanded_expr = sym.expand_mul((A*A.T + E*E.T)*(A*A.T + E*E.T))
这种方式也能得到完全展开的矩阵表达式。
内容的提问来源于stack exchange,提问作者Rastapopoulos
相关产品推荐
相关产品推荐

