sympy.solve 仅根据某些符号求解

问题描述 投票:0回答:1

我正在尝试使用 ansatz 求解一个方程,该方程具有许多具有不同系数的独立项。 Sympy 试图根据独立项而不仅仅是系数来找到答案,我觉得我错过了一些东西,但已经尝试了我能想到的一切/谷歌。

为了展示一个最小的问题,我有以下示例:

from sympy import *
x,y,z= symbols('x y z')
a1, a2, a3 = symbols('a1 a2 a3')
expr = a1*x + a2*y + a3*z + y
solve(expr,[a1,a2,a3])

结果是:

a1 = -a3 z/x; a2 = -1

我想要的是:

 a1 = 0; a2 = -1; a3 = 0.

我觉得我错过了一些东西,或者这对于 sympy.solve 或其他简单函数来说显然是不可能的。我可以考虑编写自己的求解器来解决问题,但如果有一个“简单”的解决方案,那就更好了。

python sympy symbols
1个回答
0
投票

x,y,z
的系数必须为零才能使总和为零(如您所述),因此可以表示为:

from sympy import *
v=x,y,z= symbols('x y z')
a1, a2, a3 = symbols('a1 a2 a3')
expr = a1*x + a2*y + a3*z + y
expanded = expr.expand()
coeffs = [expanded.coeff(vi) for vi in v]
>>> solve(coeffs,[a1,a2,a3])
{a1: 0, a2: -1, a3: 0}
© www.soinside.com 2019 - 2024. All rights reserved.