1
74
选项1:
|
2
22
SymPy根据你的目标,尽可能长时间地推迟平方根的计算可能是个好主意。 SymPy 可能会有所帮助。
一开始这似乎不是很有用。 但sympy可以提供比float或Decimals更多的信息:
此外,不损失精度。(2) 仍然是一个整数:
相比之下,浮点和小数将返回一个非常接近2但不等于2的数字:
Sympy也理解更复杂的例子,比如 the Gaussian integral :
最后,如果需要十进制表示,可以要求比需要的数字更多的数字:
|
3
15
NumPy
消极的
对于负实数,它将返回
当然,另一种选择是先转换为复数:
|
4
4
牛顿法计算平方根最简单、最准确的方法是牛顿法。
你有一个数字,你想计算它的平方根(
这条线使用这两个参数来计算更准确的估计。你可以通过
例如,我们需要找到30的平方根。我们知道结果在5到6之间。
数字是30,估计是5。每次递归调用的结果是:
最后一个结果是数字平方根的最精确计算。它与内置函数的值相同
这个答案是 originally posted 通过 gunesevitan ,但现在已被删除。 |
5
4
Python的
以下方法取正数
有关此操作的实现的详细信息,请参阅下面的参考资料。它还展示了如何实现具有上限和下限的其他操作(尽管显然至少有一个错误
或者,使用Python的
在前述内容中,
|
6
3
二进制搜索免责声明: 这是一个更专业的用例。这种方法可能不适用于所有情况。 优点:
我个人为一个加密CTF挑战(RSA立方体根攻击)实现了这个,在那里我需要一个精确的整数值。 一般的想法可以扩展到任何其他根。
编辑:正如@wjandrea也指出的,**这个示例代码不能计算**。这是一个副作用,因为它不会将任何内容转换为浮点值,所以不会丢失精度。如果根是一个整数,你会得到它。如果不是,你会得到一个最大的数,它的平方比你的数小。我更新了代码,这样它也会返回一个bool,指示值是否正确,还修复了导致它无限循环的问题(@wjandrea也指出了这一点)。这种通用方法的实现对于较小的数字仍然有点奇怪,但在10以上我没有问题。 克服这种方法/实施的问题和局限性:对于较小的数字,您可以使用其他答案中的所有其他方法。他们通常使用浮子 可以 是精度的损失,但对于小整数来说,这应该意味着根本没有问题。所有使用浮点数的方法都有相同(或几乎相同)的限制。 如果您仍然想使用此方法并获得浮点结果,那么将其转换为使用浮点也应该很简单。请注意,这将重新引入精度损失,这是该方法相对于其他方法的独特优势,在这种情况下,您也可以只使用任何其他答案。我认为牛顿方法的收敛速度更快,但我不确定。 对于较大的数字,浮点运算会导致精度损失,这种方法可以给出更接近实际答案的结果(取决于输入的大小)。如果你想处理这个范围内的非整数,你可以使用其他类型,例如这个方法中的固定精度数字。 编辑2,关于其他答案:目前,afaik,唯一一个对大数字具有类似或更好精度的答案是Eric Duminil提出的SymPy。该版本也更容易使用,适用于任何类型的数字,唯一的缺点是它需要SymPy。我的实现没有任何巨大的依赖性,如果这是您想要的。 |
7
3
任意精度平方根
此变体使用字符串操作将表示十进制浮点数的字符串转换为
输入字符串,
这个
测验
输出
对于少量数字,使用速度更快
这是一个 live version 在SageMathCell服务器上运行。 |
8
-3
求一个数字的平方根
输出:-
输出点击下方&请参阅
|
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |