Sympy returns 空结果

Sympy returns empty result

我正在尝试一个非常简单的 sympy 示例,如下所示;

from sympy import *
x,y,z = symbols('x,y,z', real=True)
expr = 256 * exp(-Pow((x-(y/2)/(z/2)),2))
solve(expr,x)

试图根据 y 和 z 得到 x。执行结果为空列表。我做错了什么?

您的方程没有 x 的任何解,因此 solve returns 是一个空列表。这是你的等式:

In [2]: expr
Out[2]: 
             2
      ⎛    y⎞ 
     -⎜x - ─⎟ 
      ⎝    z⎠ 
256⋅ℯ  

当您将其传递给 solve 时,您是在询问“对于 x 的哪些值,此表达式等于零?”。指数函数 exp(t) 对于所有可能的复数 t 都是非零的。由于没有给定表达式为零的 x 的有限值 solve returns 空列表意味着没有解决方案:

In [3]: solve(expr, x)
Out[3]: []

如果您创建的方程实际上有解,那么 solve 可能会为您找到它们:

In [6]: eq = Eq(expr, 1)

In [7]: eq
Out[7]: 
             2    
      ⎛    y⎞     
     -⎜x - ─⎟     
      ⎝    z⎠     
256⋅ℯ          = 1

In [8]: solve(eq, x)
Out[8]: 
⎡y          ________  y          ________⎤
⎢─ - 2⋅√2⋅╲╱ log(2) , ─ + 2⋅√2⋅╲╱ log(2) ⎥
⎣z                    z                  ⎦

fx = Symbol('fx', real=True)。您将得到 solve(exp(fx),fx) == [],因为 fx 没有实际值可以使 exp(fx) 为零。如果有这样的值,比如 fx = 2 那么你可以尝试 solve(fx - 2, x) 来找到 x 的值...但是如果没有 fx 的值就没有您可以找到 x.

的值