Ресурсы: техническое описание TLS, LaTeX - в картинки (img), криптографическая библиотека Arduino, шифр "Кузнечик" на ассемблере AMD64/AVX и ARM64
Уравнение Бомбелли – это кубическое уравнение . Рафаэль Бомбелли – итальянский инженер-математик 16 века. Он занимался гидротехникой. В том числе, масштабными проектами по осушению заболоченных лугов. Но в истории математики Бомбелли известен главным образом как автор трактата “Алгебра”, в котором, кроме прочего, описал объект, называемый сейчас “мнимой единицей”. Именно на примере упомянутого кубического уравнения, Бомбелли в “Алгебре” показывает, как найденные им “радикалы особого (другого) вида” можно применить для разрешения противоречий, связанных с “отрицательным числом под радикалом” в формуле Кардано.
Мы решим это знаменитое (в узких кругах) уравнение несколькими способами, выведем формулу Кардано, разберёмся, бывают ли “корни из отрицательных чисел”, поймём, откуда именно проблемные сочетания с минусом берутся в формуле Кардано, и что именно это означает, если отвлечься от бравурных заявлений вида “квадратные корни из отрицательных чисел существуют, но вам об этом не рассказывают”. А кроме того, определим, почему формула Кардано обычно бесполезна с практической точки зрения.
(Это немного дополненная версия статьи, которую я ранее опубликовал на “Хабре”.)
Читать полностью
Комментировать »
Занятный проект: формирование аналогового телевизионного сигнала непосредственно при помощи микроконтроллера. Микроконтроллер AVR128DA23. TV-сигнал возникает в качестве побочной наводки, на высших гармониках, связанных с процессом генерирования “опорных” прямоугольных импульсов. Этим TV-сигналом можно управлять через параметры “опорного”, прямоугольного, и получать чёрно-белую картинку, которую через радиоэфир принимает обычный телевизор, находящийся на некотором расстоянии от микроконтроллера. Впрочем, в исходной публикации используется не “самый обычный”, а портативный TV-приёмник Sony FD-30A Watchman, на который микроконтроллер транслирует по радио игру “Жизнь”.
Комментировать »
Когда-то, благодаря старому регистратору RU-CENTER, издавался такой замечательный, уникальный журнал – “Доменные имена”. Журнал выходил в печатном варианте, оформляли и верстали его, ни много ни мало, а в Ателье “Афиши”. У журнала был собственный заказной шрифт, особая бумага и удивительный дизайн каждого номера. А я некоторое время был главным редактором, так что хорошо помню процесс. Нынче даже и сайт журнала уничтожен (до сих пор не могу понять – почему).
Но сейчас не об этом.
Вот в 2012 году мы с Артемием Ломовым написали для этого журнала (ДИ, 2012/1(6)) занятную статью – “Сценарии конца Интернета”. Я на эту статью несколько раз уже ссылался на dxdt.ru. Интересно, что некоторые моменты из статьи стали сбываться, – частично, конечно, – прямо на следующий год после публикации. Например, сценарий про “Красную кнопку”. В статье упомянуты и “белые списки”, правда – в контексте “борьбы за копирайт”. В общем, дальше – пошло и поехало.
Там, в той статье, есть и про повреждение магистральных линий связи. Даже конкретно – подводных кабелей (не трудно было угадать, впрочем). Есть и про утрату инженерного подхода – тоже идёт процесс в этом направлении: посмотрите вокруг. В общем, много что охвачено. Но не нужно думать, что развал интернетов начался с той статьи. Вовсе нет. Я полагаю, что всё началось с желания писать слово “Интернет” со строчной буквы. Постоянно про это говорю. Не надо было так делать.
А вот чего нет в той статье, так это про сценарий с разгулом псевдо-ИИ на LLM, который мы сейчас наблюдаем. Разгул – с последующим уничтожением, как минимум, веба, путём затопления бредом, сгенерированным роботами для роботов. Ну, как – нет. Чтобы вот сказать, что прямо в точку – такого нет. А если вообще, про генераторы текста и затопление, то такое есть. Но немного в другом контексте. Цитата:
“А возможно, никакой технологической сингулярности не случится: как мы разобрались, есть угроза утраты человечеством инженерных навыков, поэтому разумные машины строить будет некому. В таком случае люди могут просто заскучать от «всех этих ваших интернетов», потерять интерес к компьютерам — и в результате мягкого глобального помешательства Сеть больше не нужна никому, сайты заброшены и не обновляются, замерз на ленте последний твит никому не известного жителя Техаса. Некоторое время разнообразные спам-боты и генераторы контента еще продолжат наполнять базы данных бессвязным текстовым бредом, предназначенным для чтения роботами поисковых машин, но потом потухнет и эта активность.
Опустевший Интернет завершил существование.”

