如何用另一个变量来表示一个方程组



我想用符号解A = ax + byB = cx + dy等方程组,对xy在对偶上显式求解。

我尝试了sympy as的解函数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)。

最新更新