Как программист, как бы вы объяснили мнимые числа? - PullRequest
16 голосов
/ 23 февраля 2009

Как программист, я думаю, что моя работа в том, чтобы хорошо разбираться в математике, но у меня возникают проблемы с умозаключением воображаемых чисел. Я безуспешно пробовал Google и wikipedia , поэтому я надеюсь, что программист может объяснить мне, привести пример числа в квадрате <= 0, пример использования и т. Д. *

Ответы [ 13 ]

23 голосов
/ 23 февраля 2009

Полагаю, это запись в блоге - одно хорошее объяснение:

Ключевое слово: вращение (в отличие от направление для отрицательных чисел, которые столь же странны, как и воображаемые числа, когда вы о них думаете: меньше чем ничего ?)

alt text

Как отрицательные числа, моделирующие переворачивание, воображаемые числа могут моделировать все, что вращается между двумя измерениями «X» и «Y» . Или что-нибудь с циклическими, круговыми отношениями

21 голосов
/ 23 февраля 2009

Проблема: я не только программист, но и математик. Решение: все равно пахать вперед.

Нет ничего по-настоящему волшебного в комплексных числах. Идея, стоящая за их созданием, заключается в том, что с действительными числами что-то не так. Если у вас есть уравнение x ^ 2 + 4, оно никогда не будет равно нулю, тогда как x ^ 2 - 2 равно нулю дважды. Таким образом, математики очень разозлились и хотели, чтобы всегда были нули с полиномами степени по крайней мере один (хотел "алгебраически замкнутое" поле), и создали произвольное число j, такое что j = sqrt (-1). Все правила как бы становятся оттуда (хотя они более точно реорганизованы по-разному - в частности, вы формально не можете сказать «эй, это число - квадратный корень из отрицательного»). Если есть это число j, вы можете получить кратные j. И вы можете добавить реальные числа к j, так что у вас есть комплексные числа. Операции с комплексными числами аналогичны операциям с биномами (намеренно).

Реальная проблема с комплексами не во всем этом, а в том, что вы не можете определить систему, в которой вы можете получить обычные правила для меньших и больших. Так что на самом деле, вы попадаете туда, где вы вообще не определяете это. Это не имеет смысла в двумерном пространстве. Поэтому, честно говоря, я не могу на самом деле ответить «дайте мне пример числа в квадрате со значением <= 0», хотя «j» имеет смысл, если вы рассматриваете его квадрат как действительное число вместо комплексного числа. </p>

Что касается использования, я лично использовал его чаще всего при работе с фракталами. Идея, лежащая в основе фрактала Мандельброта, заключается в том, что это способ построения графика z = z ^ 2 + c и его расходимости вдоль вещественно-мнимых осей.

9 голосов
/ 23 февраля 2009

Вы также можете спросить, почему существуют отрицательные числа? Они существуют, потому что вы хотите представить решения некоторых уравнений, например: x + 5 = 0. То же самое относится и к мнимым числам, вы хотите компактно представить решения уравнений вида: x ^ 2 + 1 = 0.

Вот один из способов, которым я видел их на практике. В EE вы часто имеете дело с функциями, которые являются синусоидальными или могут быть разложены на синусоидальные. (См. Например ряд Фурье ).

Поэтому вы часто будете видеть решения уравнений вида:

f (t) = A * cos (wt)

Кроме того, часто вы хотите представить функции, сдвинутые на какую-то фазу из этой функции. Сдвиг фазы на 90 градусов даст вам функцию греха.

г (т) = B * sin (мас.)

Вы можете получить любой произвольный фазовый сдвиг, комбинируя эти две функции (называемые синфазной и квадратурной составляющими). ​​

ч (т) = A соз (вес) + i B * грех (вес)

Ключевым моментом здесь является то, что в линейной системе: если f (t) и g (t) решают уравнение, h (t) также решает то же самое уравнение. Итак, теперь у нас есть общее решение уравнения h (t).

Приятной особенностью h (t) является то, что он может быть записан компактно как

ч (т) = Cexp (вес + тета)

Используя тот факт, что exp (iw) = cos (w) + i * sin (w).

В этом нет ничего необычайно глубокого. Это просто использование математического тождества для компактного представления общего решения широкого спектра уравнений.

2 голосов
/ 19 мая 2012