Одно печально – когда мы эту статью писали, 14 лет назад, то сложно было представить, что реализовываться будет не один какой-то сценарий, а сразу все, параллельно. Видимо, чтобы наверняка.
Как я уже выше отметил – сайт журнала, который находился в домене nic.ru, уничтожен, и довольно давно. Поэтому даже и ссылку дать не получится: бумажные номера остались, но они – без гипертекста.
Комментарии (2) »
Известная шутка гласит, что категорий людей – 10: одни уже знают двоичную систему счисления, а другие – ещё нет. Занятно, что 102 обозначает простое число – два. Это большая редкость в системах счисления, которые рутинно используются в ИТ. Понятно, что ни в восьмеричной, ни в десятичной, ни в шестнадцатеричной, 10 (как запись) не может обозначать простое число (как и всякая запись, заканчивающаяся на 0). А в двоичной – пожалуйста.
Естественно, это возможно только потому, что основание двоичной системы – простое число два. Если взять любое другое простое основание, то 10 тоже будет простым, потому что это и есть запись основания: три – по основанию 3, пять – по основанию 5, семь – 7, и так далее. Но наиболее привычны, кроме десятичной (десятеричной), это двоичная, восьмеричная и шестнадцатеричная.
Возьмём запись 11. В двоичной – это простое число три (112 = 2 + 1 = 3). В восьмеричной – девять, составное, но квадрат простого: 3^2. Та же запись 11 означает одиннадцать в десятичной, простое. Шестнадцатеричное 11 – это семнадцать, тоже простое.
Использование в этом ряду двоичной системы ограничивает доступный набор цифр: только 0 и 1. Но можно взять, например, 101 – трёхзначное:
это пять в двоичной (простое);
шестьдесят пять – в восьмеричной, составное: пять на тринадцать;
сто один – в десятичной, простое;
двести пятьдесят семь – в шестнадцатеричной, простое.
Обратите внимание, что запись чисел словами – это инвариантная, относительно системы счисления, запись.
1112 = семь (простое);
1118 = семьдесят пять (составное);
11110 = сто одиннадцать (простое);
11116 = двести семьдесят три (составное: 3*7*D).
Не забывая о том, что все простые числа, кроме числа два и числа три, имеют вид 6*n +/- 1, на трёх цифрах можно и остановиться. Тем более, что шестеричная система счисления не является распространённой.
Комментировать »
Сейчас практически постоянно пишут и говорят про “ИИ в математике”. Типа, какие “достижения”. Понятно, что инструмент перебора – может доставать какие-то доказательства кусками из ранее опубликованных работ, “синонимизировать” их, собирать из них другие доказательства и прикреплять к “нерешённым задачам”, например, из списков Эрдёша (где относительно много довольно простых, для специалиста, задач). Такой поиск перебором даже может быть полезен (но по модулю избыточных ресурсов, конечно).
Перебор – перебором, но LLM-перебор – это совсем не тот перебор, который вполне себе является методом математического доказательства. Например, как метод доказательства, перебор позволяет быстро находить контрпримеры к каким-то утверждениям. Элементарная иллюстрация: допустим, кто-то говорит, что нельзя “квадрат разложить на два квадрата”; это легко опровергнуть, просто “подобрав” самую известную пифагорову тройку: 3^2 + 4^2 = 5^2. Естественно, компьютеры существенно улучшили возможности по перебору: несравнимы возможности современного ПК и даже таких признанных вычислителей, каким был Эйлер. Однако всё это без учёта новомодных LLM, в которых, похоже, вычислительный ресурс в основном расходуется впустую.
А вот насколько точны результаты компьютерной обработки, применительно к теоретической математике, и как их интерпретировать – вопрос довольно сложный, скорее философский. По крайней мере, проблемы возникают с действительными числами, которые для компьютеров недоступны в принципе. Хуже того, несмотря на большую мощность, компьютер в принципе не может заглянуть даже в область действительно больших натуральных чисел. Но это всё сложные моменты, которые ничуть не отменяют того факта, что компьютеры давно влияют на теоретическую математику. И дело тут ни разу не в модных LLM.
Вообще, интересующимся темой, я бы порекомендовал серию прекрасных статей Н. А. Вавилова, которая начала выходить ещё в 2020 году, до всего этого “хайпа” с LLM “в математике”, и к LLM никакого отношения не имеет: “Компьютер как новая реальность математики” – вот где действительно есть тематическое содержание.
Комментировать »
Лексический контекст может трансформировать семантику одного и того же слова занятным образом. Особенно, в русском языке. Особенно, если графически – это одно и то же слово. Есть хорошо известный, но всё равно интересный, пример – он про “косых косых”.
“Шёл с косой косой косой”.
Что здесь написано? Например, это сказочный заяц (косой или Косой), который идёт, неся на плече ручной инструмент для покоса травы, но этот инструмент довольно кривой: “коса у зайца на плече косая”.
Теперь допишем ещё одно слово “косой”.
“Шёл с косой косой косой косой”.
Что получилось? Теперь заяц-косой ещё и реально косой – то есть, у него большие проблемы с глазами.
“Шёл с косой косой косой косой косой”.
Заяц, который несёт на плече косую косу, идёт вдоль песчаной косы: спустившись с холма, вышел заяц к реке, да закинул косу на плечо, шагая привычной дорогой – вдоль песчаной косы. Что ж, пока заяц идёт, продолжаем приписывать слово “косой”.
“Шёл с косой косой косой косой косой косой”.
Предположим, что и песчаная коса – тоже косая, на то она и коса. Продолжать всё труднее. Получится ли сделать следующий шаг?
“Шёл с косой косой косой косой косой косой косой”.
Семь косых. Ну, казалось бы, теперь-то грамматические варианты закончились, а предложение не “парсится” – так? Нет, не закончились. Дело в том, что косой заяц был нетрезв, поэтому он ещё раз косой, но теперь – в смысле общего состояния сознания: мысли зайца запутаны, но кажутся ему строгими и прямыми, не то что косая коса, которую несёт он на плече. Интересно, что “косой”, в значении не трезвый, можно в этом предложении переставлять на разные экземпляры графического представления слова “косой”.
“Шёл с косой косой косой косой косой косой косой косой”.
Восемь косых – и вот тут уже не обойтись без дефисов, потому что иначе структура не вписывается ни в какой грамматический вариант. Зато с дефисами – вписывается: “Шёл с косой-косой косой косой косой-косой косой косой”. То есть, коса у зайца теперь очень сильно косая: косая-косая. Сам заяц теперь настолько нетрезв, что таких нетрезвых зайцев поди ещё найди: косой-косой. Но с дефисами эффект не такой интересный, поэтому останавливаемся на восьмом уровне.
(Заметьте, кстати, что эффект похож на эмбеддинг с навесом из другой записки.)
Комментарии (1) »
Пустое множество принадлежит к набору фундаментальных объектов современной математики. И не только математики: в чистой философии – значение пустого множества едва ли не выше. Поэтому-то постоянно множатся и роли, которые пустое множество играет в куда более прикладных областях, чем теоретическая математика и философия: в информационных технологиях, да и в технике вообще.
Главное свойство пустого множества в том, что такое множество – единственно. То есть, у нас могут быть множества, собранные из разных объектов, но пустое множество – всегда одинаковое. Более того – это одно и то же множество, вне зависмости от “объектов” и типов. Пустое множество ананасов совпадает с пустым множеством апельсинов по слишком многим характеристикам, чтобы считать, что множества ананасов и апельсинов “пусты” разным образом, как и множество фруктов вообще.
Но, конечно, полностью отказаться от того, что “существуют” и пустое множество апельсинов, и пустое множество ананасов – довольно трудно: вот, только что была введена некоторая различительная окраска – ананасы против апельсинов. Например, если для приготовления блюда требуется ананас, то отсутствие апельсина – никак на кулинарную ситуацию не влияет, тогда как нехватка ананаса делает приготовление невозможным. Однако пустота тут, как концепция, общая. Да, нужно различить понятия “пустота” (“тип”) и “быть пустым” (“стрелка”), но стоит поднять пустоту в ничто, как начинает играть тот фактор, что и ничто, в представлении, бывает белое и чёрное.
Особенности естественного языка, позволяющие оборачивать отсутствие элементов в пустом множестве в размытое значение слова “ничего”, создают тем самым возможность для построения разных силлогизмов из пустого множества. Наверное, самый известный из них – про бутерброд (в вольном переводе): “Что лучше, чем вечное счастье? Ничего! Однако, один бутерброд – заведомо лучше, чем ничего. Следовательно – бутерброд лучше вечного счастья” (R. Smullyan/D. Darling). Здесь, естественно, объяснение в том, что в первой части описывается отсутствие объектов, которые лучше данного: таких объектов, утверждается, пустое множество; а потом, на бутербродном шаге, сравнение производится в обратную сторону: бутерброд заведомо лучше состояния, когда бутерброда нет (не отсутствия объектов, а самого пустого множества). То есть, это разные операции, но то, что пустое множество всего одно, позволяет подменять одну операцию другой.
Например, мне однажды переслали распечатку пары значений вывода утилиты sha256sum, на вход которой подавался результат работы модуля ec из пакета openssl (через “пайп” в консоли). При этом в openssl направлялись два разных файла. Утверждалось, что эти два входных файла содержат одинаковые данные, но только записаны данные в разной форме. Почему? Потому, что равны результаты sha256sum от выдачи openssl. Значения sha256sum, действительно, были равны, несмотря на то, что в openssl передавались разные файлы с разными именами.
Что же произошло на самом деле? Вот что. Утилита sha256sum считает значение хеш-функции SHA-256 от входных данных. Здесь на вход sha256sum поступал вывод openssl ec. Но, ещё раз, если значения равны, то, видимо, тогда и входные файлы содержат одинаковые данные? Нет – одинаковым тут является вывод openssl ec: дело в том, что оба входных файла имели неверный формат, поэтому модуль ec не мог их разобрать и печатал сообщение об ошибке, однако в стандартный вывод – писал пустое множество байтов; то есть, ничего не писал, проще говоря. А значения SHA-256 совпали потому, что на вход хеш-функции поступило пустое множество. А оно – одинаковое, вне зависимости от того, как именно сломался каждый из входных файлов.
Множества, состоящие из элементов разных типов, могут не сочетаться по типам, но пустое множество – сочетается со всеми типами. Когда нет апельсинов и ананасов, шестерней и транзисторов – то, с одной стороны, нет вещей разных типов, но, с другой стороны, общим тут является то, что их нет. Это сплошь и рядом используется в языках программирования.
Скажем, пустое множество возвращается в качестве признака того, что функция завершилась с ошибкой: это хорошо известный объект, обозначаемый nil, null, “” – ещё как-то. Обратите внимание, что значение null оказывается чем-то вроде пустоты, которая может быть помещена в коробку (да, именно так). Но null – это ещё не пустая коробка, как ни странно. В программировании, чтобы null стал “пустой коробкой”, этот null придётся как-то дополнительно трактовать: предположим, использвать null как указатель и попробовать обратиться по его значению (выполнить “дереференс”). Ошибочное толкование пустого множества в случае null и программного кода регулярно приводит к возникновению уязвимостей в ПО, в том числе, в весьма неочевидных случаях.
Современное обозначение для пустого множества – ∅ – появилось относительно недавно, в 30-х годах прошлого века. Но вполне возможно, что саму концепцию систематическим образом впервые строил Джордж Буль, в 1847 году. Впрочем, соответствующая концепция у Буля относится к логике и больше похожа на противопоставление “ничего” – которое есть “нуль”, 0, – “всему”, единице, 1.
Есть более интересное развитие определения: через количество объектов, которые не “само-эквивалентны” (Готлоб Фреге). Здесь “само-эквивалентность” – это обобщение свойства рефлексивности, то есть, когда A = A по свойствам операции, а именно, каждый объект эквивалентен самому себе. Тогда пустое множество – это те объекты, которые не эквивалентны самим себе. Казалось бы – таких объектов просто нет. Но чтобы заявить о том, что чего-то нет, придётся определить это “что-то”, чтобы описать и проотрицать существование, и на этом пути магу легко попасть в ловушку: попытка определения того, чего нет, введение типов, может вызвать данный “зомби-объект” к существованию – он, внезапно, “станет быть” или “будет есть” – как там правильно? А вот способ “не-само-эквивалентных” объектов – позволяет выполнить такое определение без излишней типизации и “зомби”. Ну, в каких-то пределах. Так, в DNSSEC подписывается цифровой подписью факт отсутствия записи – делается это при помощи погружения “отсутствия” в искусственный “пустой интервал” между соседними существующими DNS-записями, иногда такое погружение происходит замысловатым образом.
Не так уж редко используется и свойство пустого множества быть невозможным событием. Как известно, вероятность невозможного события, в каком-то смысле, сильнее нуля – ведь если рассуждать в классическом сеттинге, с действительными числами, то событие с нулевой вероятностью – может произойти. Например, если вы бросаете безразмерную точку на действительную окружность, то вероятность попасть в любое конкретное действительное число тождественно равна нулю, но в какое-то число вы всегда попадёте. Другое дело, что точно записать такие попадания – не выйдет, потому что нельзя записать точно большинство действительных чисел.
Одно и то же пустое множество можно помещать в разные коробки, получая разные пустые коробки. А пустая коробка может служить существенным признаком. Посмотрим на CAA-записи в DNS. Интерпретация этих записей отличается в случае, когда запись есть, но её значение – пустая строка, и в случае, когда нет самой CAA-записи. Здесь буквально проявляется эффект, позволяющий строить натуральные числа из пустого множества: когда нет CAA-записи – это настоящий нуль, пустое множество; когда CAA-запись есть, но она пустая – это уже единица, потому что возможна только одна пустая CAA-запись (ну или так: все пустые CAA-записи – одинаковые). То есть, тут, с одной стороны, играет роль определение того, чего нет: “нет значения CAA-записи” против “нет самой CAA-записи”; с другой стороны – содержательный эффект возникает из погружения пустого множества в большую структуру. Это, в точности, процесс (∅=0, {∅}=1).
Процесс погружения ∅ в {} даёт основной инструмент для генерирования множеств. Фигурные скобки обозначают операцию “множество из (элементов)” (set of). Так, {∅} – это множество из одного элемента, пустого множества. При этом одноэлементное множество (singleton, синглетон) – это не то же самое, что один этот элемент. То есть, заметьте, что {} и {∅} (или, если хотите, {{}}) – сильно разные вещи. Если, борясь за логическую стройность, ввести дополнительно понятие “класса”, как способа избежать возникновения абсурдного “множества всех множеств”, то пересечение всех классов – это и будет пустое множество. Именно поэтому в английском, например, языке пустое множество правильно обозначать как the empty set, с определённым артиклем the, а не an empty set. “A set”, но “the empty set”.
Данное важное свойство закреплено, – обычно!, – и в современных языках программирования высокого уровня. Если написать, что var a := {1} (то есть, переменная a – это массив из одной целой единицы по определению), то станет верным, что 1 != a (то есть, одна целая единица не равна массиву, состоящему из одной целой единицы).
А если взять JavaScript, то можно наблюдать сразу несколько особенностей интерпретации пустого множества и “ссылок” на пустое множество в программировании:
const set = new Set();
const object = {};
set.add(1);
set.add("two");
set.add(object);
set.add(object);
set.add({});
console.log(set.size);
for (const item of set.keys()) {
console.log(item);
}
– эта программа напечатает вот что:
4
1
two
Object { }
Object { }
– ничего странного, но довольно показательно.
Оставим JavaScript и его объекты. В шумерских способах записи чисел для обозначения отсутствия единиц использовали пробел. Занятно, что в шумерской системе, изначально, отличались обозначения для единиц, относящихся к разным типам объектов: предположим, обозначения для мер зерновых отличались от обозначений для мер воды. Это, конечно, связано с тем, что древнейшие системы просто фиксировали количество объектов при помощи изображений именно этих объектов, чтобы можно было попарно сопоставить изображение и реальность: видим три кувшина – рисуем три кувшина в качестве обозначения того, что кувшинов три; видим пять мехов с водой – рисуем пять мехов, в качестве обозначения, что мехов пять, и, возможно, знак воды рядом. Потому что тут ещё нет операции выноса типа выше числа: “кувшины” – три (палки); “меха” – пять (палок). И пустое множество демонстрирует свою уникальность: нет кувшинов, нет мехов – просто не обозначаем кувшины и меха. И именно поэтому пробел, как носитель “пустоты”, в шумерской схеме записи мог появиться только тогда, когда обозначения единиц для счёта уже отделились от типов объектов. То есть, введение пробела произошло сильно позже отказа от зарисовки “мехов и кувшинов”. Понятно, что отдельное обозначение для нуля требуется только в схеме “тип” – “количество”, где количество записывается абстрактно.
Пустое множество – аксиоматично. Так, чрезвычайно часто встречающийся в популярной литературе феномен, известный как “набор аксиом теории множеств” ZFC, буквально содержит аксиому о пустом множестве: “существует пустое множество”. Пустое тут – это то, в котором нет элементов, но оно – множество: то есть, множество, к которому не принадлежит ни один элемент. Получается, “пустота” множества может выступать как предикат: “[A] есть пустое”, и без пустого множества построение логических теорий становится затруднительным.
Удивительно, но побочный эффект того, что всякий элемент не принадлежит пустому множеству, вне зависисмости от типа, приводит к следующему обобщению: для элементов пустого множества всё что угодно – верно. Элементам пустого множества оказывается возможно приписать любое свойство. Это используется даже в модных “интернет-мемах”, как способ наведения сарказма:
никто: [%blah-blah-blah%] иванов: подпрыгивает на батуте
– тут совсем условные обозначения, конечно: “[%blah-blah-blah%]” – пустое, “батут” – содержание. Главное – схема: “никто: {}, кто-то: {предмет мема}”. “Когда никто не догадался, кроме Иванова”.
Комментарии (2) »
Как ещё можно понять, что не бывает квадратных корней из отрицательных чисел? Например, воспользовавшись отношением порядка. Таких корней из отрицательных чисел не бывает над действительными, потому что квадрат любого действительного числа – неотрицателен. Это свойство непосредственно связано с тем, что на действительных числах есть отношение порядка. Ведь что такое отрицательное число? Это число, которое меньше нуля, и при этом “меньше” обладает некоторыми дополнительными, глобальными свойствами (можно сравнить все числа, результат сохраняет арифметику и т.д.). В комплексных числах – такого нет.
То есть, из этого прямо следует, что и квадрат никакого комплексного числа не может быть меньше нуля! Но по другой причине: потому, что в комплексных числах как раз нет полноценного отношения порядка, аналогичного тому, которое есть для действительных. В комплексных числах нельзя сказать, что вот это число – “отрицательное”, меньше нуля, а вот это – “положительное”, больше нуля. Строго говоря, всякие способы “сравнения” комплексных чисел придумать возможно, – например, по значению модуля, по алфавиту записи, ещё как-то, – но никакой из этих способов не будет совместим с арифметической структурой комплексных чисел, соответственно, не будет задавать линейный порядок, сохраняющий операции, которые и делают комплексные числа – комплексными.
Если взять то самое знаменитое √(-121), из труда Бомбелли, то это не есть действительное число, ведь оно не является ни отрицательным, ни положительным, ни нулём. Почему ни отрицательным, ни положительным? По тому самому порядку, который описан выше: отрицательное – это меньше нуля; положительное – это когда нуль меньше числа. Почему не является нулём? Потому что иначе “схлопывается” вся арифметика: должно быть 2 + √(-121) = 2. Но раз нет подходящего отношения порядка, то нет и отрицательных/положительных. Это всё отмечено у Бомбелли – буквально, он пишет, что “такой радикал не может быть назван ни положительным, ни отрицательным”. В его “Алгебре” это означало, что у значения вида √(-121) есть особенная сигнатура, а поэтому нужно ввести дополнительную операцию по работе с этой сигнатурой, что в истории математики и принято называть изобретением “мнимой единицы”.
Посмотрим на ситуацию чуть более детально, пусть и не совсем строго. Положим, что обычные “плюсы” и “минусы” – это +1 и -1, а “необычные”, комплексные, это +i и -i. Мы получили кортеж значений: {+1, -1, +i, -i}. Попробуем ввести привычное отношение порядка, сохраняющее “естественную” арифметику. Предположим, что -i < 0 (отрицательное), а +i > 0 (положительное). Тогда (+i)*(+i) должно быть положительным, больше нуля.
Однако, согласно свойствами мнимой единицы, (+i)*(+i) = -1 – именно это и позволяет выносить сигнатуру из-под знака радикала: √(-121) = (+i)*11. Получается, что -1 > 0, то есть, -1 – положительное? Но тогда -i = (+i)*(-1) должно быть тоже положительным, ведь мы и приняли, что +i – положительное, и нашли, что -1 – тоже положительное. Следовательно, уже из соображений симметрии, +1 – отрицательное, то есть, +1 < 0. Странно, не так ли? Более того, +i – тоже отрицательное. Но мы ведь приняли, что +i – положительное? Противоречие. Поэтому-то ввести тут привычные отрицательные и положительные числа, но с сигнатурой i, не получится. Не получится и построить отношение линейного порядка “с арифметикой” на комплексных числах. Это ещё одно доказательство того, что никаких квадратных корней из отрицательных чисел быть не может – нарушится логика построения числовых структур.
Что же это за √(-121)? Что получается, если “возвести его в квадрат”? √(-121) – это комплексное число. Когда вы его возводите в квадрат, то тоже получаете комплексное число: -121 + i*0. То, что мнимая часть здесь “умножена на ноль”, вообще говоря, не делает число автоматически действительным. Потому что базовая операция умножения проводилась в комплексных, её результат – комплексное число, поэтому -121 = -121 + i*0 – комплексное. Тут всегда пары значений. А “забыть о комплексных” – это уже дополнительная операция, которая позволяет сопоставить некоторые комплексные числа – действительным (не парам действительных, заметьте!); операция, так сказать, позволяет спустить некоторые комплексные – в действительные. Да, эта операция регулярно подразумевается. Отсюда и надуманная “противоречивость”, из которой стало модно делать кричащие, но ложные, утверждения: мол, “можно” извлечь квадратный корень из отрицательного числа, но “вам об этом не говорят”. Напоминает историю со школьной задачей про ящики и апельсины.
Комментировать »
Попросил (на английском) ChatGPT 5 объяснить, почему в русском языке форма множественного числа слова “дно” используется для обозначения “жены дона”. Это такая шутка. ChatGPT, ранее, в другой ветке, заявляло мне, что владеет русским на высочайшем уровне, не хуже образованных носителей, так что запрос – по теме.
Однако ChatGPT заявило, в весьма пространных объяснениях, которые я не стану тут приводить, что это не так, не используется “дно” для “жены дона”. Потому что – внимание! – множественное число для “дно” – “днá” (именно так, с диакритическим знаком ударения над “a”). И ChatGPT привело пример:
одно́ дно́,
мно́го днá.
Так-то. Ну а “жена дона” – это “донна”. И дальше ChatGPT объяснило, мол, юмор тут в том, что “люди в шутку говорят: жена дона – это дна”.
А когда я написал, что, получается, это ChatGPT не знает форму множественного числа для “дно”, ответом было уверенное “I do” (“Я знаю”), со смайликом. После чего ChatGPT повторило, буквально, следующее:
The plural of дно́ is днá (stress on the second syllable):
одно́ дно́
два / три / мно́го днá
Это довольно забавно. Ударение, главное, в “днá” – на втором слоге. Не перепутайте. А самое смешное, так это слово, которое ИИ ChatGPT приводит в качестве иллюстрации того, что в русском есть и другие “контринтуитивные множественные”: “око́ → очá”.
Конечно, все эти современные говорилки, по сравнению с временами “хлопка от шампанского” и “личинок, блокирующих собачку в замке”, сильно продвинулись. ChatGPT, надо сказать, годится в качестве неплохого инструмента для поиска необычных примеров в текстах (ну, в тех случаях, когда LLM не выдумывает ответ). К сожалению, использовать этот инструмент для обработки естественного языка нужно с большой осторожностью. А при изучении иностранного языка – это, опять же, так себе помощник. Пример с “дном” и “доньей” хорошо это показывает.
Несомненно, “дно” – это весьма сложный случай. Обычно, вопрос про множественное число для “дна” ставит в тупик носителей русского, даже если они получили профильное (да, как ни странно) образование (литераторы, журналисты, иногда и филологи). Но ни одному образованному носителю русского не придёт в голову утверждать, что множественное для “дно” – “дна”. Именно в этом и состоит тупик: в совершенстве владеющий языком человек сразу понимает, что “дна” – никак не может быть множественным для “дно”; это будет не на русском. Другое дело – генератор текстов, у которого нет и не может быть понимания языка. Но “хайпу” это не мешает.
А множественное для “дно” – “донья”. Например, “сетчатые донья для ульев”.
Комментировать »
Небольшой исторический экскурс, про комплексные числа и “квадратный корень из минус единицы”. Читаем исходники Бомбелли. Почему Бомбелли? Потому что без упоминания этого итальянского инженера-математика 16 века не обходится ни один экскурс в историю внедрения комплексных чисел. Про Рафаэля Бомбелли нередко пишут, что он “первым ввёл в обиход комплексные числа”. Несомненно, труд Бомбелли “Алгебра” (L’Algebra) сыграл одну из ключевых ролей в становлении подходов к алгоритмическому пониманию комплексных чисел. Но что именно сформулировал Бомбелли, и как именно? Насколько этот объект похож на современные комплексные числа?
Традиционно ссылаются на небольшой фрагмент из “Алгебры” Бомбелли, в котором прямо определяются правила арифметики для “мнимой единицы”, то есть, для i. Тут, однако, кавычки необходимы: мнимая единица – это в современных терминах; как будет понятно далее, у Бомбелли всё несколько иначе записано.
“Алгебра” Бомбелли написана на итальянском. Чтобы проиллюстрировать различие подходов, я постараюсь в ключевых местах дать дословный перевод текста Бомбелли, максимально близкий к исходнику (ну, на мой взгляд). Это позволит понять, как вообще описывались алгебраические объекты до появления современной нотации, и возможно ли сравнивать объекты непосредственно.
Кстати, современная алгебраическая нотация является настолько огромным достижением сама по себе, что именно её мог бы использовать “попаданец” в средневековое европейское прошлое для эффективного убеждения инквизиторов в том, что он, “попаданец”, реально из будущего. Современные для двадцать первого века теоремы, скажем, типовой “попаданец” не сможет даже сформулировать. Как и убедительно рассказать про “металлических птиц” и “дальновидение”, чтобы обособить свой рассказ от прочих волшебных историй, бытовавших и в средние века – просто, тут необходимо знать слишком много, для “попаданца”. Зато базовая алгебраическая нотация, на уровне записи формул корней квадратного уравнения, нынче хорошо знакома едва ли не каждому, а на образованного инквизитора прошлого произведёт впечатление. Но всё это в художественном произведении, конечно. Почему-то, этот вариант, хоть он простой и доступный, упускают из виду. Вернёмся, впрочем, к итальянской “Алгебре” 16 века.
Ниже дан первый фрагмент скана соответствующей страницы (это издание 1579 года, из библиотеки Linda Hall; страница 169; выделение цветом – моё; в некоторых местах, где допустимо и если не влияет на контекст, – я исправляю опечатки исходника и меняю типографику на современную итальянскую, для лучшего текстового представления, например, u -> v; см. детали ниже).

