为什么Python中的复数用'j'表示而不是'i'?

时间:2014-07-17 19:59:34

标签: python

我知道这是一个电气工程惯例,但我仍然想知道为什么选择Python。我不知道其他编程语言有复杂的文字,所以我没有什么可比较的,但有没有人知道任何使用我的?

5 个答案:

答案 0 :(得分:29)

正如您所猜测的那样,因为Python遵循电气工程惯例。这是来自Python错误跟踪器Issue10562的交换:

  

BoštjanMejak:在Python中,字母“j”表示虚构单位。如果我们在这方面遵循数学并且假想单位用'i'表示,那将是很好的。

     

Michael Foord :我们遵循使用j的工程。

     

(我即将关闭此作为wontfix,但Antoine特别热衷于Mark处理此问题...)

     

Mark Dickinson :只是添加我自己的想法:'j'代表 a (不是 )-1的平方根,正如迈克尔指出的那样,有工程(特别是电气工程)和物理学的应用历史。就个人而言,我本来希望'我'到'j',但现在更改它会导致(IMO)无端破损。对于值得大惊小怪而言,这似乎不是一个足够大的问题。

...

很久以后:

  

Guido van Rossum :这不会修复。首先,字母'i'或大写字母'I'看起来太像数字了。语言解析器(在源代码中)或内置函数(int,float,complex)解析数字的方式不应该是可本地化的或可以任何方式配置的;那是在路上要求巨大的失望。如果你想用'i'而不是'j'来解析复数,你已经有了很多解决方案。

答案 1 :(得分:12)

Python采用了电气工程师使用的惯例。在该字段中,i用于表示当前值,并使用j作为-1的平方根。

在Python 3.3中记录了bug将其更改为i。它被解析为" WONTFIX"通过Guido van Rossum的推理:

  

这不会被修复。一方面,这封信是“我'或大写   '我'看起来太像数字了。数字的解析方式是   语言解析器(源代码中)或内置函数   (int,float,complex)不应该是可本地化的或可配置的   办法;这会让人感到非常失望。如果你想   用' i'解析复数而不是' j',你有很多   已有解决方案。

答案 2 :(得分:5)

回答"有没有人知道任何[使用复数字文字的其他编程语言]使用i?"

是的,C ++自C ++ 14标准以来。您必须使用正确的命名空间:

#include <complex>
using namespace std::complex_literals;

std::complex<double> z = 2 + 3i;

答案 3 :(得分:0)

如前所述,

j(非J)用于电气工程。 i for current:是的,I(dc)和i(ac)都用于当前。

答案 4 :(得分:0)

电气工程中的i通常用于i(t)或瞬时电流。 I是稳态直流(非复数)或交流电流的均方根值。另外,空间坐标通常表示为i,j,k,但是对于二维项i,j都是必需的,并且删除了“ i”,因此像在4j3 vs 4 + 3i或4i3中使用垂直的“ j” -一目了然,这不是413。 J在处理复数时认识到这种表示法。作为退休的EE教授,我确实喜欢使用“ j”。至于电流密度则使用“ J”。