You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SymPy计算含符号矩阵乘法结果不符,如何修正?

SymPy符号分块矩阵乘法未展开的解决方法

你的代码中,SymPy的BlockMatrix默认会延迟执行分块运算,直接相乘后只会保留乘法表达式结构,不会自动展开计算分块矩阵的乘积结果。

修正方法

对乘积结果调用doit()方法,触发分块矩阵的实际运算:

import sympy as sp

p = sp.symbols('p')
I_p = sp.Identity(p)
C = sp.BlockMatrix([[I_p, I_p], [I_p, -I_p]])
Sigma_1 = sp.MatrixSymbol('Sigma_1', p, p)
Sigma_2 = sp.MatrixSymbol('Sigma_2', p, p)
Sigma = sp.BlockMatrix([[Sigma_1, Sigma_2], [Sigma_2, Sigma_1]])

# 调用doit()执行分块乘法运算
C_Sigma_C_transpose = (C * Sigma * C.T).doit()

print(C_Sigma_C_transpose)

运行结果

执行后会得到展开后的分块矩阵:

BlockMatrix([
[2*Sigma_1 + 2*Sigma_2,        0],
[       0, 2*Sigma_1 - 2*Sigma_2]])

内容的提问来源于stack exchange,提问作者John Stone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:05:08