Как стать автором
Обновить

Комментарии 28

По определению, мнимая единица - это корень из минус одного.

Некорректное определение, кто бы его не ввел и не использовал. Если уж и приводить мнимое значение к реальному, то лучше говорить +/-sqrt(-1).

Мое мнение как специалиста в области математики (коим я недавно стал): некорректно говорить о значении i в контексте реальных чисел.

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

i * i = -1

Про лямбда-исчисление очень понравилось. Жаль, не показали пример с делением и действительными числами

Спасибо за статью

что-то вспомнился вопрос с подвохом из старшей школы на математическую терминологию:

"корень квадратный из 4?"

i это некоторое число вне класса действительных чисел, обладающее следующим свойством i * i = -1

Есть два числа с таким свойством, это i и -i.

С одной стороны вы правы, но кажется что это просто вопрос направления оси, а с точки зрения самого значения i разницы нет.

В определении нигде не утверждается, что такое число единственное.

... И результат одинаков с точностью до изоморфизма.

С удивлением обнаружил, что гугл не дает определения мнимой единицы.

Мнимая единица - это комплексное число (0; 1).

Комплексные числа - это упорядоченные пары чисел (a; b), для которых определены операции сложения

(a; b) + (c; d) = (a+b; c+d)

и умножения

(a; b) * (c; d) = (ac-bd; ad+bc).

Первая формула должна быть (a; b) + (c; d) = (a+c; b+d), конечно же.

Мнимая единица -- понятие алгебраическое. (0; 1) -- лишь один из вариантов реализации, привязанный к конкретной системе координат.

Деление муторно. Как в примитивных микропроцессорах реализуется программно. Т.е. у вас есть оператор Элвиса, сложение, умножение, а для деления пишите программу, реализующую деление столбиком, например. Ну и все остальные функции так-же реализуются.

Спасибо за красивую статью.

В начале XX века светлейшие умы нашей планеты разгадали законы, по которым работает наш мир на самом элементарном своем уровне.

Несколько поспешное заявление. «Светлейшим умам нашей планеты» ещё копать и копать чтобы приблизиться к «разгадкам законов, по которым работает наш мир на самом элементарном своем уровне». Причём копать, судя по всему, светлейшим умам нужно не совсем в ту сторону, в которую они копают сейчас.

Извините, но на мой взгляд, вы злоупотребляете превосходными степенями. "Невероятная красота","величайшая сложность" и т.п.

Сплошное превосходительство

Очено интересная и красивая статья с философским содержанием. Я не математик, но очень впечатляюще. Спасибо)

основанием натурального алгоритма e

натурального логарифма, наверное :)

Конечно. Исправил

Ну и где лямбда-исчисление, там же и комбинаторная логика.
Которая тоже обладает своей особенной красотой.

А самый ураган в том, что можно найти минимальный базис - набор элементарных функций, из которых строится всё.

Например, в обычной двоичной логике есть два хорошо известных базиса:

  • аристотелев "отрицание, импликация"

  • булев "отрицание, конъюнкция, дизъюнкция" но внезапно, существуют базисы из одной двуместной функции - Пирса и Шеффера, и-не и или-не.

В комбинаторной логике тоже традиционный базис - это IKS

  • I (identity): I x = x

  • K (konstant): K x y = x

  • S (substitute): S x y z = (x z) (y z)

из которого видно, что чёрчевские
K a b = a, да это же true
(S K) a b = K b (a b) = b, да это же false (причём заметьте, мы тут получили промежуточный бессмысленный мусор ab, что бы это ни значило).

Оказывается, I в этом базисе лишний, I = SKK:
S K K x = (K x) (K x) = x
Или чуть длиннее: I = SSKK:
S S K K x = S K (S K) x = K x (S K x) = x

Но можно пойти дальше и найти базис из единственного комбинатора "йота":
i x = x S K
(распишите его через лямбду сами, если хотите)

I = i i = i S K = S S K K = I, как мы это уже показали выше
K = i (i (i i)) = i (i I) = i I S K = I S K S K = S K S K = K K (S K) = K
S = i (i (i (i i))) = i K = K S K = S
ну а раз мы из йоты получили базис IKS, то йота сама является базисом.

И на её основе построен эзотерический язык, кто бы мог подумать, "йота"
https://en.wikipedia.org/wiki/Iota_and_Jot

Основную мысль теории математической красоты можно кратко выразить как:

Красота - это сложность, порожденная простотой

А как насчет максимально уродливых вещей? Там есть какие-то закономерности?

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

Опираясь на утверждение
"... людям кажутся красивыми сложные объекты, обладающие наименьшей алгоритмической сложностью ...",
легко представить, что
"красивый код = простой код, делающий сложные вещи".

А развер Эйлер был не швецарский и русский математик?

 Согласно этой теории людям кажутся красивыми сложные объекты, обладающие наименьшей алгоритмической сложностью

Что такое алгоритмическая сложность, понятно, а что в этом контексте просто "сложность"? Чем строка вида "abababababab" сложнее строки "aaaaaaaaa", если речь не идёт именно об алгоритмической сложности? Наверно, можно подумать в сторону энтропии, но я не уверен, что в данном контексте это достаточный критерий.

Возможно ответ кроется где-то в направлении меры информации и энтропии

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

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

