Home > OS >  Sympy returns empty result
Sympy returns empty result

Time:05-12

I am attempting a very simple sympy example as following ;

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)

trying to get x in terms of y and z. Execution results in an empty list. What am I doing wrong ?

CodePudding user response:

Your equation doesn't have any solutions for x so solve returns an empty list. Here is your equation:

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

When you pass that to solve you are asking "for what values of x is this expression equal to zero?". The exponential function exp(t) is nonzero for all possible complex numbers t. Since there are no finite values of x for which the given expression is zero solve returns an empty list meaning that there are no solutions:

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

If you make an equation that actually has solutions then solve can potentially find them for you:

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                  ⎦

CodePudding user response:

Let fx = Symbol('fx', real=True). You will get solve(exp(fx),fx) == [] because there is no real value of fx that can make exp(fx) zero. If there were such a value, say fx = 2 then you could try solve(fx - 2, x) to find the value for x...but if there is no value for fx there is no value you can find for x.

  • Related