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

如何提取SymPy矩阵中指定变量的系数并生成系数矩阵?

在SymPy中提取矩阵变量的系数矩阵(类似Mathematica的CoefficientArrays)

要提取eqs矩阵中变量{r11,r12,r21,r22}的系数矩阵,SymPy提供了linear_eq_to_matrix函数,可实现类似MathematicaCoefficientArrays的功能。具体实现如下:

完整代码

import sympy as sp

# 定义符号变量与基础矩阵
r11,r12,r21,r22,rx,ry,k,s,dt,omega,gamma = sp.symbols('r11,r12,r21,r22,rx,ry,k,s,dt,omega,gamma')
Ad = sp.Matrix([[0,1],[0,0]])
Aa = sp.Matrix([[0,0],[1,0]])
H0 = omega * sp.Matrix([[1,0],[0,0]])
rho = sp.Matrix([[r11,r12],[r21,r22]])
sx = sp.Matrix([[0,1],[1,0]])

# 生成目标方程矩阵eqs
eqs = sp.simplify(
    (dt*(-1j*(H0*rho - rho*H0) + k*sp.exp(-s)*Aa*rho*Ad - k/2*(Ad*Aa*rho + rho*Ad*Aa)) 
     - gamma*(sx*(sx*rho - rho*sx) - (sx*rho - rho*sx)*sx)*dt)/dt
)

# 提取系数矩阵
target_vars = [r11, r12, r21, r22]
# 将2x2的eqs转换为4x1的一维向量(行优先)
eq_vector = sp.Matrix(eqs.reshape(4, 1))
# 转换为Ax = b形式,获取系数矩阵A和常数项b
coeff_matrix, const_term = sp.linear_eq_to_matrix(eq_vector, target_vars)

# 打印结果
print("系数矩阵:")
sp.pprint(coeff_matrix)
print("\n常数项向量:")
sp.pprint(const_term)

关键说明

  • linear_eq_to_matrix会自动解析每个方程中目标变量的系数,生成对应的系数矩阵:矩阵每一行对应eq_vector中的一个元素(即原eqs矩阵的每个元素),每一列对应一个目标变量的系数。
  • 先将eqs从2x2矩阵reshape为4x1向量,是为了适配线性方程组的标准形式,确保每个矩阵元素都作为独立方程处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:22:02