当前位置: 首页 > 知识库问答 >
问题:

**(1/2)之间的差异,数学。sqrt和cmath。sqrt?

璩和璧
2023-03-14

x**(1/2)数学之间的区别是什么。sqrt()cmath。sqrt()

为什么cmath.sqrt()只获得二次权的复杂根?我应该把它专门用于我的平方根吗?他们在背景中有什么不同?

共有3个答案

夔学智
2023-03-14

作为对现有答案的补充,一个显著的区别是在处理负数时:

>>> 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函数。

司凡
2023-03-14

**.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数学和数学之间的区别。

阳狐若
2023-03-14

如果您分别查看cmath和math的文档,您会发现:

  1. cmath“提供对复数数学函数的访问”
  2. “数学”函数不能用于复数;如果需要支持复数,请使用cmath模块中相同名称的函数
  3. (**)运算符映射到pow函数,重要的区别是pow将其参数转换为float

因此,对于相同的参数,您可能会看到三个函数的不同结果,如下所示。请注意,如果表达式具有实解,则math返回的值之间不会有差异。sqrtcmath返回的值的实部。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会给你错误的结果?这一定有一些优势(外部性能)。 谁能用外行的话解释一下