对于使用Sympy的python中的大学项目,我需要在部分替换后评估2 var符号函数的输出,例如:


  f =(x-1)/ sqrt((x-10)^ 2 +(y-10)^ 2)/ x = 1 => f = 0


如果我使用1 var函数,则可以正常工作:

>>> from sympy import *
>>> x = symbols('x')
>>> F = 1-x
>>> F.evalf(subs={x: 1})
0.e-125


但是在2 var函数的情况下,subs似乎并没有执行替换权:

>>> from sympy import *
>>> x,y = symbols('x y')
>>> F = (x-1)/sqrt((x-10)**2+(y-10)**2)
>>> F.evalf(subs={x: 1})
(x - 1.0)*((x - 10.0)**2 + (y - 10.0)**2)**(-0.5)


我期望F = 0,因为x = 1

最佳答案

我不是sympy专家,但是当y的值使表达式非零时,我发现了一个反例:

>>> F.evalf(subs={x:1,y:float("nan")})
nan


ynan时,结果不为零。因此,不可能在不知道y值的情况下简化表达式(注意:即使结果也应该是nan,sympy也会很高兴地将F.evalf(subs={x:1,y:oo})评估为0)

关于python - Sympy Evalf不适用于2个变量表达式中的1个变量subs(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52744190/

10-11 19:14