Sympy中非方阵系数提取:如何获取(a+b)作为c的系数
解决Sympy中提取非方阵矩阵表达式系数的问题
首先修正代码中的错误:原代码里b的符号名误写为a,导致a和b指向同一个矩阵符号,需改为:
from sympy import MatrixSymbol, diff, Matrix, factor a = MatrixSymbol('a', 1, 4) b = MatrixSymbol('b', 1, 4) # 修正符号名 c = MatrixSymbol('c', 4, 1) expr = a*c + b*c
方法一:利用偏导数提取系数
由于expr是关于c元素的线性表达式,系数矩阵的每个元素对应expr对c对应元素的偏导数:
# 对c的每个元素求偏导,组成1x4的系数矩阵 c_coeff = Matrix([[diff(expr[0, 0], c[i, 0]) for i in range(4)]])
执行后c_coeff即为a + b,这是最可靠的方法,不受矩阵形状限制。
方法二:因式分解直接提取
如果Sympy支持矩阵乘法的因式分解,可通过factor方法直接拆分表达式:
factored_expr = factor(expr) c_coeff = factored_expr.args[0]
此方法依赖Sympy对矩阵符号运算的因式分解支持,适合简单的线性组合场景。
内容的提问来源于stack exchange,提问作者sanket1729
相关产品推荐
相关产品推荐