Итак, итальянский – исходный язык, на котором писал свой труд Бомбелли. Это уже далеко не латынь, но и не совсем современый итальянский – 16 век, всё же. (Знание итальянского для понимания этой заметки не требуется – я все важные слова объясню ниже.) В самом начале страницы, Бомбелли, буквально, пишет (пожирнение тут везде соответствует тексту, выделенному на скане): “Я обнаружил другой тип кубических корней выражений, который сильно отличается от всех других” (“Ho trovato un’altra sorte di R.c.legate molto differenti dall’altre”.)
Здесь сразу же попадается интересный термин: “R.c.legate”, от Radice Cubica Legata, – это обозначение для кубического корня, вычисляемого для некоторого алгебраического выражения (формулы), которое, как сейчас сказали бы, стоит “под радикалом”. Откуда и legata – “связанная” (итальянское radice, “корень” – женского рода; кстати, если вы только изучаете русский, то и “корень” вам тоже может показаться существительным женского рода). В общем, если на русском, то будет “связанный корень” или, что несколько точнее, “присоединённый корень”.
Что тут имеется в виду? Бомбелли определяет соответствующий больший термин – Radice Legata – за несколько десятков страниц до рассматриваемого фрагмента “Алгебры”. И в определении дан такой пример (здесь он записан в современных обозначениях и терминах): пусть кто-то говорит, “найди мне квадратный корень из (7 + √48)”, это означает, что нужно найти такое выражение вида a + √b, которое, “умноженное само на себя, даст (7 + √48)”; такое выражение, пишет Бомбелли, это (2 + √3). Проверяем: (2 + √3)*(2 + √3) = 4 + 4*√3 + 3 = 7 + 4*√3 = (7 + √48). Сходится.
Однако Бомбелли, когда описывает здесь нахождение квадратного корня в подобной форме, не использует термин “квадратный корень”. Он, буквально, пишет: “найди мне сторону” (дословно: trovami il lato). И это, вообще говоря, сторона квадрата, площадь которого равна заданному выражению (с иррациональностью!). Это всё похоже на геометрический подход, разделяющий числа и “величины”.
Нужно отметить, что, как сейчас бы сказали, Бомбеллли строит расширение поля рациональных чисел: потому что (7 + √48) = (7 + 4*√3) – это присоединение к рациональным числам иррационального √3, где √3 – это обозначение числа, квадрат которого равен 3 (определение корней дано у Бомбелли через умножение, а это очень важно). То есть, рассматриваем всевозможные выражения вида a + b*√3, где a, b – рациональные числа. Естественно, во времена Бомбелли абстрактной теории полей ещё не было, как и коммутативной алгебры в современном понимании. Но тем не менее.
Получается, геометрическая интерпретация всё ещё отражена у Бомбелли в терминах (“найти сторону”), но искомые “радикалы” вводятся уже через присоединение “внешнего” корня многочлена, через расширение поля, а не через “углы”, которые сейчас повсеместно связывают с комплексными числами, – например, в радиотехнике, но не только там. Именно алгебраическое определение комплексных чисел через расширение поля (присоединение корня полинома X^2 + 1) и является современным, – “операционным” и алгоритмическим, – вариантом. Угловые меры, как инструмент, конечно, в труде Бомбелли тоже есть, в том числе, при рассмотрении решений кубических уравнений. Но это не комплексные числа, а другой инструмент.
Фактически, “R.c.legate” это запись корня уравнения в кубических радикалах, с присоединением иррациональностей. Но всё же, получается, что речь тут идёт о специальном “радикале”, как способе записи, а не о теоретическом “числовом” объекте. Это следует ещё и из того, что темой соответствующего раздела является решение уравнений третьей степени (формула Кардано, в частности). В современных обозначениях – ∛(a + √d) – кубический корень из выражения, содержащего корень квадратный. Этот последний момент – важен для понимания дальнейшего текста.
Итак, имеем радикалы из выражений вида a + b√d, как способ записи, пригодный для специальных вычислений. Идём дальше – дословный перевод следующего фрагмента со скриншота труда Бомбелли: “эта вещь [радикал] встречается в главе, рассматривающей куб, равный многим ([т.е. кратности неизвестного]) и числу”. Вот этот странный текст про “куб, неизвестное и число”, это есть ни что иное как запись словами уравнения вида x^3 = px + q, если в современных обозначениях. (Далее будем называть здесь q не “числом”, а константой – так понятнее.)
Бомбелли здесь рассматривает куб неизвестного х, слева, и он приравнивается к значению, кратному этому х (p*x), плюс некоторое число (буквально – numero), константа “без неизвестного”, то есть плюс q. Именно такая форма уравнений рассматривается. Вообще, это не единственная используемая “нотация”. Тот же Бомбелли далее в “Алгебре” использует специальную нотацию с отдельным обозначением степеней неизвестной арабскими цифрами (но без формального обозначения самой неизвестной – как сейчас написали бы: x или t). Однако в обсуждаемом фрагменте – тип уравнения назван просто словами. Ни о каких операциях речи ещё не идёт, но тут же вводится важное ограничение, выделяющее интересующий Бомбелли подтип уравнений и приводящее, в итоге, к “мнимым” (или “софистским”) радикалам.
Далее сформулировано условие, что (p^3)/27 больше (q^2)/4, но опять словами, при этом (p^3)/27 = (1/3*p)^3, а (q^2)/4 = (1/2*q)^2. Дословно по тексту: “когда куб одной третьей от кратности [неизвестного] – больше, чем квадрат половины числа [константы]”. В исходном тексте: “quando il cubato del terzo delli tanti è maggiore del quadrato della meta del numero” – “cubato del terzo” – “куб одной третьей”, “è maggiore del quadrato” – “больше квадрата” и т.д. То есть, всё описано словами, и речь о конкретном случае значений коэффициентов. Разительно отличается от современного подхода к изложению материала. Почему (p^3)/27 > (q^2)/4? Об этом сказано буквально через несколько слов.
Пропускаем слова о том, что примеры с таким уравнением Бомбелли разбирает в отдельной главе, читаем дальше и пытаемся разобраться: “соответствующий тип квадратного корня в своём вычислении (Algorismo) требует операций, отличных от всех других, и другого названия” (“la qual sorte di R.q. hà nel suo Algorismo diversa operatione dall’altre, e diverso nome”). Здесь R.q., от Radice Quadrata, – это уже квадратный корень, но терминологическая логика остаётся той же. Почему же речь теперь про квадратный корень, если сначала упомянуты кубические? Потому что здесь написано про “подрадикальный” корень, соответствующий вычислению корня кубического. Собственно, когда вы решаете кубическое уравнение в радикалах, то в процессе решения обязательно возникает квадратное уравнение и квадратные корни. В формуле Кардано они и составляют смысл всей затеи. О чём и пишет Бомбелли далее: “когда куб одной третьей кратности больше квадрата половины константы, тогда нельзя назвать [его] ни больше, ни меньше“. То есть, тут речь про значение “ни с плюсом, ни с минусом”. Необходимо учитывать, что отрицательные числа пока что не используются как класс, привычный сегодня: например, довольно сложно определить, что такое сторона квадрата, имеющая “отрицательную величину”. Поэтому “ни больше, ни меньше” – “ne più, ne meno”, – как операции увеличения и уменьшения чего-то: a + b, a − b.
Формула Кардано имеет вид (a + √b)^(1/3) + (a − √b)^(1/3), то есть, это сумма двух кубических корней, соответствующих R.c.legate Бомбелли, а “ни больше, ни меньше” относится к части √b. Ведь в формуле Кардано b = (q^2)/4 − (p^3)/27, соответственно, если (p^3)/27 больше (q^2)/4, то и получаем отрицательное значение под квадратным корнем. Это и есть та величина, про которую ни сказать, что “она больше”, ни сказать, что “она меньше”.
Дальше: “но [эти элементы] называю “плюс минуса”, там, где их нужно складывать ([увеличивать]), а где их нужно отнимать ([уменьшать]), называю “минус минуса”, и эта операция необходимейшая…” (“però lo chiamerò più di meno, quando egli si doverà aggiongere, e quando si doverà cavare, lo chiamerò men di meno, e questa operatione è necessarissima…”). То есть, в том случае, когда под радикалом отрицательное число, Бомбелли такое сочетание не считает возможным называть, ни “большим”, ни “меньшим” – читай: ни положительным, ни отрицательным, – но называет “плюсом минуса” и “минусом минуса”. Для прототипа i тут вводится специальное, двойное операционное обозначение. Те же “плюс минуса”/”минус минуса” можно перевести и как “больше минуса”/”меньше минуса”. Что это могло бы обозначать? А это больше всего похоже на описание способа выноса мнимой единицы из-под радикала. Например, перепишем (2 − √(-3)) как (2 − i*√3).
Что касается исключительной важности новой операции, которая объявлена “необходимейшей”, то речь тут об уравнениях четвёртой степени (potenza di potenza) разной формы, где подобные радикалы возникают “гораздо чаще, чем другие”.
Далее Бомбелли пишет, что “[подобные радикалы] многим покажутся скорее “софистскими”, чем “настоящими”; такого мнения и я сам придерживался тоже, пока не нашёл для него [радикала] демонстрации геометрической” (“la quale parerà à molti più tosto sofistica, che rale, e tale opinione hò tenuto anch’io, fin’ che hò trovato la sua dimostratione in linee”).
Как ни странно, но геометрическая демонстрация (на плоскости, да), которую Бомбелли приводит отдельно (а я здесь пропускаю), это вовсе не современная геометрическая интерпретация комплексных чисел – с поворотом, углами, мнимой и действительной осями.
Промежуточный итог: Бомбелли рассматривает некоторые “новые радикалы”, отдельный тип квадратного корня, со своим названием и свойствами, как составную часть операции отыскания кубических корней. То есть, в качестве вспомогательного элемента, чтобы операция работала, используется новый объект, который очень похож на мнимую единицу (см. “плюс-минусы” выше), но вовсе не на квадратный корень из минус единицы, как на число вообще и на “рациональное” число в особенности. Далее Бомбелли перечисляет правила умножения “знаков” для нового элемента: “и вначале разберу умножение, определив закон для плюса и минуса” (“e prima trattarò del Moltiplicare, ponendo la regola del più & meno”). На скриншоте ниже – эти определения.

