我正在木星笔记本中探索交互功能(ipywidget . interaction),我想知道是否有一种方法可以让幻灯片‘走向’无限,也就是说,我没有特别指定最大值或最小值。 例如功能:
def func(x):
return 1/x
当我运行
interact(func, x = (1,10,0.1))
有没有一种方法可以让滑块“趋于无穷”,并显示极限是0? 问题来源StackOverflow 地址:/questions/59381017/representing-infinity-with-python-and-ipython-widgets
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在IPython widgets(ipywidgets)中,直接设置滑块的范围为“无限”是不可能的,因为滑块组件需要具体的最小值和最大值来确定其范围。但是,你可以通过一些技巧来模拟“趋向于无穷”的效果。
一种方法是使用对数或者指数变换来扩展滑块的有效范围,使得用户可以在较大数值范围内进行交互,同时也能观察到接近零的效果。例如,你可以修改你的函数以处理对数尺度上的输入,并相应地调整滑块的范围:
import ipywidgets as widgets
from IPython.display import display
def func(x_log10):
x = 10**x_log10
return 1/x
slider = widgets.FloatSlider(min=-20, max=20, step=0.1, description='x (log10 scale)')
display(slider)
out = widgets.interactive_output(func, {'x_log10': slider})
display(out)
在这个例子中,我们不是直接操作x
,而是操作x
的对数(即x_log10
),这样滑块的范围可以从-20到20,覆盖了从10^-20到10^20的宽广数值范围。当用户将滑块向左滑动至更小的负数时,实际上是在观察越来越接近零的结果(因为1/10^-n会非常大)。虽然这并不是严格意义上的“无限”,但它提供了一种有效的方法让用户探索接近极限的行为。
请注意,这种方法在显示上可能不会直接标示出“极限为0”,但用户可以通过观察输出结果了解到随着输入值减小,结果是如何增大的。