如何使用sympy代数求解一个双边方程

问题描述

我想用sympy来解决他关于x,g和w的等式。

enter image description here

这就是我认为应该编写的代码

from sympy import *

w,a,x,g = symbols('w a x,g',real=True)
lhs = 1/g*(w-a)**g
rhs = 1/(2*g)*(w-x)**g + 1/(2*g)*(w+x)**g
solve((lhs,rhs),(x,g,w))

但是,这似乎是在试图求解数值答案。

解决方法

好吧,您需要了解Sympy的局限性。它可能无法解决这类方程式。就两面而言,通过解决rhs - lhs = 0使其成为一面。

将方程式放入WolframAlpha并不能解决问题。因此,非常怀疑sympy会为您提供任何有用的信息。

https://www.wolframalpha.com/input/?i=1%2Fg*%28w-a%29%5Eg+%3D+1%2F%282*g%29*%28w-x%29%5Eg+%2B+1%2F%282*g%29*%28w%2Bx%29%5Eg

,

您可以使用Eq创建一个两边方程:

In [52]: Eq(lhs,rhs)                                                                                                                          
Out[52]: 
        g          g          g
(-a + w)    (w - x)    (w + x) 
───────── = ──────── + ────────
    g         2⋅g        2⋅g 

当您说要解决“关于x,g和w”时,我不确定我是否理解您的意思。您是说要解决a方面的问题吗?如果是这样,那么您只需要要求解决a

In [53]: solve(Eq(lhs,rhs),a)                                                                                                                
Out[53]: 
⎡     -1                          ⎤
⎢     ───    _____________________⎥
⎢      g  g ╱        g          g ⎥
⎣w - 2   ⋅╲╱  (w - x)  + (w + x)  ⎦