Если новый “минус” заменить на обозначение i, то получится, что здесь написано следующее (пример из: F. La Nave and B. Mazur, Reading Bombelli, 2001):
1. (+)*(+i) = +i
2. (−)*(+i) = −i
3. (+)*(−i) = −i
4. (−)*(−i) = +i
5. (+i)*(+i) = −
6. (+i)*(−i) = +
7. (−i)*(+i) = +
8. (−i)*(−i) = −
Если представить, что “чистый” минус и “чистый” плюс – это подразумеваемые плюс/минус единицы по умножению (как в современной нотации), то получится, что в пятой строке записано (i*i) = i^2 = -1. А это корректное определение мнимой единицы. Может показаться, что обобщив определение квадратного корня в “Алгебре” Бомбелли получаем √(-1) = i, поскольку i*i = -1, но это не так, поскольку Бомбелли не вводит i как “число” или как измерение “стороны”. Это i – приписано сейчас, это некий анахронизм, а в исходном тексте (см. скриншот выше), фигурируют лишь операционные обозначения “плюс минуса” и “минус минуса”. И тем более выделение концепции мнимой единицы оказывается в некотором противоречии с тем, что данные специальные радикалы (R.C.Legata) вводятся непосредственно для выражений вида (a + √d), применительно к кубическим уравнениям. А в современном варианте извлечение кубических корней из комплексных чисел требует формулы Муавра и тригонометрического представления.
Бомбелли находит решение в радикалах для уравнения x^3 = 15*x + 4. Это, пожалуй, второй самый цитируемый фрагмент “Алгебры”. Во времена Бомбелли было известно, что кубическое уравнение всегда имеет один (действительный) корень, а особый интерес представляли только положительные корни. С одной стороны, положительный корень x^3 = 15*x + 4 нетрудно угадать: x = 4. С другой стороны, (4^2)/4 = 4, (15^3)/27 = 125, и формула Кардано даёт для этого уравнения следующее выражение: ∛(2 + √-121) + ∛(2 − √-121). Это как-то не очень похоже на 4.
Вообще, можно найти и некоторые другие озадачивающие варианты значений внутри формулы Кардано для уравнений с очевидным целым корнем, без “отрицательных радикалов”, особенно, если вам знакомо уравнение Пелля, но это тема для другой записки. Что же касается √-121, то это всё равно выглядит сложно. Даже сейчас, для современного взгляда. Потому что, вообще говоря, и значений кубического корня получается несколько, и для случая трёх действительных корней формула Кардано, мягко говоря, несколько бесполезна.
Однако Бомбелли, иллюстрируя свой новый метод, показывает, что (2 + i)^3 = (2 + √-121), если только следовать описанным выше правилам. И действительно, (2 + i)*(2 + i) = (3 + 4i), (3 + 4i)*(2 + i) = (2 + 11i) = (2 + √-121). Соответственно, (2 − i)^3 = (2 − √-121), так сказать, из соображений симметрии (это отмечено у Бомбелли, как ни странно). Поэтому ∛(2 + √-121) + ∛(2 − √-121) = (2 + i) + (2 − i) = 4. Вот только в данном конкретном случае значения нетрудно подобрать под известный ответ. А в других случаях – без рационального аналога тригонометрии с кубическими корнями будет трудновато.
Комментировать »
Если вы вдруг думаете, что “док-станции” и сопряжение наручных “смарт-часов” со смартфоном – это очень новое, то вот система Breguet Sympathique начала 19 века – 1814 года выпуска, из британской Королевской коллекции. Да, это тот самый “Брегет”, упоминаемый, например, у Пушкина. Только здесь большие настольные (накаминные, если точнее) часы снабжены механическим интерфейсом для подключения карманных часов – то есть, самой что ни на есть настоящей, пусть и механической, “док-станцией”.

(Credit: Royal Collection Enterprises Limited / Royal Collection Trust.)
Карманные часы устанавливались в специальный захват на верхней панели основных часов. При этом основные часы автоматически корректировали время карманных и точность их хода.

(Credit: Royal Collection Enterprises Limited / Royal Collection Trust.)
Коннектор крупным планом. Здесь имеется микроскопический центральный вал, который подключается к механизму карманных часов через специальное отверстие в корпусе последних – см. следующую иллюстрацию.

(Credit: Royal Collection Enterprises Limited / Royal Collection Trust.)
В нижней части механизма, за отверстием в корпусе, видны некоторые детали механического интерфейса, при помощи которого регулировалось положение стрелок карманных часов, – они устанавливались синхронно показаниям основных, – осуществлялась коррекция хода карманного механического гаджета (по разнице между опорным временем основных часов и фактическими показаниями времени на карманных). Были и более поздние варианты системы, с автоматическим заводом пружины карманных часов.
Девятнадцатый век. Никаких транзисторов и Bluetooth. Но, естественно, штучная ручная работа.
Комментировать »
Новый