x**(1/2)
,数学之间的区别是什么。sqrt()
和cmath。sqrt()
?
为什么cmath.sqrt()
只获得二次权的复杂根?我应该把它专门用于我的平方根吗?他们在背景中有什么不同?
作为对现有答案的补充,一个显著的区别是在处理负数时:
>>> import math
>>> math.sqrt(-4)
Traceback (most recent call last):
File "<string>", line 301, in runcode
File "<interactive input>", line 1, in <module>
ValueError: math domain error
sqrt
功能仅适用于正值。
>>> (-4)**0.5
(1.2246467991473532e-16+2j)
在这种情况下,**
运算符能够返回一个复数(请注意实际部分应该为零的奇怪舍入错误)
import cmath
>>> cmath.sqrt(-4)
2j
cmath.sqrt
返回完美的复数值可能是因为,与*
相反,sqrt
是一个专门的平方根计算,而不仅仅是一个浮动的pow
函数。
**.5和数学。sqrt将几乎相同。
**.5将把你从标准C库分派到powpowhttps://hg.python.org/cpython/file/661195a92131/Objects/floatobject.c#l783math.sqrt将把你分派到标准C库sqrt中的sqrt,两者应该具有相似的性能。更大的差异可能是由两者之间的差异造成的
from math import sqrt
sqrt(x)
vs
import math
math.sqrt(x)
只是因为在数学模块中查找sqrt
。
CMAS是不同的,会慢一些。它是关于复数的数学,这就是为什么它返回复数。请注意,与cPickle和泡菜之类的包不同的是,c数学和数学之间的区别。
如果您分别查看cmath和math的文档,您会发现:
(**)
运算符映射到pow
函数,重要的区别是pow
将其参数转换为float
因此,对于相同的参数,您可能会看到三个函数的不同结果,如下所示。请注意,如果表达式具有实解,则math返回的值之间不会有差异。sqrt
和cmath返回的值的实部。sqrt
。但是,您将在数学中得到一个错误。sqrt
如果没有真正的解决方案可用。
编辑:正如@jermenkoo所指出的,由于/
操作符的工作方式不同,Python 2和3之间由(**)
返回的值会有所不同。但是,如果直接使用0.5而不是1/2,则不会导致问题。
问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。
在中,有些操作以的形式返回,但有些操作返回。这将使矩阵乘法更加繁琐,因为需要显式
在python中解决我使用https://www.spoj.com/problems/APM问题 此代码被拒绝, 但对于这一点: 接受,我的问题是为什么int((n1)/2)给出不同的ans,那么(n1)//2在大数n时
我编写了一个简单的脚本,它接受任意数量的参数来演示< code>$@和< code>$*之间的区别: 在我做的 CLI 上 这就是打印出来的 因为它们是相同的,这是否意味着等于?还是我遗漏了一点?
本文向大家介绍成本差异和进度差异之间的差异,包括了成本差异和进度差异之间的差异的使用技巧和注意事项,需要的朋友参考一下 对于任何应用程序或专门用于任何项目,最关注的因素之一是在开发前和开发后阶段的预算管理和时间管理。因此,要评估任何项目的这两个主要因素,有很多方法,其中成本差异和进度差异是两个重要且主要的方法。 顾名思义,“成本差异”基于项目开发中花费的成本,而“进度差异”则基于相同开发中花费的时
我正在实现一个表,该表有一个数据类型为的列,我正在尝试了解使用什么索引更好? GIN还是GiST? 在这里查看postgres文档时,我似乎了解到: > GiST更新和建立索引的速度更快,但不如gin准确。 GIN更新和构建索引的速度较慢,但更准确。 好吧,那么为什么会有人想要一个gist索引字段而不是杜松子酒呢?如果gist会给你错误的结果?这一定有一些优势(外部性能)。 谁能用外行的话解释一下