Если вопрос таков: существуют ли мнимые числа? или "Как существуют мнимые числа?" тогда это не вопрос для программиста. Это может быть даже не вопрос для математика, а скорее метафизик или философ математики, хотя математик может чувствовать необходимость обосновать свое существование в этой области. Полезно начать с обсуждения того, как вообще существуют числа (довольно много математиков, которые подошли к этому вопросу, являются платониками, к вашему сведению). Некоторые настаивают на том, что воображаемые числа (как это делал ранний Уайтхед) - это практическое удобство. Но тогда, если мнимые числа являются просто практическим удобством, что это говорит о математике? Вы не можете просто объяснить мнимые числа как простой практический инструмент или пару действительных чисел без необходимости учитывать обе пары и общие последствия их «практичности». Другие настаивают на существовании мнимых чисел, утверждая, что их несуществование подорвало бы физические теории, которые их интенсивно используют (QM по колено в сложных гильбертовых пространствах). Я считаю, что проблема выходит за рамки данного веб-сайта.

Если ваш вопрос гораздо более приземленный, например, как можно выразить мнимые числа в программном обеспечении, тогда ответ выше (пара действительных чисел вместе с определенными операциями над ними) таков.

2 голосов
/ 23 февраля 2009

Ну, для программиста:

class complex {
public:
  double real;
  double imaginary;

  complex(double a_real) : real(a_real), imaginary(0.0) { }
  complex(double a_real, double a_imaginary) : real(a_real), imaginary(a_imaginary) { }

  complex operator+(const complex &other) {
    return complex(
        real + other.real,
        imaginary + other.imaginary);
  }
  complex operator*(const complex &other) {
    return complex(
        real*other.real - imaginary*other.imaginary,
        real*other.imaginary + imaginary*other.real);
  }

  bool operator==(const complex &other) {
    return (real == other.real) && (imaginary == other.imaginary);
  }
};

Это в основном все, что есть. Комплексные числа - это просто пары действительных чисел, для которых определяются специальные перегрузки +, * и ==. И эти операции действительно просто получают определение , как это. Затем выясняется, что эти пары чисел с этими операциями хорошо сочетаются с остальной математикой, поэтому они получают специальное имя.

Они не столько числа, как в «подсчете», но больше как «можно манипулировать с помощью +, -, *, ... и не вызывать проблем при смешивании с« обычными »числами». Они важны, потому что они заполняют дыры, оставленные действительными числами, например, нет числа с квадратом -1. Теперь у вас есть complex(0, 1) * complex(0, 1) == -1.0, что является полезным обозначением, поскольку вам больше не нужно обрабатывать отрицательные числа специально в этих случаях. (И, как выясняется, в принципе все другие особые случаи больше не нужны, когда вы используете комплексные числа)

0 голосов
/ 12 марта 2015

В электротехнике импеданс Z индуктора равен jwL, где w = 2 * pi * f (частота) и j (sqrt (-1)) означает, что он ведет на 90 градусов, а для конденсатора Z = 1 / jwc = -j / wc, что составляет -90deg / wc, так что он отстает от простого резистора на 90 градусов.

0 голосов
/ 19 мая 2012

Я не хочу превращать этот сайт в математическое переполнение, но для тех, кто заинтересован: посмотрите «Воображаемую сказку: История sqrt (-1)» Пола Дж. Наина. Он рассказывает обо всей истории и различных применениях воображаемых чисел в увлекательной и увлекательной форме. Именно благодаря этой книге я решил получить степень по математике, когда прочитал ее 7 лет назад (а я думал об искусстве). Отличное чтение !!

0 голосов
/ 23 февраля 2009

Хорошие ответы до сих пор (действительно, как у Девина!)

Еще один момент:

Одним из первых применений комплексных чисел (хотя в то время их так не называли) был промежуточный этап решения уравнений 3-й степени. ссылка

Опять же, это чисто инструмент, который используется для решения реальных проблем с действительными числами, имеющими физический смысл.

0 голосов
/ 23 февраля 2009

Если вы заинтересованы в поиске простого приложения и знакомы с матрицами, иногда полезно использовать комплексные числа для преобразования совершенно реальной матрицы в треугольную в сложном пространстве, и это немного упрощает вычисления.

Результат, конечно, совершенно реален.

0 голосов
/ 23 февраля 2009

Короткий ответ: действительные числа являются одномерными, мнимые числа добавляют второе измерение к уравнению, и некоторые странные вещи случаются, если вы умножаете ...

...