python - 反幂律的lambdify积分解
问题描述
我正在使用 sympy 来评估 1/t^p 形式的积分,然后对表达式进行lambdify 来评估它。在 p=1 时计算,分辨率表达式应返回 ln(t),但会返回 ZeroDivisionError。我希望我需要围绕 p=1 扩展解决方案。这是必要的吗?如何解决这个问题?
>> expr = integrate(1/t**p,t)
>> expr
Out:
⎧ 1 - p
⎪t
⎪────── for p ≠ 1
⎨1 - p
⎪
⎪log(t) otherwise
⎩
>> lam_expr = lambdify((t,p),expr)
>> lam_expr(10,1)
Traceback (most recent call last):
File "<ipython-input-84-8763c416d5cb>", line 1, in <module>
lam_expr(10,1)
File "<lambdifygenerated-33>", line 2, in _lambdifygenerated
return (select([not_equal(p, 1),True], [t**(1 - p)/(1 - p),log(t)], default=nan))
ZeroDivisionError: division by zero
更新
使用 NumPy 数组时,尽管仍然发出警告,但我没有遇到错误
>> In: lam_expr(np.array([1,2,3,5]),1)
<lambdifygenerated-101>:2: RuntimeWarning: divide by zero encountered in true_divide
return (select([not_equal(p, 1),True], [t**(1 - p)/(1 - p),log(t)], default=nan))
>> Out: array([0. , 0.69314718, 1.09861229, 1.60943791])
这个问题的一个(坏)解决方案似乎是将所有输入转换为 NumPy 数组。
解决方案
推荐阅读
- windows - 为什么 D2D1CreateFactory 在程序集中发送错误消息
- sql - 标准 SQL - STRUCT 数组中的多行
- turfjs - 如何在 turf.js 中为 <1 公里的多边形创建 10x10 网格?
- python - 提示允许的函数输入
- javascript - 如何在 Javascript 中切换“表格数据单元格”?
- android - 如何在移动应用程序中设置 webview 和 Angular 代码之间的通信
- python - 如何强制 django 模型保存方法在自定义管理器方法中查找查询集?
- javascript - 如何对字典中的 Javascript 数组进行排序
- c# - 使用多个搜索键和值实现字典
- python - Pandas 平行坐标可视化