如何根据另一个变量来表达方程组

How to express a system of equations in terms of another variable

我想用符号求解方程组,例如 A = ax + byB = cx + dyxy 在 sympy 上显式求解。

我尝试了 sympy 的解决函数作为 solve([A, B], [x, y]),但无法正常工作。它返回一个空列表,[].

如何使用 sympy 解决它?

这是我要求解的实际方程式:

from sympy import*
i,j,phi, p, e_phi, e_rho =     symbols(r'\hat{i} \hat{j} \phi \rho e_\phi     e_\rho')
e_rho = cos(phi)*i + sin(phi)*j
e_phi = -p*sin(phi)*i + p*cos(phi)*j
solve([e_rho,e_phi], [i,j])

我不知道您使用的是哪个版本的 SymPy,但我刚刚尝试了最新版本并得到了答案:

In [4]: from sympy import*
   ...: i,j,phi, p, e_phi, e_rho =     symbols(r'i j phi rho e_phi e_rho')
   ...: e_rho = cos(phi)*i + sin(phi)*j
   ...: e_phi = -p*sin(phi)*i + p*cos(phi)*j
   ...: solve([e_rho,e_phi], [i,j])
Out[4]: {i: 0, j: 0}

这是你方程式的正确答案(前提是 rho 不为零):

In [5]: e_rho
Out[5]: i⋅cos(φ) + j⋅sin(φ)

In [6]: e_phi
Out[6]: -i⋅ρ⋅sin(φ) + j⋅ρ⋅cos(φ)

如果您想要解决 e_rhoe_phi 等于非零的问题,那么您应该通过从表达式中减去它或使用 Eq:

In [2]: A, B = symbols('A, B')

In [3]: solve([Eq(e_rho, A), Eq(e_phi, B)], [i, j])
Out[3]: 
⎧         A⋅ρ⋅cos(φ)               B⋅sin(φ)                 A⋅ρ⋅sin(φ)               B⋅cos(φ)      ⎫
⎪i: ───────────────────── - ─────────────────────, j: ───────────────────── + ─────────────────────⎪
⎨        2           2           2           2             2           2           2           2   ⎬
⎪   ρ⋅sin (φ) + ρ⋅cos (φ)   ρ⋅sin (φ) + ρ⋅cos (φ)     ρ⋅sin (φ) + ρ⋅cos (φ)   ρ⋅sin (φ) + ρ⋅cos (φ)⎪
⎩                                                                                                  ⎭

In [4]: solve([Eq(e_rho, A), Eq(e_phi, B)], [i, j], simplify=True)
Out[4]: 
⎧              B⋅sin(φ)                B⋅cos(φ)⎫
⎨i: A⋅cos(φ) - ────────, j: A⋅sin(φ) + ────────⎬
⎩                 ρ                       ρ    ⎭

同样是正确答案(假设 rho != 0)。