使用python计算一个特殊的极限

新手上路,请多包涵

我想计算这个表达式:

 (1 + 1 / math.inf) ** math.inf,

应该评估为e。但是 Python 返回 1。这是为什么呢?

=====更新========

我想在这里做的是从用户的输入中推导出有效年利率,APR(年百分比率)。

 def get_EAR(APR, conversion_times_per_year = 1):
    return (1 + APR / conversion_times) ** conversion_times - 1

我希望这个表达式也适用于连续复利。是的,我知道我可以编写 if 语句来区分连续复合和正常情况(然后我可以直接使用常量 e ),但我更喜欢集成的方式。

原文由 Ryan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 733
2 个回答

默认情况下,限制的计算没有在 python 中实现,为此你可以使用 sympy

 from sympy import *

x= symbols('x')
r = limit((1+1/x)**x, x, oo)
print(r)

输出:

 E

原文由 eyllanesc 发布,翻译遵循 CC BY-SA 3.0 许可协议

因为您本质上是在执行两个单独的限制:

 lim x->infty ((lim y->infty (1 + 1/y))^x)

哪个 Python 正确计算为 1。

这是适当限制的穷人实现:

 def euler(x):
    return (1+1/x)**x

for i in range(10):
    print(euler(10**i))

2.0
2.5937424601000023
2.7048138294215285
2.7169239322355936
2.7181459268249255
2.7182682371922975
2.7182804690957534
2.7182816941320818
2.7182817983473577
2.7182820520115603

原文由 Paul Panzer 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题