gpt4 book ai didi

python - 系数分组 : coefficient equation from a longer expression

转载 作者:太空宇宙 更新时间:2023-11-04 10:35:43 26 4
gpt4 key购买 nike

我正在使用 sympy 生成矩阵的行列式:

from sympy import *

X1, Y1 = symbols ("X1 Y1")
x1, x2, x3, y1, y2, y3 = symbols ("x1 x2 x3 y1 y2 y3")
th12, th13 = symbols ("theta_{12} theta_{13}")

X2 = cos(th12)*X1-sin(th12)*Y1+x2-y1*cos(th12)-y1*sin(th12)
Y2 = sin(th12)*X1+cos(th12)*Y1+y2-x1*sin(th12)-y1*cos(th12)

X3 = cos(th13)*X1-sin(th13)*Y1+x3-y1*cos(th13)-y1*sin(th13)
Y3 = sin(th13)*X1+cos(th13)*Y1+y3-x1*sin(th13)-y1*cos(th13)

M=Matrix([[X1,Y1,1],[X2,Y2,1],[X3,Y3,1]])
Det=M.det()
print Det

如果您运行代码,您会注意到它生成了一个非常“长”的表达式。我想得到这样的表达:

X1**2 + Y1**2 + A*X1 + B*Y1 + C = 0(圆周方程)

所以我希望 Python 生成系数 A、B 和 C。基本上我想将所有共享 X1**2 的热量、所有共享 Y1**2 的热量等分组。

如果我为 x1、x2、x3、y1、y2、y3、th12、th13 插入数值,我可以获得所需形式的表达式,但我还想获得系数 A、B 和 C .

编辑:更正 Xi 和 Yi 公式,添加了更多信息。

最佳答案

collect是正确的工具:

上面链接的例子:

>>> collect(a*x**2 + b*x**2 + a*x - b*x + c, x)
c + x**2*(a + b) + x*(a - b)

在您的情况下(此处未对系数进行归一化):

col = collect(Det, [X1, Y1], evaluate=False)
A = col[X1]
B = col[Y1]
C = col[S.One]

使用 evaluate=False,您将获得包含因子的字典。否则,您将获得完整的表达式。

关于python - 系数分组 : coefficient equation from a longer expression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23443325/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com