Почему комплексные числа в Python обозначаются как "j" вместо "i"?

Я знаю, что это соглашение об электротехнике, но мне все еще интересно, почему он был выбран для Python. Я не знаю других языков программирования с литералами сложного числа, поэтому мне нечего сравнивать, но кто-нибудь знает, кто использует i?

Ответ 1

Похоже, что, как вы догадались, Python следует за электротехнической конвенцией. Здесь происходит обмен с отладчиком ошибок Python Issue10562:

Boštjan Mejak. В Python буква "j" обозначает мнимую единицу. Было бы здорово, если бы мы следовали математике в этом отношении и обозначили бы мнимую единицу с помощью "i".

Майкл Фоор: Мы следуем инженерству, которое использует j.

(я собирался закрыть это как wontfix, но Антуан особенно увлечен тем, что Марк занимается этой проблемой...)

Марк Дикинсон. Просто добавьте свои собственные мысли: "j" для (а не) квадратного корня из -1 имеет, как указывает Майкл, историю использования в технике (особенно электрическую инженерии) и физике. Лично я бы предпочел "i" на "j" здесь, но теперь его изменение приведет к беспорядочному поломке (IMO). Это действительно не кажется достаточно большой проблемой, о которой стоит подумать.

...

Много позже:

Guido van Rossum. Это не будет исправлено. Во-первых, буква "i" или верхний регистр "я" слишком похожа на цифры. Пути номеров анализируются либо парсером языка (в исходном коде), либо встроенными функциями (int, float, complex) не должны быть локализуемыми или настраиваемыми каким-либо образом; которые просят огромные разочарования в будущем. Если вы хотите анализировать сложные числа с помощью "i" вместо "j", у вас уже есть много доступных решений.

Ответ 2

Python принял конвенцию, используемую инженерами-электриками. В этом поле i используется для представления тока и используется j как квадратный корень из -1.

Был зарегистрирован bug, чтобы изменить его на i в Python 3.3. Это было решено как "WONTFIX" с этими рассуждениями Guido van Rossum:

Это не будет исправлено. Во-первых, буква "i" или верхний регистр "Я" слишком похожи на цифры. Пути чисел анализируются либо анализатор языка (в исходном коде) или встроенные функции (int, float, complex) не должны быть локализуемыми или настраиваемыми в любых путь; которые просят огромные разочарования в будущем. Если ты хочешь для анализа сложных чисел с использованием "i" вместо "j", у вас есть много уже имеющиеся решения.

Ответ 3

Чтобы ответить "Кто-нибудь знает какие-либо [другие языки программирования с литералами сложного числа], которые используют i?"

Да, С++ со стандарта С++ 14. Вы должны использовать правильное пространство имен:

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

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

Ответ 4

j (не J) используется в электротехнике, как упоминалось ранее. i для тока: да, для тока используются как я (dc), так и я (ac).

Ответ 5

я в электротехнике обычно используется для я (t) или мгновенного тока. я для постоянного состояния (не сложного) или среднеквадратичного значения переменного тока. Кроме того, пространственные координаты обычно выражаются как i, j, k, но для двумерных элементов i, j - это все, что нужно, и "i" отбрасывается, поэтому используется перпендикулярное "j", как в 4j3 против 4 + 3i или 4i3. -See, что это не 413 с первого взгляда. J распознает эту запись в обработке комплексных чисел. Как ушедший в отставку EE prof- мне нравится использовать "j". Что касается плотности тока, то используется "J".