Why is the absolute value of a complex number a floating point number?

时间:2018-03-09 19:13:12

标签: python math absolute-value

In python3:

>>> abs(-5) == 5

and

>>> abs(5) == 5

but

>> abs(5+0j) == 5.0

4 个答案:

答案 0 :(得分:7)

The absolute value of a complex number a+bj, is defined as the distance between the origin (0,0) and the point (a,b) in the complex plane. In other words, it's sqrt(a2 + b2).

答案 1 :(得分:3)

Because the absolute value of a complex number is the distance from origin to the number on the complex plane (where the two components of the complex number form the coordinates).

The imaginary i and real r components of a complex number can be seen as coordinates on a plane, and you can calculate the distance from the origin ((0, 0)) by using Pythagorean distance formula, sqrt(i**2 + r**2).

The distance can be expressed as a floating point (real) number, there is no imaginary component.

It also can’t be an integer, because the Pythagorean distance is not always a convenient whole number (unlike the absolute value of an integer, which can only ever be another integer).

答案 2 :(得分:3)

假设您知道复数的范数的定义,那么您的问题就变成:abs(5j)为什么5.0返回5而不是int,即使您提供了{{1}作为虚构的组件?

答案是类型一致性。由于abs为复数返回float,因此没有理由提出特殊情况,如果输出恰好是一个整数,则返回int

另请注意,相同的推理适用于您的虚数的组件,这些组件始终存储为float

z = 1 + 1j
z.real # 1.0
z.imag # 1.0

答案 3 :(得分:3)

我认为真正的问题是“为什么Python' abs返回整数参数的整数值,而复数值的浮点值则返回普通整数值。”

关于abs的论证和结果类型,有三个主要案例:

  • 参数是整数⇒结果是整数;所以可以说abs(-5)返回一个整数(5)。
  • 参数是真实的(浮点)⇒结果是真实的;所以abs(5.1)返回一个浮点数(5.1)。
  • 参数很复杂⇒结果是浮点数,但是它是否具有精确整数值的决定取决于参数的实部/虚部的值。

在最后一种情况下的这个决定远非微不足道: abs(5 + 0i)有一个整数值,所以有 abs(3 + 4i)(毕达哥拉斯)但 abs(5 + 2i)没有。换句话说,创建一个整数复合体是没有意义的。输入并为其提供abs实施;在大多数情况下,结果不是整数。

因此,不将整数/实数区分扩展到复数字段是非常明智的。 (它可以用于添加,但实际效益将接近于零。)