- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑以下示例代码 ( Repl.it ):
from sympy import *;
import time;
k = symbols('k', integer = True);
start = time.time();
s_a = float(summation((pow(-1,(k+1))/k) * (pow((4.0/5.0),(k+1))), (k,1,oo)));
print("Result: " + str(s_a) + ". Time to compute - " + str(time.time() - start) + " seconds")
N = 1000;
start = time.time();
s_b = float(summation((pow(-1,(k+1))/k) * (pow((4.0/5.0),(k+1))), (k,1,N)));
print("Result: " + str(s_b) + ". Time to compute: " + str(time.time() - start) + " seconds")
输出为:
Result: 0.470229331921695. Time to compute: 0.371837854385376 seconds
Result: 0.470229331921696. Time to compute: 1.1281118392944336 seconds
为什么在上面的示例中使用范围 1 到 ∞ 时的执行时间明显快于使用范围 1 到 1000 时的执行时间?
最佳答案
您想要计算的无限级数本质上是 mercator series或第一个polylogarithm 。SymPy 知道并使用该分析结果。如果替换 4.0/5.0
,您也可以看到这一点通过Rational(4,5)
并删除 float
转换,在这种情况下您将获得 -4*log(5)/5 + 4*log(9)/5
无限总和(可以简化为 4/5*log(9/5)
)。
相比之下,截断的序列没有分析结果(总和为 N
),这就是为什么 SymPy 必须实际对所有被加数进行数字相加,这需要更长的时间。
为了完整起见,需要注意的是,当您转换为float
时,需要对对数进行数值计算,这又happens through some truncated power series or similar ,但在这种情况下,求和发生在高度优化的编译代码中,而不是 Python 中。
关于python - 为什么在 sympy 中使用无穷大 (oo) 比提供整数上限更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44480545/
任何数字减去它本身应该是 0,对吗? 3 - 3 === 0 那为什么 Infinity - Infinity === NaN 因为 typeof Infinity 是 'number': 最佳答案
我有一个可能为零的数字。我除以那个数字所以我想测试它是否为零以防止 NaN 和无穷大。由于除法中的舍入误差,我是否仍可能创建 NaN/无穷大? double x; // might be zero d
我使用carrierwave 和mini_magick 上传图片。在开发中一切都很好,但在生产中它引发了 FloatDomainError (Infinity)当我尝试上传图片时。我在同一台服务器上托
我有一个递归函数,它从一组边生成路径列表。但是,有时由于图形的性质,它会进入循环并生成一个字典,其中在列表中包含无限循环符号 [...],例如: {('a', 'b'): [[1, 2, 8, 9,
我正在摆弄 JavaScript 中的按位运算符,我发现有一件事值得注意。 bitwise or operator返回1如果两个输入位之一是 1 作为输出位。这样做x | 0总是返回x ,因为| 0没
我检查二叉树是否是 BST 的解决方案如下: def is_BST(node): if node is None: return False stack = [(node, -floa
给定(Python3): >>> float('inf') == Decimal('inf') True >>> float('-inf') >> float('-inf') >> Decimal('
我正在尝试使用 scikit learn 拟合一个简单的机器学习模型。在这条线上: clf.fit(features, labels) 我得到一个熟悉的错误: Input contains NaN,
我有一个数据集,它是 2 个浮点类型数字的比率。有些值具有 inf 表示无穷大(除以零)的情况。如何使用 pd.qcut/pd.cut 和 inf 值? 我的数据可以访问 here . q = pd.
好的,我知道之前有人用一个有限的缩放示例问过这个问题 [-1, 1]间隔 [a, b] Different intervals for Gauss-Legendre quadrature in num
案例:我们有一个运行 bash 脚本的 docker 容器,该脚本需要永远“阻塞”(因为它为另一个容器公开了一个卷,但有时我们需要这样做还有其他原因)。 我当时认为这可以工作: exec sleep
我是一名优秀的程序员,十分优秀!