如何提取特定变量的所有系数

How to extract all coefficients for a particular variable

提问人:Никита Петров 提问时间:8/25/2023 更新时间:8/25/2023 访问量:36

问:

我在sympy中做了一些计算,结果如下:(我使用[expr].coeff(u1)方法)

X1*X2*(u1 - u2 + u3 - u4)/(4*a*b) + X1*(-u1 + u2 + u3 - u4)/(4*a) + X2*(-u1 - u2 + u3 + u4)/(4*b) + u1/4 + u2/4 + u3/4 + u4/4

我需要提取变量 u1 的所有系数(例如),它应该看起来像这样:

X1*X2/(4*a*b) + -X1/(4*a) + -X2/(4*b) + 1/4

但是sympy是这样做的:

1/4

在较小的尺度上 - 我需要 u1 的系数

(-u1 + u2 + u3 - u4)/(4*a)

应该看起来像这样:

-1/(4*a)

但我弄错了:

0

代码示例如下:

import sympy as sp
import numpy as np

a0, a1, a2, a3, X1, X2, a, b = sp.symbols('a0 a1 a2 a3 X1 X2 a b')
u1, u2, u3, u4 = sp.symbols('u1 u2 u3 u4')
Disp = a0 + a1*X1 + a2*X2 + a3*X1*X2

Eq1 = Disp.subs({X1: -a, X2: -b})
Eq2 = Disp.subs({X1: a, X2: -b})
Eq3 = Disp.subs({X1: a, X2: b})
Eq4 = Disp.subs({X1: -a, X2: b})

sol = sp.solve([Eq1 - u1, Eq2 - u2, Eq3 - u3, Eq4 - u4]
               , [a0, a1, a2, a3], dict=True)
a0, a1, a2, a3 = sol[0][a0], sol[0][a1], sol[0][a2], sol[0][a3]
Disp1 = a0 + a1*X1 + a2*X2 + a3*X1*X2
# print(Disp1)
N1 = Disp1.as_expr()
N2 = Disp1.coeff(u2)
print(N2)
Python sympy 方程

评论

0赞 Hoodlum 8/25/2023
这回答了你的问题吗?在sympy中获取复数表达式的系数

答:

0赞 Никита Петров 8/25/2023 #1

我只是用来获取:sympy.expand(expr).coeff(u1)

X1*X2/(4*a*b) - X1/(4*a) - X2/(4*b) + 1/4

从那里:

X1*X2*(u1 - u2 + u3 - u4)/(4*a*b) + X1*(-u1 + u2 + u3 - u4)/(4*a) + X2*(-u1 - u2 + u3 + u4)/(4*b) + u1/4 + u2/4 + u3/4 + u4/4