如何使用SymPy将符号矩阵分解为矩阵之和
分解SymPy符号矩阵为基矩阵乘积之和
这里提供一个通用方法,能把任意规模的SymPy符号矩阵分解为「元素×对应位置单位基矩阵」的项列表,也能直接得到求和形式:
import sympy as sp def decompose_matrix(M): rows, cols = M.shape terms = [] for i in range(rows): for j in range(cols): # 创建仅(i,j)位置为1的零矩阵 base_matrix = sp.Matrix.zeros(rows, cols) base_matrix[i, j] = 1 terms.append(M[i, j] * base_matrix) return terms # 测试示例 a, b, c, d = sp.symbols('a b c d') M = sp.Matrix([[a, b], [c, d]]) # 获取乘积项列表 decomposed_terms = decompose_matrix(M) print(decomposed_terms) # 输出:[a*Matrix([[1, 0], [0, 0]]), b*Matrix([[0, 1], [0, 0]]), c*Matrix([[0, 0], [1, 0]]), d*Matrix([[0, 0], [0, 1]])] # 验证求和结果等于原矩阵 print(sum(decomposed_terms) == M) # 输出 True
关键说明
- 这个函数不需要提前知道矩阵的具体元素或规模,完全通用
- 对于你实际使用的元素为复杂符号函数的矩阵,直接传入即可,逻辑完全适用
- 若需要求和形式,直接对返回的
decomposed_terms列表调用sum()函数
内容的提问来源于stack exchange,提问作者lzcostademoraes
相关产品推荐
相关产品推荐

