python - 给定参数值的 Lambdify/Evaluate
问题描述
假设我有一个符号变量(来自sympy
)定义为
z = r/p * (p-c)/(r-c)
更正式地,将其表示为z=z(p; c, r)
:c
和r
是我想要保持不变的参数,并且z
实际上是p
. 现在,我想对z=z(p)
, 的选定值求值c
,r
但我不想在我的sympy
环境中定义它们,因为我希望其他表达式仍然将它们视为一般和未知参数。
本质上,我正在寻找类似的东西
my_func = lambdify(p, z(p), parameters={'r': 2, 'c': 1})
my_func(2)
Out: 1
z
Out: r/p * (p-c)/(r-c)
我怎么能进行这样的数值评估?
解决方案
这可能会做你想要的:
def my_lambdify(x, y, parameters=None):
if parameters is not None:
try:
ys = y.subs(parameters)
except ValueError:
ys = y
else:
ys = y
return lambdify(x, ys)
my_func = my_lambdify(p , z, parameters={'r': 2, 'c': 3})
输出:
my_func(2)
1.0
z
r*(-c + p)/(p*(-c + r))
my_func = my_lambdify(p , z, parameters={'r': 'r0', 'c': 'c0'})
my_func(2)
r0*(-c0 + 2)/(-2*c0 + 2*r0)
推荐阅读
- php - 使用 Guzzle 执行批处理请求
- c - C Mingw“ld.exe:无法打开输出文件cipher.exe:权限被拒绝collect2.exe错误:ld返回1退出状态”
- azure - Azure 自动化访问 VM 与 DevOps Winrm 访问
- typescript - 指定值的类型而不指定对象的键类型
- neo4j - Neo4j中如何统计公共节点的数量 - 查询
- windows - 将 DNS 后缀添加到 Docker Windows 网络
- c# - 评论选择在 Visual Studio 社区 2019 中不起作用
- java - 在 Java 中创建一个 json 对象
- javascript - 无法在本机反应中使用地图渲染数组元素
- php - 我得到 Method Illuminate\Routing\Router::uniqueMiddleware 不存在。在我运行 php artisan 创建迁移表之后