Что же касается комплексных чисел, то осмыслить и принять их природу мне очень помог взгляд с точки зрения программирования. Поделюсь им, вдруг кому-то он придётся по душе.

Хотя оперировать комплексными числами и решать задачи меня научили ещё в юном возрасте, долгое время камнем преткновения оставалась эта самая мнимая единица. Вызывала она во мне сильный когнитивный диссонанс - да, в расчётах она помогала, но осмыслить её не удавалось.

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

Позже с мнимыми числами столкнулся в программировании. Во многих языках программирования не выделено символьной абстракции наподобие мнимой единицы i, как это принято в математике, однако это никак не мешает реализовывать логику комплексных чисел и выполнять расчёты.

Привычная математическая запись комплексного числа

a + i * b

иногда достаточно вольно трактуется как действительная часть "плюс" мнимая, что меня немного вводило в заблуждение, ведь арифметические операции сложения/вычитания/умножения/деления обычно определяется над самими числами, а не составными частями. А тут как бы идёт смешение сложений и умножений, как над самими числами, так и над их структурными составляющими.

Грубо говоря, при сложении 5 яблок и 5 груш мы не получим 10 яблок или 10 груш, но получим 10 фруктов. Но при этом мы можем ввести абстракцию груше-яблочные числа, определив для них арифметические операции

(г:5, я:0) + (г:0, я:5) = (г:5, я:5)

(г:3, я:5) - (г:2, я:0) = (г:1, я:5)

и меры

(г:5, я:0) => 5 фруктов
(г:0, я:5) => 5 фруктов
(г:5, я:5) => 10 фруктов (5+5)

(г:3, я:5) => 8 фруктов
(г:2, я:0) => 2 фрукта
(г:1, я:5) => 6 фруктов (8-2)

что обеспечит вполне осмысленные результаты при вычислениях.

То есть при выполнении математических операций над объектами следует внимательно относиться к типу этих объектов, чтобы не получались противоречивые результаты или трактовки.

В программировании же такие вольности устранены, поскольку комплексное число - это структура данных на основе двух вещественных(действительных) чисел

struct Complex
{
	public double Real { get; set; }
	public double Imaginary { get; set; }
	
	public Complex(double real = 0.0, double imaginary = 0.0)
	{
		Real = real;
		Imaginary = imaginary;
	}

	public static Complex operator +(Complex left, Complex right) =>
		new Complex(left.Real + right.Real, left.Imaginary + right.Imaginary);

	public static Complex operator -(Complex left, Complex right) =>
		new Complex(left.Real - right.Real, left.Imaginary - right.Imaginary);

	public static Complex operator *(Complex left, Complex right) =>
		new Complex(left.Real * right.Real - left.Imaginary * right.Imaginary,
		left.Imaginary * right.Real + left.Real * right.Imaginary);
			
	...
}

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

public static implicit operator Complex(double value) => new Complex(value, 0d);
public static implicit operator Complex(int value) => new Complex(value, 0d);
...

Поэтому если написать такой код

double a = 1d;
Complex b = new Complex(2d, 0d);
var c = a + b;

то неявным образом переменная a будет приведена к типу Complex, и для переменной c будет выведен также тип Complex (но не double), что эквивалентно выражению

Complex c = (Complex)a + b;

или

Complex c = new Complex(a, 0d) + b;

Что же касается математики, то для устранения некоторой путаницы можно прибегнуть к следующей нотации

A + i*B => r*A + i*B => (r:A, i:B) 

что однозначно трактуется как действительная часть r имеет вещественное(действительное) значение A, а мнимая часть i имеет вещественное(действительное) значение B. Да, мнимая часть комплексного числа имеет вещественное действительное значение.

Тогда выражение

i ^ 2 = -1
i * i = -1

в более строгом смысле преобразуется к

(0 + i*1) * (0 + i*1) = (-1 + i*0)
=>
(r*0 + i*1) * (r*0 + i*1) = (r*-1 + i*0)
=>
(r:0, i:1) * (r:0, i:1) = (r:-1, i:0)

то есть

мнимая единица (r:0, i:1) - это комплексное число с нулевым вещественным/действительным значением у действительной(реальной) части и единичным, но тоже вещественным/действительным значением у мнимой(воображаемой) части

действительная единица (r:1, i:0) - это комплексное число с единичным вещественным/действительным значением у действительной(реальной) части и нулевым, но тоже вещественным/действительным значением у мнимой(воображаемой) части

Не знаю, стало ли хоть немного понятнее или наоборот запутал, но в моём понимании корень из минус единицы в строгом смысле подразумевает возведение в комплексную степень комплексного числа

sqrt(-1)
=>
(-1)^(0.5)
=>
(r:-1, i:0) ^ (r:0.5, i:0)

а привычные математические нотации по сути являются исторически сложившимися мнемоническими правилами и символьными сокращениями. Подобно тому как зачастую опускается явное указание знака + у положительных чисел или не записываются разделитель и незначащие нули у вещественных

50 + 50.5 = 100.5

вместо

(+50.0) + (+50.5) = +100.5, 

так и при записи комплексных происходит что-то вроде

(A + i*B) + (С + i*D)
=>
A + i*B + С + i*D	
=>
(r:A, i:0) + (r:0, i:B) + (r:C, i:0) + (r:0, i:D)
=>
(r:A, i:B) + (r:C, i:D)
=>
(r:A+C, i:B+D)

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории