python - Sympy evalf 不适用于 2 个变量表达式中的 1 个变量 subs()
问题描述
对于使用 Sympy 的 Python 大学项目,我需要在部分替换后评估 2 var 符号函数的输出,例如:
f = (x-1)/sqrt((x-10)^2+(y-10)^2) / x = 1 => f = 0
如果我使用 1 var func,它工作正常:
>>> 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
当y
为时nan
,结果不为零。所以不可能简化不知道值的表达式(注意:即使结果也应该是 nan,y
sympy 也很高兴地计算为 0)F.evalf(subs={x:1,y:oo})
推荐阅读
- vue.js - 使用 toLocaleString 和 vuetify 时 set 返回 Nan
- javascript - 使用一个函数来存储每个ajax调用数据
- python-3.x - 如何限制我的 python 脚本的带宽 usgae?
- azure - 使用 CDN 时,blob 存储帐户“冗余”是否重要?
- python - TypeError:cogs 必须从 Cog 派生
- python - pygame窗口不断崩溃
- mongodb - 在 Fedora 34 上安装 mongodb 5.0.2
- c# - 客户端无法通过身份获取 cookie
- javascript - 如何链接不同的反应页面?
- angular - Angular 11 AsyncValidator 不返回错误