И еще о даче в апреле

2026-Apr-06, Monday 20:43
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Жизнь в дачном кооперативе вне дачного сезона имеет свои особенности. Водопровод не работает, поэтому воду приходится носить с колодца. Колодец в ста метрах, и ворот крутить не надо, насос качает. И душ тоже не работает, если в водопроводе нет давления. Так что помыться - это челендж. Правда, с горячей водой проблем нет. Печка топится почти непрерывно (надо, видимо все же с утеплением дома что-то делать, во всяком случае с оконными рамами, которые тесть где-то на свалке надыбал) и нагревает 20-литровый бак. Так что помыться в тазике посреди комнаты вполне реально, даже теплолюбивой Ирине. А для мытья посуды вполне достаточно воды обеспечивает бак над раковиной с электрическим подогревом.

Но вот расход топливных брикетов как-то удрудчает. Уходит почти упаковка в день, а она 153 рубля стоит. Надо заказать три куба обычных дров (это минимальный объем, который доставляют - одна газель). Куб дров здесь стоит от 1500, и весит куб сухих дров килограмм 400, а значит куба должно хватать месяца на полтора

Расход воды у нас тут, конечно тоже немаленький. Вчера - когда никто не пытался мыться, ушло шесть ведер. По этому поводу купили 120-литровую бочку. Чтобы не бегать на колодец в любое время суток и в любую погоду. Заполнять ее, конечно, пришлось под дождем.

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

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Говорят и пишут, что мессенджер Telegram то ли будет уведомлять в приложении, то ли уже уведомляет, о корреспондентах, использующих “неофициальный клиент” для своего аккаунта, потому что, мол, “неофициальный клиент” может представлять угрозу, даже если его использует кто-то на другом конце обмена сообщениями.

Что касается таких “утечек”, то это, естественно, очевидный момент; попытка же представить тут центральный сервер неким гарантом – очередная подмена самой концепции “защищённого обмена сообщениями”.

Что касается подобных предупреждений и статуса “официальности” – тут надо заметить, что, если это так, и предупреждение такое есть, то это лишь очередной раз подчёркивает, насколько сильно данный мессенджер стремится к централизации: то есть, во-первых, требуется обнаруживать какой клиент установлен на устройстве у пользователя (что, понятно, прямо противоречит “приватности”); во-вторых, это очередное повышение контроля за устройством пользователя – потому что тут генеральная линия, без сомнений, это возможность проверить “сертифицирован” ли состав программ (не так важно, называется ли это “повышением безопасности” или “информированием о работе приложения”). И вот как бы так не вышло, что и тут следующим шагом станет проверка “подозрительной сетевой активности” и проверка наличия “подозрительных программ”, как уже делают некоторые банковские приложения (ДБО), например. (И, естественно, так же делают сами поставщики ОС (Google, Apple); но тут, как бы, это хотя бы минимально оправданно.)

С другой стороны, такое движение – оно и понятно: ведь всё это происходит в рамках очередного этапа “битвы за банхаммер”, которая довольно давно стала основным направлением “развития” “интернетов”. А здесь два главных рычага: централизация и блокирование.

Сижу в Бужаниново

2026-Apr-05, Sunday 08:04
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Открывать дачный сезон 4 апреля это как-то рановато. Воды в водопроводе пока нет и не будет еще примерно месяц. Запасы дров тут тоже прошлым летом все сожгли, пришлось купить по дороге в бывшем Леруа Мерлен топливных брикетов. Впрочем брикеты горят неплохо, а стоят вроде не слишком дорого - 153 рубля за дюжину (10кг).

Здесь на участке еще местами лежит снег. Где ветром надуло большие сугробы, они ещё не растаяли.

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

Собираясь вчера, чего-то уйму всего нужного позабывал.

  1. Забыл все свои лекарства.
  2. Забыл купленный специально сюда смеситель для раковины. Поэтому заняться приведением водопровода в готовность к влкючнию пока не получится.
  3. Как выяснилось, у меня в сумке нет ни одного USB-C хвоста. Впрочем, есть блок питания от ноутбука, поэтому телефон без электричества не останется. Ну и мышь тоже. А вот синхронизировать потерянную в прошлом году и найденную сейчас электронную книгу с текущим состоянием библиотеки - пока нечем (Почему-то по Wi-Fi современные электронные книги взаимодействовать с соседним компьютером не хотят, а хотят обязательно лезть куда-то на чужие сайты. Поэтому я в них всегда сразу включаю "самолетный режим".)

Торбеево озеро ещё толком не вскрылось. И хотя лодку я сюда привёз, испытать пока не получится. Собрать её что ли прямо на участке посмотреть хоть на неё в сборе.

Ключи ECDSA и их перебор

2026-Apr-04, Saturday 16:42
[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Открытый серверный ключ TLS, который указан в TLS-сертификате, на dxdt.blog начинается с подстроки DEADC0DE (в шестнадцатеричной записи, см. скриншот ниже).

Screenshot

Да, тут присутствует ещё и байт со значением 04 в самом начале, но он не имеет отношения непосредственно к ключу – это лишь указание на формат представления. 04 обозначает несжатую форму записи, когда прямо указываются две координаты точки ключа. Поэтому 04 можно отбросить. Такое значение ключа я использовал специально (это то, что называется vanity keys).

Как это значение получено? Оно получено перебором, конечно. Это не очень сложно сделать. Открытый ключ ECDSA – это точка на кривой. Точке соответствуют две координаты, одна из них (обычно, обозначают X), записывается слева. Поэтому в начале записи ключа будут идти старшие байты X-координаты. Остаётся подобрать такой секретный ключ, который даст открытый с нужной X-координатой. Секретный ключ – это натуральное число, больше двух и меньше порядка группы точек кривой (обычно, меньше тоже на два, но это детали). Нужно перебирать секретные ключи и проверять значение начальных байтов X-координаты открытого на соответствие заданной маске.

Открытый ключ – это точка-генератор G из параметров кривой, умноженная на значение секретного ключа d: [d]G. Я, используя готовую библиотеку из дистрибутива языка Go, написал быструю программу умножения на P-256 (кривая, которая используется здесь в ECDSA). Программа перебирает секретные ключи и делает это параллельно, во много потоков. Соответственно, даже на старом 16-потоковом процессоре AMD Ryzen 7, подбор ключа занял всего несколько часов. В результате подбора я получил нужный секретный ключ, который экспортировал для генерирования CSR (запрос на выпуск сертификата) и штатным способом использую при заказе TLS-сертификатов.

Вообще, для P-256 можно придумать немало открытых ключей, запись которых, в X-координате, выглядит ещё более необычно. Например:

0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBA
- цифры A и немного B,
0x1000000000000000000000000000000000000000000000000000000000000001
- единицы и нули,
0x5000000000000000000000000000000000000000000000000000000000055555
- пятёрки и нули,
0x7777777777777777777777777777777177777777777777777777777777777777
- семёрки с "неожиданной" единицей,
0x8888888888888888888888888888881888888888888888888888888888888888
- восьмёрки, но тоже с единицей.

Точки с такими X-координатами лежат на кривой P-256. Определить для них Y-координату – не представляет вычислительной проблемы. Более того, ввиду свойств данной кривой – все эти точки, действительно, являются открытыми ключами. Тут есть лишь одна проблема: по открытому ключу очень сложно, а на практике – невозможно, вычислить секретный ключ; потому что это и есть основная задача, обеспечивающая стойкость ECDSA. Конечно, подходящий секретный ключ можно угадать. В том числе, в результате перебора. Вот только перебрать даже половину от, примерно, 2^256 – нереально. Ну и записать подходящий секретный ключ просто по наитию, как поступил бы борелевский шаман, пока что тоже не вышло. Так что придётся, до поры до времени, обойтись без забавных записей, ограничившись hexspeak-вариантом с DEADC0DE. Но как только и если появится квантовый компьютер подходящей разрядности, тогда можно будет секретные ключи подобрать очень быстро.

[syndicated profile] lleo_feed
Кипр собрал огромное количество самых интересных людей.

Прекрасная Юля Немировская правда болгарка. Но это где-то близко.

Андрей Михайлюк — айтишник, хакер, руководитель издательских проектов, а на досуге — великолепный переводчик комиксов Нейтана Пайла «Странная планета» strangeplanetrus.

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

Местный Кипрский «антифашизм дави сионизм.

Намоленное место.

Осмотр пальм

Знаменитый Павел Мунтян, мультипликатор, автор мультиков Mr.Freeman. Мультики созданы иноагентом, разумеется.

Миша, сто лет не виделись, работали вместе на O2TV — Миша там вел свои передачи, иногда заходил в гости: https://lleo.me/o2/#2007-12-06

Писатель Кнарри (Алексей Герасимович).

Говорят, где-то в Барселоне есть отель под названием «Lleo», я там не был, но всегда себе его представлял примерно так. Но на самом деле так выглядят настоящие пафосные квартирники. Было супер, отличные люди, вместо полутора часов веселились чуть ли не два с половиной.

Я вообще люблю мимозу и сирень. Но такой мимозу, что как раз сейчас цвете на Кипре, вообще никогда не видел. У нее шарики размером с вишню!

Старинный друг Влад Платонов, ну надо же, и он тоже на Кипре. Вы все туда переехали что ли? Что случилось?

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

Алексей Шуньков, носитель мудростей и двух чипов.

Бич Кипра — гусеницы походного шелкопряда. Это такие огромные твари, которые живут коммунной в коконе и ходят цепочкой обгладывать елки. Приближаться к ним нельзя — токсичны, вызывают дикую аллергию.

Вовка, айтишник и водолаз.

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

Вид на Средиземное.

Продавцы горшков на трассе с мегафоном.

Местная знаменитая художница Северного Кипра Татьяна Пашагина подарила мне свою картину. Подозреваю портрет.

Главный тусовщик Северного Кипра Виталий НакуринМакурин. Программист, бизнесмен, музыкант, организатор, владелец бара Bar Duck и отеля RIX — офигенный кстати отель, запомните: https://rix.rest

Финалисты прогулки про Северному Кипру.

Санкт Петербург, Набережная Фонтанки, 2026 год, параллельная реальность.

А вот уже долгая пересадка в городе Вена. Перед вами — знаменитый венский шницель.

Гримасы капитализма. Уличный автомат по продаже курительного табака. Курить в Австрии разрешено.

Моя любимая селедка бисмарк херинг — не соленая, а маринованная. Как жаль, что в самолет такую банку не пустят.

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

Еще немного австрийского дизайна. Дизайн в целом не плохой.

Невероятной детализации австрийское графити.

Знаменитый дом великого венского архитектора Фредерика Хундервассера. Вообще-то его фамилия была Стовассер (Stowasser). Но в середине карьеры он узнал, что Sto по-русски означает число 100. А обратно на немецком соответственно Hundert. И поменял себе фамилию. Не шутка. Русским он не был и языка не знал, был немцем и наполовину евреем.

Хендервассер умеет оформить даже туалет.

Внутри там так. Вообще самое правильное, что надо посмотреть в Вене — это конечно музей и дома Хундервассера и собор Штефана.

Великий собор Святого Штефана — реальное чудо света.

Ну а в соборе в книге люди пишут молитвы Богу. Услышит ли?

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

В продолжение недавней темы про формирование телевизионного сигнала при помощи меандра (сигнала прямоугольной формы). Исходный импульсный сигнал генерируется микроконтроллером на частоте, значительно меньше той, на которую настроен целевой ТВ-приёмник. Однако полезный сигнал приёмник всё равно принимает – потому что на более высоких частотах приёма действуют побочные гармоники. В статье с описанием проекта приводится следующий пример: побочная гармоника, связанная с сигналом прямоугольной формы на частоте 6 МГц, может приниматься на частоте 198 МГц (это 33-я гармоника).

Известно, что прямоугольный периодический сигнал, если его записывать в терминах преобразования Фурье, раскладывается в сумму “чистых гармоник”, где частота каждой следующей кратна основной, причём, это нечётная кратность.

И вот с этим процессом отображения связано одно из самых расхожих заблуждений: мол, гармоники из записи преобразования Фурье и составляют исходный сигнал. Модель записи – переносится на моделируемый феномен. Это примерно то же самое, как если бы кто-то сказал, что в звучании слова есть буквы “акустического” письма. Возьмём современную фонетическую письменность и слово “сигнал” – есть ли в звучании этого слова “буква” “х”? Сколько “букв” “а” в звучании слова “Москва”? Где вообще буквы на спектрограмме записи звучания слова? Риторическе вопросы, ответы на которые, к тому же, зависят от языковой геолокации говорящего. Да и букв на спектрограмме нет. Запись слова – это запись слова, а не звука. Фонетически, слово не состоит из букв. Преобразование Фурье – тоже способ записи, пусть и более точный. Однако рассказы о том, что реальные ЭМ-сигналы, буквально, состоят из гармоник, а преобразование Фурье позволяет их, эти гармоники, волшебным образом вывести, кочуют из популярной статьи в популярную.

Если посмотреть на запись прямоугольного сигнала с “разложением по частотам”, полученную при помощи преобразования Фурье, то вместо одного пика на главной, расчётной, частоте, будет видно много пиков с постепенно затухающей амплитудой, которые пики, для идеального случая, соответствуют “нечётным множителям частоты”, побочным гармоникам (то есть, для идеального меандра 1 кГц – будет 3 кГц, 5 кГц и т.д.). Здесь важно учитывать, что реальный сигнал всегда очень далёк от идеального (если говорить строго, то бесконечно далёк), поэтому могут быть видны и чётные гармоники, и всякий прочий шум в частотах, но с гораздо меньшей амплитудой, вообще говоря. Впрочем, чётность здесь не так уж важна, поскольку главный вывод такой: гармоники, действительно, хорошо видны на экране анализатора спектра с преобразованием Фурье.

Почему видны гармоники? Потому что анализатор показывает такой набор гармоник разложения Фурье, которые, при их сложении, должны дать исходный сигнал, а этот сигнал – далёк от синусоиды: прибор так устроен – он не может показывать не “в гармониках”. Так что таким способом просто нельзя увидеть ничего другого. В принципе. Это равно то же самое, как и запись слов говорящего, но текстом: одно дело – звукозапись; другое дело – буквы. Чтобы точнее передавать произношение даже придумали системы фонетической транскрипции, разной степени успешности. Но увидеть что-то кроме букв или значков фонетической транскрипции – в текстовой расшифровке нельзя. Следует ли из этого обратное, что “люди говорят буквами”? Нет, не следует. Так и утверждение, что “сигнал прямоугольной формы состоит из бесконечной суммы гармоник” – не верное. Можно записать гармоники в виде суммы, которая будет приближаться к “сигналу прямоугольной формы”, но не наоборот. Заметьте, кстати, что бесконечную сумму – записать вообще не получится.

Гармоники преобразования Фурье принято записывать “синусоидами” (или “косинусоидами” – особой разницы, для наших целей, нет). Существуют ли эти непрерывные гармоники записи в самом исходном сигнале? Ведь наш исходный сигнал – прямоугольный. То есть, – во временной области, – это просто переключение уровня: плюс/минус. Как на картинке из записки про меандр и микроконтроллер – см. ниже.

Signal graph

Здесь нет никаких “синусоид”, то есть, нет никаких дополнительных гармоник. Или они есть? Потому что, как мы только что выяснили, если такой идеальный сигнал вывести на экран того или иного анализатора спектра, использующего преобразование Фурье, то гармоники там обязательно появятся, в большом количестве. Но важно не путать модель с исходным процессом. Анализатор спектра не может дать другого изображения: прямоугольный сигнал невозможно записать при помощи одной гармоники, таких гармоник потребуется много; а для точной записи идеального прямоугольного сигнала – бесконечно много. Понятно, что никакой анализатор спектра не может ни показать, ни обработать бесконечно много гармоник, а лишь некоторую их часть. Ситуация тут схожа с записью рационального числа 1/3 в виде десятичной дроби: 0.3333[3] и так далее. Но всё равно – это только запись.

Естественно, идеальный прямоугольный сигнал в реальной схеме генератора недостижим из-за инертности процессов: идеальный сигнал должен был бы “переключиться” за нулевое время, но нулевое время нельзя измерить никакими часами, в принципе. Поэтому реальные сигналы только похожи на идеальные прямоугольные. И по этой же причине, – то есть, если отказаться от требования идеальной точности, – подходит и конечное количество гармоник для записи разложения Фурье.

Почему же тогда приёмник, настроенный на побочную гармонику, принимает сигнал, который явно генерируется вместе с прямоугольными импульсами, которые действуют на существенно более низкой частоте? Потому что переключения прямоугольного сигнала воздействуют на приёмный тракт, так или иначе. Следовательно, ЭМ-колебания – создают изменения напряжения/тока в схемах приёмника. Не важно, как там устроены фильтры и что с гетеродином. Антенна всегда принимает не гармоники, а изменения ЭМ-поля, соответственно, резкие изменения уровня, в которых сконцентрирована мощность, просачиваются через фильтры, настроенные на другие частоты. Понятно, что эффективнее всего такое просачивание изменений уровня энергии происходит на частотах, предусмотренных конструкцией приёмника – приёмник так устроен, что сопротивляется именно “шумовому” воздействию, то есть, относительно легко изменяет состояние на настроенной несущей частоте, но противодействует перетеканию энергии на других частотах: это, грубо говоря, селективность приёмника. Иначе приёмник не то что не работал бы, но вообще перестал бы быть полезным, так как начал бы произвольно шуметь (хотя, возможно, сгодился бы для генерации случайных чисел). Прямоугольный сигнал, по сравнению с чистой гармоникой, концентрирует большую мощность, которая соответствует “мгновенному” изменению уровня. Конечно, бо́льшая мощность делает возможным более “широкое” просачивание. В этом и состоит фокус, в этом и причина того, что чисто “цифровые сигналы”, при прочих равных, очень “широко шумят”.

Почему тогда “чистый” синусоидальный сигнал не порождает набора гармоник в анализаторе, отображающем преобразование Фурье? Думаю, несложно догадаться о причине: это происходит потому, что для записи чистой гармоники в терминах преобразования Фурье достаточно одной этой гармоники. Но на практике, побочные утечки, – в том числе, в “чистых гармониках”, – есть всегда, какой бы формы сигнал не генерировался: меняется лишь спектральная плотность. Это лишь подчёркивает то, что преобразование Фурье – это лишь способ записи, а не свойство исходного сигнала.

Разделение функций

2026-Apr-04, Saturday 11:27
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Некоторое время назад я писал про кнопочный телефон для гиков. Чтобы он умел раздавать 4G интернет по wifi-другим устройствам, звонить (в том числе и по voLTE) и принимать SMS-ки. И больше не делал ничего. В том числе не позволял установить никаких приложений, даже j2me.

Недавно я увидел примерно такой телефон - INOI 340 PowerHub 4G и его купил. Переставил в него сим-карту, а свой старый смартфон использую как планшет без сим-карты. Если надо в интернет на улице - всегда могу включить на телефоне режим точки доступа и смартфон получит доступ в интернет.

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

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

В общем всё это работает очень даже неплохо, но есть пара неудобств. Дело в том, что телефон, используемый именно как телефон, обрабатывает два вида данных - контакты и SMS-ки. (вообще-то этот телефон еще календарь встроенный имеет, но этим пользоваться необязательно. Это уже функция более полноценного вычислительного устройства, как раз даже удобнее, что через одно устройство ты договариваешься голосом о встрече, а на другом записываешь результат в календарь).

Но этот телефон вообще не предусматривает никаких способов обмена такими данными с устройством, подключенным к нему wifi или кабелем. Кабелем он вообще умеет подключаться только в режиме USB-накопитепя, при этом его нужно выключить сначала. (что логично. За чертову уйму лет сущесвования USB-connected телефона они так и не научились обеспечивать одновременный доступ к файловой системе FAT и как к usb-storage и как к родной системе телефона. Хотя DOSEMU подобной функциональостью - подсунуть в качестве загрузочного диска настоящей DOS поддерево файловой системы хоста - обладал еще двадцать лет назад).

С контактами еще куда ни шло - там есть опции импорта/экспорта контактов в файлы vCard. Так что можно залить с хоста кучу файлов vcard (или один большой) и проимпортировать. И экспортировать из телефона заведенные в нем контакты. Он правда экспортирует их в устаревшем формате vCard 2.0 с 8-битной кодировкой и quoted-printable. Но это решаемо. Импортирует, кстати vcard 3.0 вполне успешно.

А вот с SMS-ками полная труба. Не существует никаких способов передать полученную SMS-ку на устройство, не являющееся мобильным телефоном с сим-картой. Даже AT-командыми через usb-кабель. Не видится оно как serial.

А всякие онлайн-сервисы - от Альфа-Капитал до магазина DNS обожают прислать в SMS-ке уникальную URL с нечитаемым путем содержащим то случайную последовательность алфавибно-цифровых символов, то GUID и предложить по ней пройти. А ведь в телефоне нет даже почтового клиента, чтобы переслать эту SMS по электронной почте. (и на самом деле хорошо что нет, не телефонное это дело).

Еще не хватает программы для чтения простых текстовых файлов. Зачем-то телефон при инициализации SD-карты создает каталог eBook. Но если положить туда текстовый файл, он его открыть не сможет. Нечем. Видимо, присутствовавшую в оригинальной прошивке программу чтения выпилили, чтобы найти место для точки доступа и поддержки voLTE.

А так, конечно было бы неплохо, если бы в этом телефоне имелся маленький веб-сервер, который позволял бы посмотреть принятые SMS-ки и может быть даже отправить SMS/MMS через веб-форму. Ну и контакты через CardDav синхронизировать. Авторизации никакой не надо, достаточнный уровень авторизации обеспечивет то что устройсво пустили к точке доступа, встренной в аппарат. Ну можно сделать отдельную галочку "дать подключенным устройствам доступ к SMS/контактам", которая при подключении точки доступа по умолчанию выключена и надо явным образом вклчюать.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Ракета в рамках Artemis II стартовала успешно, при этом, если по плану, то обратно астронавты должны вернуться 10 апреля – то есть, если формально смотреть по времени возвращения, то чуть-чуть не хватит до Дня космонавтики, но если учитывать накладные расходы (транспорт, разница во времени и пр.), то как раз ко Дню космонавтики успевают: можно будет на dxdt опубликовать фотографию ракеты.

Artemis II – это пристрелочный облёт Луны. Без этого, понятно, никак. Но, всё же, до высадки – ещё далеко. Очередная высадка на Луну – только запланирована на 2028 год: это Artemis IV. 2028 год – очень близок, верно, однако и глобальные обстоятельства какие-то не слишком радужные. При этом ещё и во многих крупных СМИ уже сейчас объявляют о “возвращении на Луну” – как бы, бег впереди паровоза в данной области ранее очень не приветствовался. Но посмотрим.

[syndicated profile] lleo_feed

=============== cut ===============

👏ПОБЕДА ✨СИЛА 👏СЛАВА 🇷🇺👊🅉 🇿 👏ПОБЕДА СЛАВА РОССИЯ СПАСИБО 🙋МЫ ЗОВ БОГ ХРАНИ ✨✨БОГ ХРАНИ ПАРНИ 👏СЛАВА 👏НАШИ ХРАНИ ПОБЕДА ПОБЕДА 🙏ХРАНИ МЫ РОССИЯ 👊МЫ БОЖЕ 👏🚩РОССИЯ СВО 🚩🇷🇺РОССИЯ ✨✨ЗОВ 🇿 🚀ПОБЕДА НАШИ 👏ЗОВ ПОБЕДА 👏🙏✨ПОБЕДА ЗОВ 🇿 🚩🇷🇺СЛАВА СВО 👊ПАРНИ 🇷🇺БОЖЕ НАШИ СВО 💯АНГЕЛЫ РОССИЯ ПОБЕДА СПАСИБО ЗОВ АРМИЯ 🇿 🙏СПАСИБО РОССИЯ ПОБЕДА 🙏✨✊🇷🇺НАШИ ПОБЕДА ПОБЕДА ✨🅉 🇿 ПОБЕДА 👏🙋✨ЗОВ АНГЕЛЫ ❤️ХРАНИ ПОБЕДА ✨НАШИ ХРАНИ 🚩🅉 🇿 🅉 👊ПОБЕДА 👊👏СВО ✨ХРАНИ ✨🙏✨РОССИЯ ЗОВ ✨ПОБЕДА 🅉 ХРАНИ 🚩ПОБЕДА ⭐👏🅉 ЗОВ ПОБЕДА ПОБЕДА 🅉 🇿 ПОБЕДА РОССИЯ СЛАВА ПОБЕДА ЗОВ 💪🔥РОССИЯ ПОБЕДА БОГ ПОБЕДА ✨🅉 🇿 ✊👏СВО РОССИЯ 🇿 СЛАВА БОГ ПОБЕДА СВО СПАСИБО 🙋БОГ СИЛА РОССИЯ 🇷🇺БОГ ✊СЛАВА 👏✨👊ПОБЕДА РОССИЯ 🇿 👏✨ЗОВ РОССИЯ 🔥🙋👏БЛАГОСЛОВИ АНГЕЛЫ БОГ ПАРНИ ПАРНИ СЛАВА 👏ПОБЕДА 🇿 РОССИЯ ✨ПОБЕДА ✨ПАРНИ СЛАВА РОССИЯ ✨🙋БОГ ЗОВ 🇷🇺🙏❤️🇿 ⭐

=============== /cut ===============

Представляем наш с Кириллом проект — утилиту, которая наконец-то делает мессенджер Макс абсолютно защищённым. И если бы только его! Ещё ВК, Телеграмм, Ватсап, email — любая ваша переписка с собеседником становится защищённой и недоступной для жуликов, а заодно ещё и красивой. Современная криптография, облеченная в понятную форму и недоступная никому, кроме вашего собеседника. Вот вам мой пригласительный ключ (мы нашли ради такого дела сайт, доступный в России): https://max.lleo.aha.ru/#5hcDy8yQpvKACGfRvDDXPJE4dhkDBYJTtZazDC5EjTboXw

Как это работает на практике? Вы используете сайт max.lleo.aha.ru для шифровки и расшифровки сообщений, обмениваясь с собеседником копипастами через любой канал связи, который пока ещё не заблокирован на вашем интернете. Жулики увидят только смайлики, крики души в стиле ZOV или СССР, пьяный бред, молитвы или китайские иероглифы — словарей несколько на выбор. Все остальное сделает современная криптография. Просто копируйте в окошко посланный вам текст или набирайте свой, выбрав абонента, чтобы скопировать ему. Интерфейс простой и красивый, разберётесь быстро. Как это работает в теории? Мы применяем сквозное шифрование X25519+AES-GCM, секретная часть ключа хранится только в вашем браузере (делайте бэкап своего ключа, там есть специальная кнопка в настройках), публичные ключи сами собой интегрированы в первые сообщения, затем обмен станет лаконичнее. Также Кирилл при помощи нейросети, обученной на датасете комментов моего дневника, создал smaz-словарь, идеальный для реальной переписки, и это тоже неплохо пакует текст, поэтому в реальности сообщения могут стать даже короче в шифровке, чем были — особенно лаконичны китайские иероглифы и смайлики. Страница не обменивается данными ни с каким сервером, она целиком статическая: один index.html Поэтому настоятельно рекомендуем скачать ее себе (есть специальная кнопка) и использовать локальную копию. Подробнее на Гитхабе проекта: https://github.com/kirushik/paternoster Какова история проекта? Сперва я сделал модель https://omg.lleo.aha.ru — она уже кое-как работала (и продолжит работать, если у вас старый браузер). Но было миллион недоделок. Затем подключился Кирилл, серьезно пересмотрел и усовершенствовал криптографическую механику и сделал массу остроумных решений, разработал сжатие, переделал интерфейс, облегчил процедуры обмена ключами, добавил зачем-то перевод и аудио, короче, довел проект до ума. И вчера даже получил за него первый приз на ежемесячном Берлинском хакерспейсе. Что дальше? Мы получили отличный удобный, современный и защищённый инструмент для переписок в нашем непростом мире. Которым я уже неделю пользуюсь в переписке с друзьями и вам тоже рекомендую. Дальше есть идея сделать браузерный плагин, а может даже андроид-клавиатуру, чтобы исключить даже копипаст туда-сюда. Переписывайтесь с друзьями безопасно!
Повторю ссылку (уже сразу с моим ключом): https://max.lleo.aha.ru/#5hcDy8yQpvKACGfRvDDXPJE4dhkDBYJTtZazDC5EjTboXw

2026/03/31 - Король

2026-Mar-31, Tuesday 00:00
[syndicated profile] lleo_feed
Король на самом деле был не голым,
а старым и на голову больным.
Дворцовый лекарь с галоперидолом
был первым делом обезглавлен им.

Король на самом деле был одетым
в традиционный фирменный пиджак.
Но это с вышесказанным куплетом
уже не коррелирует никак.

Король на самом деле был обутым
в ботинки лучших европейских мод.
Но был при этом напрочь ебанутым.
А вслед за ним — вся свита и народ.
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Наткнулся тут на вот такую новость https://www.techspot.com/news/111872-microsoft-plans-100-native-windows-11-apps-major.html. Оказывается, Микрософт крайне обеспокоена проблемой приложений, представляющих собой web-интерфейсы, завернутые вместе с движком от браузера. А сейчас это распространенная практика. Движок "электрон" и тому подобные.

Проблем тут несколько. В новости в основном пишут про "оптимизацию производительности". Всё-таки браузер штука громоздкая и тормозная.

Но по-моему куда важнее низкая usability веб-интерфейсов. Вообще в принципе HTML-формы это примерно эмулятор терминала IBM 3270. Т.е. все что было сделано в области GUI за последнюю четверть XX века (в том числе и тем же микрософтом) - забыто и отринуто. Что в общем-то объясняет крен в сторону мобильных приложений. Они всё-таки нативные приложения, пусть для среды андроид или iOS рассчитанной на мобильные устройства с никакой эргономикой. Но всё равно это лучше чем веб-интерфейс.

Почему-то последнюю четверть века средства для разработки пользовательских интерфейсов скорее деградировали, чем развивались. Пиком развития была вторая половина 90-х годов. Тогда windows вытеснила на массовых десктопах текстовую DOS, появились первые кроссплатформные тулкиты, велся теоретический спор между Остерхутом и Гослингом по поводу того, что правильнее - следовать правилам окружающей операционной системы или предоставлять одинаковый look & feel на всех системых.

А потом почему-то развитие застопорилось. И уже тогда было заметно что большая часть толковых программистов бегает от разработки UI как черт от ладана. Развивались базы данных, сетевые протоколы, многопоточность и многоядерность, появлялись новые языки программирования, всё что угодно, но только не UI.

В значительной степени Микрософт создала эту ситуацию сама, задвинув куда-то в задний угол свои попытки создания интерфейсных библиотек для windows. Собственно началось с microsoft foundation classes, который был привязан к объектно-ориентированному языку С++, т.е. уже сильно не универсален. Потом Net Framework который был еще хуже - привязан к CLR. А универсального тулкита, пригодного для любого языка не было. И кстати среди свободных средств разрабоки с этим тоже плохо. Есть Qt,который во-мервых объектный, во-вторых слишком монсороидальный, пытается изобразить собой уровень изоляции от операационной системы, сравнимый с браузеном. И Gtk который рождался как библиотека для одной конкретной програмы (the GIMP) и развивался как библиотека для одной конкретной среды. А может просто не слишком удачную систему абстраций выбрали.

Самое ужасное в этой ситуации в том, что развитие интерфейсов подчиняется правилу "стрелы Аримана". Люди, выросшие на кривом и неуобнои интерфейсе к нему приваыкают. И уже думают что так и надо, именно этот, привычный интерфйс и есть самый удобный, и никаким другим способом просто нельзя. Я вот не могу понять почему люди считают уродский интерфейс Телеграм удобным. А они говорят - все эти ваши Conversations, nheko и так далее - это гадость, вот телеграм....

Где-то в начале XXI века я сочинил вот такую частушку

Говорят, живет на свете
Дональд Кнут
Доктор Кнут, поверьте дети,
Страшно крут
И не важно, что он пишет
Не о том.
Главное, чтоб всё же вышел
Пятый том

Вот под "не о том" я имел в виду как раз пользовательскиек интерфейсы, которые в планах своего основополагающего труда Кнут не рассмотрел никак. Хотя существование TeX, в котором он сумел формализовать столь же эмпирическую и тесно связанную с внешним видом область человечекой деятельности. как и UI, компьютерную типографику, заставляет подозревать, что он бы справился. Он, кстати, в те годы опубликовал свой .f\vwmrc, из которого было видно что в эргономике интерфейсов он кое-что понимает. Но описать это, увы, не нашел времени.

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

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Пишут (The Register, англ.), будто на одном из спутников Starlink “что-то взорвалось”, а в результате образовались осколки на орбите. В принципе, образование осколков могло быть и результатом столкновения, но оператор утверждает, что это внутренняя проблема спутника. К тому же, не первая. На спутниках, обычно, есть чему взорваться: аккумуляторы, топливные системы и т.д.; так что – правдоподобный вариант. Но заполнение многих орбит осколками легитимных спутников, при условии возникновения лавинного эффекта, это один из сценариев закрытия ближнего космоса. В данном случае, как ожидается, осколки быстро сгорят, потеряв высоту – одно из преимуществ низкой орбиты.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Для интересующихся английским языком и математикой (при чём тут математика – будет понятно ниже): на сайте The Guardian весьма занимательная задача – нужно прочитать известные идиомы и крылатые фразы на английском, но записаны эти фразы и идиомы в виде наборов цветных прямоугольников, где размеры прямоугольника соответствуют начертанию буквы, а цвета – разные для гласных и согласных (зелёный – гласные). Например, вот так, как на картинке ниже (взято из исходной статьи).

Puzzle picture

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

Там есть цитаты из Шекспира, да и сами исходные тексты, конечно, характерны, так сказать, для британского “литературного бэкграунда”, но это очень интересно, поскольку на конкретном примере показывает, насколько важна графическая форма слова в записи и графические же отношения между словами – а это уже чисто математический аспект.

Казалось бы, это идеальная задача для ИИ/LLM. Современная ИИ/LLM, которая, якобы, на “уровне золотой медали Международной математической олимпиады”, должна легко такую задачу решить. Ведь эти системы “обучены” на огромном корпусе текстов, в котором упомянутые фразеологизмы встречаются постоянно (ну, как бы, “Весь мир – театр” и “Не всё то золото, что блестит” – куда же чаще?). Я, конечно, загрузил текст и картинку с задачкой в ChatGPT современной версии. Откровенно говоря, я, при всём моём скептическом отношении, думал, что хотя бы с парой фраз система справится. ChatGPT не угадало ни одной фразы. Так что задача даже лучше, чем можно подумать.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Вновь попадаются утверждения, что, применительно к реализациям протокола Диффи-Хеллмана, “секретные ключи никогда не покидают устройство”. Естественно, это совсем не так. В реальности – такое невозможно. Казалось бы, очевидно: симметричные секретные ключи обязательно должны “покинуть устройство”, иначе этими ключами не сможет воспользоваться другое устройство, для расшифрования или для зашифрования. Покидают устройство ключи и в случае использования протокола Диффи-Хеллмана (DH).

Да, с DH связана неверная контринтуитивная идея, в рамках которой производится сильное обобщение возможностей протокола: дело в том, что DH позволяет сторонам безопасно вычислить общий секрет, обмениваясь сообщениями через открытый канал; это верно; однако вот это понятие – “безопасно вычислить” – основано на некоторых допущениях, то есть, работает лишь в какой-то модели, от свойств которой заивисит реальный уровень безопасности. Ни в коем случае обмен ключами по DH не означает, что “секретные ключи не покидают устройство” или ” ключи есть только у клиента”! Естественно, это особенность протокола, и она всегда прямо учитывается в прикладной криптографии (там есть разные модели стойкости, в том числе, для DH).

Рассмотрим в качестве примера классический вариант DH, работающий “в остатках от деления” (“мультипликативный”). Здесь общий секрет вычисляется при помощи возведения в степень натурального числа. Общий секрет может быть получен после того, как стороны передали открытые параметры друг другу. Открытые параметры – это числа, которые каждая сторона получила на основе собственного асимметричного секрета DH. Открытые параметры – на то и открытые, что передаются через открытый канал. Обратите внимание: каждый из этих параметров содержит полную информацию, нужную для восстановления асимметричного секрета, а сеанс обмена DH – содержит полную информацию для восстановления симметричного секрета (если такой секрет генерируется только по DH, конечно). Более того, значение открытого параметра позволяет однозначно проверить, что третья сторона угадала секрет.

Стойкость протокола DH основана лишь на предположении, что третья сторона, прослушивающая канал, потратит слишком много вычислительных ресурсов на восстановление этого секрета из открытого параметра. Но если у этой третьей стороны такие вычислительные ресурсы есть, то ничто ей не мешает получить секрет – секрет содержится в открытом параметре и передаётся “за пределы устройства”. Это базовый принцип. Иначе работать схема не будет: получить тут общий секрет, не передавая тем или иным способом ключ, невозможно.

Я раньше несколько раз подробно описывал особенности DH и применение этого протокола в разных сценариях.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Воскресное чтение манускриптов. Продолжаем несколько беспорядочное чтение предисловия из “Арифметики” Диофанта. В версии манускрипта 13 века Vat.gr.191 из Ватиканской Апостольской библиотеки. В прошлый раз – изучали фрагмент про “минус на минус” и обозначение “отрицательных” величин. В этот раз – вернёмся немного назад и прочитаем про два других обозначения: про “число”, как “Число” и про “монаду” (почти как в языке Haskell).

Мы раньше уже встречались с обозначением степеней (неизвестной) у Диофанта, и там был “кубо-кубос” (κυβόκυβος – ΚΥΚ ) для шестой степени – то есть, “куб плюс куб”. Там же был и квадрат – “дунамис” (“динамис”). Случай, когда никакой степени при неизвестной нет, – это, в современных обозначениях, просто x, – Диофант описывает отдельно.

Manuscript screenshot

В манускрипте написано: “Не получившее никакого названия [степени], но содержащее в себе неопределённое количество единиц, Числом (ἀριθμός) назовём, и пусть его обозначение – ς”.

Однако обозначение ς, “сигма” тут – весьма условное: знак только похож на сигму, но это точно не сигма. Так, на данном манускрипте вообще-то используется некий S-образный знак с волной и кружочком, он в середине скриншота, а увеличенный фрагмент – дан ниже.

Manuscript screenshot

В разных источниках этот знак переменной тоже разный. Кроме “похожего на сигму”, как здесь, встречаются: Ч-подобный знак, разные “волны с точками и кружками”, иногда иные варианты (дзета и т.д.). Очень загадочный знак. Непонятно, откуда он взялся, если не из сокращения слова ἀριθμός, тем более, что такая логика хорошо укладывается в схему именования других объектов Диофантом, как “кубусы” с каппой и т.д. (см. например, T. L. Heath. Diophantus of Alexandria).

Да и на рассматриваемом здесь манускрипте Vat.gr.191 нетрудно заметить, что вместо этого странного значка, далее по тексту, часто используется как раз скорописное сокращение для слова ἀριθμός. Так что, вполне возможно, что обозначение неизвестной в первой степени и у исходного Диофанта – это ни “сигма”, ни ещё какая-то буква, а специальный знак для слова “арифмос” (откуда, понятно, происходит “арифметика”).

Теперь к монадам. Вторая часть выделенного на скриншоте текста (после странного “сигма-знака” для “арифмоса”) – это описание и название для свободного коэффициента. То есть, для константы, которая входит в уравнение, соотвествующее той или иной задаче. Константы нужно отличать от переменных: “Другой знак для неизменяемого и определённого количества единиц будет “Μ”, несущая “Ο” сверху: M̊” – написано у Диофанта. Диофант задаёт при помощи этого обозначение контекст вычислений. Не сомневайтесь – тут прямо противопоставлены “переменные” и “константы”, в соседних предложениях. Это “мю” (Μ) в обозначении свободного коэффициента – первая буква слова μονάς – “монас”/”монада”. Монада используется у Диофанта именно в смысле выделенного инструмента, позволяющего понятийно отделить место для числа, от самого числа, при преобразованиях. Если вы подумали, что монадой, по принципу использования, тут является “арифмос”, как переменная, то это не так – у Диофанта понятия вводятся из соображений выделения отличий между преобразованиями. Поэтому и степени переменной обозначаются разными именами: “динамис”, “дианамо-динамис”, “кубо-кубос”, а не как принято сейчас – коэффициентом при обозначении неизвестной. Поэтому монада тут нужна именно для фиксирования преобразования. Ну, то есть, сейчас бы, на техничном языке, сказали бы, что это “функториальный инструмент”. Почти что как монада, используемая для обёртывания, например, операций ввода в Haskell. Да и название совпадает, что, конечно, естественно: сам термин “монада” – образован от древнегреческого слова.

Некоторое время назад мы уже находили на манускриптах древние знаки “дипле”, которые сейчас используются с той же целью – для обозначения цитируемого фрагмента текста в сообщении электронной почты, например. В этот раз – в тексте Диофанта используется монада, причём, в том же понятийном ключе, как и в современном языке программирования Haskell, но не только там.

vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Съездили вчера с сестрой посмотреть на церковь Спаса Нерукотворного в Уборах (1673 г). Это в Одинцовском районе, на левом берегу Москвы-реки. Точнее, сначала мы поехали в Дмитровское (это на впадении Истры в Москву-реку) смотреть выставку картин одной современной художницы. Ну а оттуда до Уборов меньше 5 км, решили завернуть и туда. Сестра получила опыт езды по Рублево-Успенскому шоссе. А обратно поехали по Новой Риге, там привычнее.

Общий вид церкви

И на Москве-реке и на Истре сейчас в разгаре половодье. Мощь потока талой воды впечатляет. К сожалению не фотографировал, так как смартфон был занят навигацией. И GPS, и мобильный интернет работали без проблем.

А стоячие водоемы, например Живописная бухта, которую немножко видно с Новой Риги, ещё не вскрылись.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Неделю назад, 22.03.2026, я настроил в качестве основного адреса сайта dxdt.blog. Пока что под новым адресом сайт продолжает нормально работать. На веб-сервере для dxdt.ru – установлен безусловный HTTP-редирект (301), по HTTPS. Конечно, это несколько непривычно: много лет я традиционно называл сайт “dxdt.ru”, то есть, вместе с TLD; это, к сожалению, “не сработало”, что печально. Более того, dxdt.blog зарегистрирован через того же регистратора, что и вариант в .ru, так что нельзя исключать, что ЕСИА распространят вообще на все услуги и домены. Но посмотрим.

Интересно, кстати, что замена адреса тут же привела к набегу разнообразных ботов. Домен dxdt.blog я зарегистрировал несколько лет назад, но не делегировал его. Видимо, контроллеры ботов отслеживают не только новые HTTP-редиректы, но и вновь делегированные имена – этим объясняется увеличение потока прямых HTTP-запросов.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Чуть более года назад известная компания по продвижению ИИ – Anthropic – заявляла, силами своего генерального директора (CEO), что “через год 100% кода будет писать ИИ/LLM” (это цитата, по ссылке есть видео). Год прошёл. Не похоже, что доля программного кода, генерируемого ИИ, даже приблизилась к 100%. Несмотря на весь “хайп”, несмотря на “дефективность” самого показателя – “количество написанного кода”. Процитирую свою заметку, опубликованную в марте прошлого года:

“Проценты сгенерированного программного кода” – очень занимательный показатель. И не так важно, в чём его взвешивать – в строках или килобайтах командных слов. Например, можно генерировать “тавтологические строки”, которые компилятор будет просто выкидывать: if(a == b){a = b}…; или for i in [0,100]: b = 10; и т.д. Какая доля таких строк может быть в тексте программы? Сколь угодно близкая к 100% – чтобы программа хоть что-то делала, конечно, придётся написать пару вызовов, условно, каких-нибудь print “Hello!”. Заметьте, что даже корректную реализацию всякого алгоритма на ЯВУ нетрудно растянуть по “строкам кода”, что уж говорить про некорректные реализации.

Отдельный интерес тут представляет следующий административный момент: если у данных централизованных корпораций, переводящих электрическую энергию в сгенерированный текст, появился инструмент настолько хороший, что он годится для написания 100% программного кода, то зачем они этот инструмент пытаются продавать наружу, а не используют исключительно сами? Ведь захват “100% программного кода”, в современных условиях, – означает, что данная корпорация стала основой не только производства каких-нибудь стиральных машин и телевизоров, но также и авиалайнеров, а равно и микропроцессоров вообще, ибо там везде программный код лежит в основе. Можно стать “корпорацией всего”, выпуская “все приложения” самостоятельно. Казалось бы. Но нет.

Судовладельческое

2026-Mar-28, Saturday 11:06
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Приехал из Питера RIB-швертбот. Теперь вот есть у меня парусное судно, не байдарка. В упакованном виде оно, конечно, более громоздкое чем байдарка, а насколько более удобное в плане обитаемости - еще предстоит оценить.

Фотографий пока постить не буду - в квартире это разложить негде. Надо теперь дождаться, пока какое-нибудь озеро вскроется и ехать туда, испытывать.

Транспортая упаковка там была странная. В комплекте идет большая такая сумка для лодки (к счастью, не на шнуровке как у Салютов и Тайменей, а на ремнях с пряжками). Так вот в картонной коробке она лежала отдельно, а лодка отдельно. Еще отдельно почему-то лежал румпель хотя рядом были четыре карандашеобразных чехла:

  1. с рулем и швертом,
  2. с веслами, банаками, насосом и черпаком, (это, видимо положили отдельно, поскольку оно идет ко всем комплектациям, не только к парусной.
  3. с мачтой и уишбоном
  4. с парусом

И еще отдельно - тент. Он необязательный акссессуар и продавался отдельно.

Коробка, естественно, в лифт не влезла, пришлось распаковывать на первом этаже и грузить в лифт все перчисленное по отдельности. Сейчас я немного это перепаковал, получилось три упаковки - сама лодка, вместе с тентом, длинная упаковка с мачтой, парусом (который засунут туда вместе со свое упаковкой) и веслами и упаковка с плоскими деталями - банакми, швертом и рулем. Румпель, естественно пошел туда же.

Называется модель winboat 275RF Sprint Sail. Вот были у меня 20 лет назад Жигули на солярке, теперь есть виндовая лодка.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

У меня есть очень старый аккаунт Google Apps “для домена” – ещё со времён бета-тестирования, бесплатный (каким-то чудом). Вот я настраивал там TOTP, поскольку Google перестал пускать без “второго фактора” (очередной маркетинговый трюк), и обнаружил, что в панели администратора теперь есть специальный раздел “Углеродный след” (Carbon Footprint for Google Workspace). Кто бы мог подумать.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

В “Википедии” (на английском), наконец-то, прямо запретили использование выдачи LLM (тех самых “ИИ-помоев”, которые всё заливают вокруг) для генерирования и переписывания текста статей:

Text generated by large language models (LLMs) often violates several of Wikipedia’s core content policies. For this reason, the use of LLMs to generate or rewrite article content is prohibited, save for the exceptions given below. (Текст, сгенерированный LLM, часто нарушает ряд базовых политик “Википедии” для контента. По этой причине, использование LLM для генерирования или “рерайтинга” статей запрещается, кроме исключений, описанных ниже.)

А “описанные ниже” исключения – это лишь использование для проверки и исправления грамматических и орфографических ошибок, но только с проверкой изменений редактором-человеком, и использование для машинного перевода текста, но, тоже, только с последующей проверкой редактором-человеком. (Тут, конечно, смущает задача перевода, но хоть какие-то подвижки.)

Не факт, конечно, что этот запрет будет эффективен, и что он надолго. Но посмотрим.

Кошка Машка и прививки.

2026-Mar-26, Thursday 18:23
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Стаскали сегодня кошку Машку (Муську) на прививку. Но не привили. Потому что при осмотре ветеринар обнаружила у кошки покраснение десен, и сказала что прежде чем мучить кошкин иммунитет вакциной, надо бы с причинами этого дела разобраться. В результате сдали анализы на пару каких-то инфекций и утащили кошку обратно, ждать результатов. Хорошо хоть не на Нагорную её в этот раз возили а таскали в переноске пешком буквально в соседний дом.

Так и осталась кошка пока беспаспортной.

[syndicated profile] dxdt_feed

Posted by Александр Венедюхин

Уравнение Бомбелли – это кубическое уравнение x^{3}=15{x}+4. Рафаэль Бомбелли – итальянский инженер-математик 16 века. Он занимался гидротехникой. В том числе, масштабными проектами по осушению заболоченных лугов. Но в истории математики Бомбелли известен главным образом как автор трактата “Алгебра”, в котором, кроме прочего, описал объект, называемый сейчас “мнимой единицей”. Именно на примере упомянутого кубического уравнения, Бомбелли в “Алгебре” показывает, как найденные им “радикалы особого (другого) вида” можно применить для разрешения противоречий, связанных с “отрицательным числом под радикалом” в формуле Кардано.

Мы решим это знаменитое (в узких кругах) уравнение несколькими способами, выведем формулу Кардано, разберёмся, бывают ли “корни из отрицательных чисел”, поймём, откуда именно проблемные сочетания с минусом берутся в формуле Кардано, и что именно это означает, если отвлечься от бравурных заявлений вида “квадратные корни из отрицательных чисел существуют, но вам об этом не рассказывают”. А кроме того, определим, почему формула Кардано обычно бесполезна с практической точки зрения.

(Это немного дополненная версия статьи, которую я ранее опубликовал на “Хабре”.)

Общие замечания

Итак, x^{3} = 15{x} + 4. В принципе, сейчас ничего не мешает переписать уравнение как x^{3} - 15{x} - 4 = 0, но в 16 веке в Европе так делать точно не стали бы. По той простой причине, что использовалась другая нотация: уравнения нередко записывались, фактически, словами. Это требовало отдавать предпочтение положительным коэффициентам. Нет, отрицательные числа, как коэффициенты уравнений, в Италии 16 века использовали, но всё же старались их избегать, где только это возможно.

Именно в форме x^{3} = px + q уравнение и записано в трактате “Алгебра” Бомбелли. Бомбелли для обозначения степени неизвестной использует специальный знак – дугу, похожую на U, и арабскую цифру, соответствующую показателю степени. То есть, в обозначениях Бомбелли, уравнение выглядит, примерно, так: “1 U3 à 15 U1 p.4“.

Bombelli, Algebra
Скриншот издания 1579 года

Этот фрагмент взят из предложения, где Бомбелли предлагает “приравнять” куб к линейной части: “Приравняется одна неизвестная в кубе к (à) 15 неизвестным в первой степени, плюс 4“; здесь “плюс” сокращается как “p.”; то есть, на современный лад будет: “Пусть икс в кубе равно 15 икс плюс 4” – но это эквивалентно x^{3} = px + q.

У Бомбелли нет действительных чисел. Ну, как нет – нет их в современном, аналитическом смысле, как артефакта непрерывности. Бомбелли использует рациональные числа, а иррациональности (“радикалы”) присоединяет в форме a + b\cdot\sqrt{d}. Это алгебраический подход. В том числе, современный. Однако, с целью упрощения изложения, и чтобы не слишком задевать острые углы оснований математики, в статье далее подразумеваются действительные числа, без всяких дополнительных уточнений и разделения на форматы. В конце концов, действительные числа для того и придуманы, чтобы всё просто объяснялось и всё пересекалось. Если, конечно, не слишком вдаваться в арифметические детали. Арифметические детали действительных чисел – слишком сложны. Это очередной раз подчёркивает то, что действительные числа гораздо труднее комплексных – ведь в присоединении мнимой единицы нет тех фундаментальных сложностей, которые возникают на пути строгого построения чисел действительных (последовательности, сходимость и т.д.).

Вернёмся, впрочем, к уравнению Бомбелли. Будем придерживаться исходной формы записи, без приравнивания нулю, но с иксами, а формулы Кардано и Виета – выведем тоже для уравнения в исходной форме. Тем более, что это влияет только на знаки, а положительность/отрицательность – можно “переключать” без проблем.

Вообще, если бы мы переписали наше уравнение как x^{3} - 15x - 4 = 0, то мы получили бы лишь уравнение, эквивалентное исходному. Это только кажется, что мы просто перенесли составляющие записи, ничего не поменяв. Изменения есть. Особенно, с точки зрения программирования: у нас получается другой алгоритм вычислений – другой порядок операций, меняется алгоритмический смысл знака равенства (потому что “вычисления с обеих сторон”: сравните a = b и a – b = 0).

Если говорить строго, то x^{3} - 15x - 4 = 0 и x^{3} = 15x + 4 – это два уравнения, которые эквивалентны лишь при некоторых дополнительных условиях. То, что сейчас эти условия подразумеваются автоматически, не отменяет процесса преобразования. И уж тем более эти уравнения различны, если рассматривать их как формулы: попробуйте реализовать в виде программы, с типом float.

Тут, для полноты картины, необходима дежурная оговорка: форму кубического уравнения x^{3} = px + q называют “канонической” (тут нет монома с квадратом – в этом смысл); всякое кубическое уравнение с одной неизвестной можно привести к такой форме при помощи линейной замены переменной (предварительно поделив на коэффициент при x^{3}, конечно). Однако нам повезло: мы сразу изучаем x^{3} = 15{x} + 4 и проблем с приведением у нас быть не может в принципе, а данная оговорка нужна лишь для того, чтобы объяснить универсальность полученных ниже формул для нахождения корней.

Screenshot with two cubic and line
Графики с корнями. Нарисовано при помощи desmos.com

Наше уравнение имеет очевидный рациональный корень 4. Это основная его хитрость. Выбранная Бомбелли форма записи позволяет прямо рассматривать проблему как пересечение двух графиков: кубической параболы x^{3} и прямой 15x + 4 – см. иллюстрацию. Но как быстро понять без картинки, что есть корень 4?

Будем подбирать целый корень. Он должен делить свободный коэффициент (теорема о рациональных корнях). То есть, должен делить 4. Число 4 делится на 1, на 2 и на 4. Единица, очевидно, не подходит. Два – тоже (получаем 8 != 34); а вот 4 – подходит, так как 4^{3} = 64 = 15*4 + 4.

Всего корней три, они все действительные (как это определить? например, по значению дискриминанта, но сейчас – нам это не важно, а один действительный корень всегда есть). Чтобы найти другие корни, поделим уравнение на (x - 4). Можно делить “столбиком”, а можно ускорить процесс и прикинуть в уме множители, которые нужно вынести за скобки, чтобы сохранилось исходное уравнение. Подставим (x - 4) в обе части уравнения, сразу подбирая множители:

x^{2}\cdot (x - 4) = -4x\cdot(x - 4) - 1\cdot (x - 4)

x^{3} - \cancel{4x^{2}} = \cancel{-4x^{2}} + 1\stackrel{\Large{5}}{\cancel{6}}x - \cancel{x} + 4

x^{3} = 15x + 4\qquad /(x -4)

x^{2} = -4x - 1

x^{2} + 4x + 1.

Ответ – результат деления на (x - 4): x^{2}=-4x-1.

Проверяем, переписав с другими знаками:
(x - 4)(x^{2} + 4x + 1) = x^{3} - 15x - 4.
Сходится.

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

Квадратное уравнение

Корни квадратного уравнения x^{2} + 4x + 1 = 0 легко найти по привычной школьной формуле (которая, кстати, нам ещё несколько раз пригодится ниже):

(\alpha_{1}, \alpha_{2}) = \frac{-4 \pm \sqrt{4^{2} - 4}}{2} = \frac{-4 \pm 2\sqrt{3}}{2} = (-2 + \sqrt{3}, -2 - \sqrt{3}).

Итак, мы нашли три корня исходного кубического уравнения (4, -2 + \sqrt{3}, -2 - \sqrt{3}). Они все действительные. При этом, скажем, итальянских математиков 16 века из этих трёх корней интересовал только рациональный положительный корень 4. Несмотря на то, что два иррациональных корня в записи с радикалами идеально укладываются в схему представления таких чисел, изложенную в трактате Бомбелли, для этого же уравнения Бомбелли всё равно выделяет только один целый рациональный корень, проигнорировав свойства, которые вытекают из наличия двух других отрицательных корней с иррациональностями.

Бомбелли для нахождения единственного корня 4 использует формулу Кардано и сложное расширение операций со знаками. Из чего и делается исторический вывод о первом появлении комплексной, “мнимой единицы”.

Мы уже нашли все три корня простым способом, а формулу Кардано вообще не применяли. В чём тогда смысл этой формулы?

Смысл её в том, что она – универсальная. То есть, работает для любого кубического уравнения. Ну, как работает – если говорить про практику, то формально работает, но с большими оговорками. Запрограммировать её в переменных с плавающей точкой универсальным способом вообще невозможно. Все эти оговорки сейчас и проявятся. Формулу Кардано мы выведем ниже, а пока попробуем применить уже готовую формулу к нашему знаменитому уравнению. Формула Кардано:

x = \sqrt[3]{\frac{q}{2} - \sqrt{\frac{q^{2}}{4} - \frac{p^{3}}{27}}} + \sqrt[3]{\frac{q}{2} + \sqrt{\frac{q^{2}}{4} - \frac{p^{3}}{27}}}.

У нас уравнение вида x^{3} = px + q, где p = 15, q = 4. Подставляем:

x = \sqrt[3]{\frac{4}{2} - \sqrt{\frac{4^{2}}{4} - \frac{15^{3}}{27}}} + \sqrt[3]{\frac{4}{2} + \sqrt{\frac{4^{2}}{4} - \frac{15^{3}}{27}}}

x = \sqrt[3]{2 - \sqrt{4 - 125}} + \sqrt[3]{2 + \sqrt{4 - 125}}

x = \sqrt[3]{2 - \sqrt{-121}} + \sqrt[3]{2 + \sqrt{-121}}.

Как говорил персонаж одного советского мультфильма: “это что же?!”. Для уравнения с очевидным целым корнем мы получили бесполезное выражение с отрицательным числом под квадратным радикалом, которое непонятно как вообще использовать. Да. И, к сожалению, такое будет происходить слишком часто – “хорошие” числа получаются только для кубических уравнений с одним действительным корнем (у нашего примера – таких корней три). Зато мы только что вывели тот самый случай, едва ли не более знаменитый, чем исходное уравнение: под знаком радикала – минус 121.

Минус сто двадцать один

Почему так вышло? Банальный ответ столь же прост, как и сама формула Кардано: отрицательное число получилось потому, что так написано в формуле. Но, всё же, предмет алгебры – это изучение структур (алгебраических, да). Так что тут должна быть какая-то структурная причина. Причина такая есть, и она, как ни странно, вовсе не в комплексных числах.

Разберёмся, откуда возникает этот фрагмент формулы под радикалом:

\frac{q^{2}}{4} - \frac{p^{3}}{27}.

Это ни что иное, как преобразованное значение дискриминанта квадратного уравнения (ну или формула для корней, как хотите). Фактически, тут всё то же, что и в школьной формуле. (Заметьте, что это же выражение прямо связано с дискриминантом уравнения кубического.) В процессе вывода формулы Кардано возникает квадратное уравнение в “переменных замены”, которые оказываются его корнями. Вот это уравнение:

\gamma^{2} - q\gamma + \frac{p^{3}}{27} = 0.

Здесь q, p – коэффициенты исходного кубического уравнения.

Если переписать привычную всем формулу для корней квадратного уравнения, то получится следующее равенство для пары корней:

\alpha_{1,2} = \frac{q \pm \sqrt{(-q)^{2} + 4p}}{2}.

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

ax^{2} + bx + c = 0

\alpha_{1,2} = \frac{-b \pm \sqrt{D}}{2a}

D = b^{2} - 4ac

Но в нашем случае все уравнения приведены (поделили на a, это всегда можно сделать, так как у нас, по условию задачи, a != 0), поэтому коэффициент при x^{2} равен единице. Формула для дискриминанта занесена в общее выражение, b = -q, c = \frac{p^{3}}{27}, и выполнены соответствующие преобразования.

Получаем:

\alpha_{1,2} = \frac{q \pm \sqrt{(-q)^{2} - 4\frac{p^{3}}{27}}}{2} =

\frac{q}{2} \pm \frac{1}{2}\sqrt{(q)^{2} - 4\frac{p^{3}}{27}} =

\frac{q}{2} \pm \sqrt{\frac{(q)^{2}}{4} - \frac{1}{\cancel{4}}\frac{\cancel{4}p^{3}}{27}} =

\frac{q}{2} \pm \sqrt{\frac{q^{2}}{4} - \frac{p^{3}}{27}}.

Это ещё не формула Кардано, это всё ещё формула для корней квадратного уравнения. И под радикалом здесь у нас дискриминант, поделённый на два. Перестановка радикалов – влияет только на знак. Поэтому примем, что минус под квадратным корнем в формуле Кардано образуется из-за отрицательного дискриминанта квадратного уравнения. Это и есть структурная причина.

Отрицательный дискриминант квадратного уравнения. Что это означает? Многие скажут: “это означает, что корней у квадратного уравнения нет”. Чуть более продвинутые уточнят, что корни есть, но они комплексные. И то, и другое – верно. Интерпретация зависит от того, над какими числами взято уравнение. Нам сейчас важно сосредоточиться на варианте с действительными числами. Потому что комплексных – у нас ещё нет.

И вот, если рассматривать квадратное уравнение над действительными числами, то отрицательный дискриминант означает, что действительных корней нет. Просто потому, что квадрат действительного числа не может быть отрицательным. А не может он быть отрицательным по определению. Это очень важный момент. “Положительная определённость” квадрата требуется для того, чтобы ввести полноценный, линейный порядок, когда одно число “меньше” другого (например, меньше нуля), а получившееся отношение порядка – совместимо с арифметикой в действительных числах. Так что – нет, не бывает никаких “квадратных корней из отрицательных действительных чисел”, да и быть не может – иначе числа перестали бы быть действительными.

Самое занимательное тут то, что, в этом же смысле, и квадрат никакого комплексного числа не может быть меньше нуля! Но по другой причине: потому, что в комплексных числах как раз нет отношения порядка, аналогичного тому, которое есть в действительных числах. Нельзя сказать, что вот это комплексное число – “отрицательное”, меньше нуля, а это – “положительное”, больше нуля. Строго говоря, всякие способы “сравнения” комплексных чисел можно придумать, – например, по значению модуля, по алфавиту записи, ещё как-то, – но никакой из этих способов не будет совместим с арифметической структурой комплексных чисел, соответственно, не будет задавать линейный порядок.

Почему же тогда говорят, что “квадрат комплексного числа может быть равен числу, которое меньше нуля”? Запутать хотят. “Кручу-верчу, обмануть хочу!”. Ну или это такое упрощение, вводящие в заблуждение, как и привычка писать i = \sqrt{-1} (это неверно! не пишите так, даже если у вас есть лицензия на “кручу-верчу”). Ловушка состоит в том, что квадрат тут – это не чисто действительное число. То есть, число рассматривается только как действительное, но операция – проводится в комплексных числах, и результат её – комплексное число. Кроме того, понятие об обратном по сложению – то есть, о числе, сумма которого с данным равна нулю, – вовсе не эквивалентно понятию “меньше” и понятию “больше”.

Кардан по формуле

Вернёмся к истории с кубическими уравнениями и формулой Кардано. Итак, отрицательное значение под радикалом образуется потому, что нет действительных корней у квадратного уравнения. Это структурная причина. Структурная она потому, что нужны специальные сигнатуры, дабы не действительные корни превратить в действительные (рациональные, на самом деле) коэффициенты квадратного уравнения: никто ведь не отменяет того, что коэффициенты равны сумме и произведению корней, но корней, при этом, как бы, нет. Зато есть структура над корнями, переставляющая их.

Значение \sqrt{-121} – точно так же не есть действительное число: ведь оно не является ни отрицательным, ни положительным, ни нулём. Это ключевой момент, который полностью верен для современных комплексных чисел. Почему ни отрицательным, ни положительным? Потому что, по определению, отрицательное – это меньше нуля; положительное – это когда нуль меньше числа. Но раз нет подходящего отношения порядка, то нет и отрицательных/положительных. Это всё отмечено у Бомбелли – буквально, он пишет, что “такой радикал не может быть назван ни положительным, ни отрицательным”. В его “Алгебре” это означало, что у значения вида \sqrt{-121} есть особенная сигнатура, а поэтому нужно ввести дополнительную операцию по работе с этой сигнатурой, что в истории математики и принято называть изобретением “мнимой единицы”.

Именно из наблюдения, что квадрат всякого действительного числа положителен, а комплексные числа не могут быть ни “отрицательными”, ни “положительными”, следует вывод, что нельзя относить комплексные числа вида a + 0\cdot{i}, – то есть, с нулём в мнимой части, – к действительными числами. Это неверно. Тот факт, что действительные числа можно “поместить” в комплексные, не делает числа a + 0\cdot{i} – действительными.

Выведем формулу Кардано для кубических уравнений, используя в качестве отправной точки нашу запись в форме x^{3}=px+q.

План: сделаем замену x = u + v; подставим u + v в исходное уравнение и распишем “куб скобки”; увидим формулы Виета; получим квадратное уравнение для суммы переменных подстановки. А именно (много букв, основные шаги – пронумерованы, пояснения даны ниже):

(u + v)^{3} = p(u + v) + q

(u^{3} + 3u^{2}v + 3v^{2}u + v^{3}) = p(u + v) + q

(u^{3} + v^{3}) + 3uv(u + v) = p(u + v) + q

\Downarrow

3uv = p \qquad(1)

(u^{3} + v^{3}) = q \qquad(2)

3^{3}u^{3}v^{3} = p^{3} \qquad(3)

u^3v^3 = \frac{p^{3}}{27} \qquad(4)

u^3v^3 = \frac{p^{3}}{27} \qquad(5)

(u^{3} + v^{3}) = q \qquad(6)

\gamma^{2} + q\gamma + \frac{p^{3}}{27} = 0 \qquad(7)

(u^{3}, v^{3}) = \frac{q}{2} \pm \sqrt{\frac{q^{2}}{4} - \frac{p^{3}}{27}} \qquad(8).

Пояснения:
расписав “куб скобки”, собираем кубы и выносим общий множитель 3uv, получив сумму u + v, аналогично правой части;
в (1),(2), исходя из структуры получившейся формулы, выписываем соотношения для u,v и p,q;
преобразуем часть для p в (3), (4); видим формулы Виета для квадратного уравнения в (5),(6);
(7),(8) – вывод соответствующего квадратного уравнения, корнями которого являются куб u и куб v (новая переменная – \gamma).

Обратите ещё раз внимание на (1): равенство 3uv = p потребуется нам дальше, когда мы попробуем применить формулу Кардано к современным комплексным числам, чтобы найти все корни уравнения по этой формуле.

Если корни полученного квадратного уравнения переставлять местами, то это меняет только знак перед радикалом. У нас основная подстановка – сумма. Поэтому можно выбрать любой порядок радикалов. Итак, вспоминаем, что y = u + v, и мы получили выражение для кубов u и v. Добавив кубические корни, можно (ещё раз) записать итоговую формулу Кардано:

x = u + v = \sqrt[3]{\frac{q}{2} + \sqrt{\frac{q^{2}}{4} - \frac{p^{3}}{27}}} + \sqrt[3]{\frac{q}{2} - \sqrt{\frac{q^{2}}{4} - \frac{p^{3}}{27}}}.

Теперь должно быть понятно, где именно при выводе формулы Кардано используется квадратное уравнение и откуда там дискриминант под квадратным корнем. Заметьте, что упомянутое квадратное уравнение записано в тех же коэффициентах, что и исходное кубическое, но коэффициент q – перешёл на роль суммы корней квадратного уравнения, а p – теперь внутри формулы для произведения данных корней. В исходном кубическом уравнении – q это произведение (трёх) корней, а p – сумма попарных произведений (с точностью до знака). То есть, тут происходит спуск от третьей степени ко второй, с сохранением симметрий. Оказывается, коэффициенты кубического уравнения p и q должны соответствовать соотношениям для квадратного. Именно по этому признаку выбираются сочетания значений кубических корней, ведь под каждым кубическим радикалом, в итоге, скрывается три комплексных значения – мы отдельно разберёмся с этим ниже.

Кстати, здесь кроется примерно половина классической теории Галуа: на этом спуске с необходимым сохранением симметрий – возникает препятствие между пятой и четвёртой степенями уравнений, делающее запись в радикалах невозможной для произвольных уравнений пятой степени. Впрочем, увидеть это не так-то легко, когда не знаете куда смотреть. Не удивительно, что на первый шаг к пониманию данной структуры в максимальной общности потребовалось ещё более двух веков. Но это тема для отдельной статьи. Вернёмся к формуле Кардано и квадратным уравнениям.

Итак, здесь фигурируют два корня квадратного уравнения, которое возникает в процессе вывода формулы Кардано, потому что мы сделали замену x = u + v. В этом квадратном уравнении:
коэффициент q при \gamma – сумма корней;
\frac{p^{3}}{27} – произведение корней.

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

Минус на минус-минус

Что делать с минусами под радикалами? Прежде всего, нужно понять, для чего выводились исходные формулы. Что здесь означает “решить уравнение”? Это означает, что нужно найти алгоритм для некоторого калькулятора, который позволит в результате операций над коэффициентами – получить корни. Например, при решении линейного уравнения
3x = 6
– потребуется деление:
x = \frac{6}{3}.

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

Не во всех случаях квадратного уравнения этот калькулятор будет работать. Но для таких уравнений можно сказать, что корней у них нет – и это будет правильным, достаточным и полным: у них нет действительных корней. А вот для кубических – ситуация оказывается сложнее. На современном языке изменение формулируется так: уже для того, чтобы находить действительные корни кубических уравнений с рациональными коэффициентами, калькулятор, выполняющий базовые арифметические операции, а также извлечение кубических и квадратных корней, должен уметь считать в комплексных числах. Однако для нашего уравнения Бомбелли – можно ограничиться добавлением операции работы с сигнатурой “нового радикала”. Именно так поступил Бомбелли.

Дело в том, что отрицательные числа под радикалами можно оставить положительными, перенеся изменение знака на сигнатуру. Посмотрим на \sqrt{-121} внимательнее. Нужны ли здесь комплексные числа? 121 = 11^{2}. То есть, как бы, ничего сложного, если бы не минус.

Перепишем этот минус как сигнатуру под условным названием “минус-минус”. Это будет такая сигнатура, которая при умножении на саму себя даст “минус”, то есть, сделает число меньшим, чем нуль. Как умножение на “минус единицу”. Сразу обозначим эту сигнатуру буквой i. Если теперь такую сигнатуру прицепить к 121 под радикалом, то получаем:
(i\cdot 11)^{2} = (i\cdot i)\cdot(11\cdot 11) = -121.

Теперь осталось описать правила операций с данной сигнатурой и можно добавить соответствующую функцию к нашему калькулятору.

Cамый цитируемый фрагмент из «Алгебры» Бомбелли – описание правил умножения с сигнатурой “новых радикалов”, а именно, если в современных обозначениях:

(+)\cdot(+i) = +i

(-)\cdot(+i) = -i

(+)\cdot(-i) = -i

(-)\cdot(-i) = +i

(+i)\cdot(+i) = -

(+i)\cdot(-i) = +

(-i)\cdot(+i) = +

(-i)\cdot(-i) = -

Это означает, например, что -2\cdot i = -2i, а -2i\cdot 3i = 6. Для работы с формулой Кардано нам достаточно этой “таблицы умножения”.

Заметьте, что именно эта таблица и делает “новые радикалы” Бомбелли такими, что про них нельзя сказать “ни больше, ни меньше” – “ни положительное, ни отрицательное”. Воспользуемся снова современными обозначениями и будем считать, что обычные “плюсы” и “минусы” – это +1 и -1, и присоединим сюда “необычные” +i и -i. Мы получили кортеж: {+1, -1, +i, -i}. Теперь мы хотим ввести отношение порядка (положительное/отрицательное), сохраняющее привычную арифметику. Положим, что -i \lt 0 (отрицательное), а +i \gt 0 (положительное). Тогда i \cdot i должно быть положительным, больше нуля. Однако, согласно таблице умножения выше, (+i)\cdot(+i) – это “минус”, то есть, (+i)\cdot(+i) = -1. Следовательно, -1 \gt 0, то есть, -1 – положительное. Но тогда -i = -1\cdot(+i) должно быть тоже положительным, ведь мы приняли, что +i положительное и нашли, что -i – положительное. Но тогда +i – отрицательное. Следовательно, +i – отрицательное. Но мы приняли, что +i – положительное. Противоречие.

В общем, получается даже целый клубок противоречий, если пытаться ввести тут привычные отрицательные и положительные числа. Ещё одно доказательство того, что никаких квадратных корней из отрицательных чисел быть не может. Однако, добавив к нашему калькулятору таблицу преобразований сигнатуры i при умножении, мы можем успешно вычислять наши “новые радикалы”. Естественно, i – это “мнимая единица” в современном понимании. То есть, корень X^{2} + 1, присоединённый к действительным числам.

В алгоритме вывода формулы Кардано, который мы рассмотрели выше, фигурируют два корня квадратного уравнения, возникающего в процессе преобразований. В этом квадратном уравнении коэффициент q при \gamma – это сумма корней (с точностью до знаков), а \frac{p^{3}}{27} – это произведение корней. Именно из этих соотношений возникают полные выражения под кубическими радикалами в формуле. Воспользуемся сигнатурой i:

x = \sqrt[3]{2 - \sqrt{-121}} + \sqrt[3]{2 + \sqrt{-121}}

x = \sqrt[3]{2 - i11} + \sqrt[3]{2 + i11}.

Проверяем:

p = 15

(2 - i11) \cdot (2 + i11) = 4 + 121 = 125 = \frac{15^{3}}{27}

q = 4

(2 - i11) + (2 + i11) = 2 - \cancel{i11} + 2 + \cancel{i11} = 4.

Сходится. Кто бы, как говорится, сомневался – это же просто формулы Виета для квадратного уравнения.

Найдём рациональный корень 4 нашего исходного уравнения при помощи формулы Кардано, используя только что определённую сигнатуру i:

x = \sqrt[3]{2 - \sqrt{-121}} + \sqrt[3]{2 + \sqrt{-121}}

x = \sqrt[3]{2 - i11} + \sqrt[3]{2 + i11}

x = (2 - \cancel{i}) + (2 + \cancel{i}) = 2 + 2 = 4.

Возникает резонный вопрос: откуда взялось 2 \pm i? Эти два числа, куб которых равен 2 \pm i\sqrt{121}, встречаются и у Бомбелли. Но, конечно, не как комплексные числа, а как специальные радикальные выражения, содержащие сигнатуры i.

Современный универсальный способ извлечения кубических корней из комплексных чисел – это формула Муавра. У Бомбелли её не было: формула опубликована только в 18 веке. Но и не страшно, поскольку данный способ здесь практически бесполезен – он слишком громоздкий и требует понимания свойств трансцендентных, тригонометрических функций (мы вернёмся к таким функциям ниже, но без всяких комплексных чисел).

Хорошо, допустим, что формулы Муавра – нет, а если бы и была, то она оказалось бы бесполезна. Что делать? Можно пойти другим, более привычным, путём: попробовать угадать. Скорее всего, именно так и действовал Бомбелли.

Нам нужно найти выражение вида a + ib, куб которого равен 2 + i11, при этом i – это сигнатура, операции с которой проводятся по правилам, описанным выше в “таблице умножения”.

(a + ib)^{3} = a^{3} + 3a^{2}ib + 3ai^{2}b^{2} + i^{3}b^{3} =

a^{3} + 3a^{2}ib - 3ab^{2} - ib^{3} =

(a^{3} - 3ab^{2}) + i(3a^{2}b - b^{3}).

Здесь выражение записано в форме, совпадающей с искомой – a + ib. Подставляем значение 2 + i11:

(a^{3} - 3ab^{2}) + i(3a^{2}b - b^{3}) = 2 + i11

\Downarrow

(a^{3} - 3ab^{2}) = 2

(3a^{2}b - b^{3}) = 11.

Пробуем минимальные натуральные числа – срабатывает с a = 2, b = 1:

(2^{3} - 3\cdot2\cdot1^{2}) = 8 - 6 = 2

(3\cdot2^{2}\cdot1 - 1^{3}) = 12 - 1 = 11.

Искомое выражение: 2 + i\cdot 1. Сопряжённое значение подбирается так же. Это было нетрудно:

(2 + i)^{3} = 2 + i11

(2 - i)^{3} = (2 - i)\cdot(4 - i4 - 1) =

8 - i8 - 2 - i4 - 4 + i = 2 - i11.

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

Так как в труде Бомбелли не комплексные числа, а только сигнатура i, то он логично ограничивается нахождением единственного корня – положительного числа 4.

Комплексные сложности

Если ввести мнимую единицу, даже в качестве сигнатуры, то вместе с ней придут и так называемые «корни из единицы», разных степеней. То есть, в случае с кубом, появляется ещё два выражения, отличных от действительной единицы, куб которых равен действительной единице (1), если рассматривать i как сигнатуру. Это корни третьей степени из единицы. Обозначим такой корень \zeta. Тогда \zeta^{3} = 1. В современном понимании, корни из единицы – это комплексные числа, но обратите ещё раз внимание на то, что, строго говоря, “единица” тут будет тоже комплексной: 1 + i\cdot 0. Корни третьей степени:

\zeta = -\frac{1}{2} + \frac{i\sqrt{3}}{2}, \quad \zeta^2 = -\frac{1}{2} - \frac{i\sqrt{3}}{2}.

Проверим для одного из корней:

(-\frac{1}{2} + \frac{i\sqrt{3}}{2})^{3} =

-\frac{1}{8} + \frac{3}{4}\cdot\frac{i\sqrt{3}}{2} + \frac{3}{2}\cdot\frac{3}{4} - \frac{3}{4}\cdot\frac{i\sqrt{3}}{2} =

-\frac{1}{8} + \cancel{\frac{3i\sqrt{3}}{8}} + \frac{9}{8} - \cancel{\frac{3i\sqrt{3}}{8}} =

-\frac{1}{8} + \frac{9}{8} + i0 =

\frac{8}{8} + i0  = 1 + i0.

Теперь-то у кубического корня получается три значения! Потому что:
(\zeta\alpha)^{3} = \zeta^{3}\alpha^{3} = 1\alpha^{3}
– то есть, умножаем на кубический корень из единицы, и на квадрат кубического корня из единицы.

Поэтому для современного читателя, знакомого с комплексными числами, всё оказывается сильно сложнее, без всяких формул Муавра. В формуле Кардано – два кубических корня. У кубического корня из комплексного числа – три значения. В случае нашего уравнения, чтобы эти значения получить, нужно взять 2 + i (или 2 - i), как комплексное число, и умножить на кубические корни из единицы (в степени 1 и в степени 2). И мы получаем девять вариантов ответа для кубического уравнения. Ещё одна “странность” формулы Кардано:

{u} + {v}, \quad {u} + \zeta{v}, \quad {u} + \zeta^{2}{v},

\zeta{u} + {v}, \quad \zeta{u} + \zeta{v}, \quad \zeta{u} + \zeta^{2}{v},

\zeta^{2}{u} + {v}, \quad \zeta^{2}{u} + \zeta{v}, \quad \zeta^{2}{u} + \zeta^{2}{v}.

Да, один из этих вариантов даёт значение 4 ({u} + {v}), его использовал Бомбелли, пропустив остальные. Но если мы знаем о комплексных числах, то как поступить с другими значениями, чтобы верно выбрать два недостающих корня? Нужно выбрать те, которые удовлетворяют 3uv = p. Если помните, то это соотношение между p и значениями под кубическими радикалами использовалось на шаге (1) в выводе формулы Кардано (см. выше). Дело в том, что после подстановки u + v формула 3uv = p следует из исходного уравнения (обратите внимание на принятые условия: переменные не равны нулю и т.д.), однако в обратную сторону – это верно только тогда, когда u, v удовлетворяют формуле 3uv = p. Следовательно, подходят только три сочетания значений кубических корней из девяти перестановок:

u + v, \quad \zeta {u} + \zeta^{2}{v}, \quad \zeta^{2} {u} + \zeta {v}.

Помимо того, что данное наблюдение имеет большое значение для классической теории Галуа, оно ещё и позволяет вычислить по формуле Кардано два других корня нашего уравнения, которые не рассматривает Бомбелли:

(-\frac{1}{2} + \frac{i\sqrt{3}}{2})(2 + i) + (-\frac{1}{2} - \frac{i\sqrt{3}}{2})(2 - i) =

(-1 - \frac{\sqrt{3}}{2} + i(-\frac{1}{2} + \sqrt{3})) + (-1 - \frac{\sqrt{3}}{2} + i(\frac{1}{2} - \sqrt{3})) =

(-1 - \frac{\sqrt{3}}{2} + \cancel{i(-\frac{1}{2} + \sqrt{3})}) + (-1 - \frac{\sqrt{3}}{2} + \cancel{i(\frac{1}{2} - \sqrt{3})}) =

-2 - \sqrt{3},

(-\frac{1}{2} - \frac{i\sqrt{3}}{2})(2 + i) + (-\frac{1}{2} + \frac{i\sqrt{3}}{2})(2 - i) =

(-1 + \frac{\sqrt{3}}{2} + i(-\frac{1}{2} - \sqrt{3})) + (-1 + \frac{\sqrt{3}}{2} + i(\frac{1}{2} + \sqrt{3})) =

(-1 + \frac{\sqrt{3}}{2} + \cancel{i(-\frac{1}{2} - \sqrt{3})}) + (-1 + \frac{\sqrt{3}}{2} + \cancel{i(\frac{1}{2} + \sqrt{3})}) =

-2 + \sqrt{3}.

Начертив очередное подтверждение тому, что алгебра – это искусство сокращения переменных, мы вычислили два недостающих корня и показали полноту формулы Кардано (или Кардана?).

Трансцендентная помощь

Говорят, из континуума можно достать всё что угодно. Например, можно достать такой процесс разрезания геометрических объектов, который позволяет действительный 3D-шар разрезать на два шара, равновеликих исходному. Но это магия слишком высокого уровня. Мы же попробуем ограничиться косинусами, чтобы на пути вывода формулы решения кубического уравнения с тремя рациональными корнями обойтись и без комплексных чисел, и без “квадратных корней из отрицательных”. Для этого нужна тригонометрия и метод Виета.

Формулы Виета уже упоминались выше. Однако Виет предложил ещё и универсальный способ решения кубического уравнения, с рациональными корнями, без формулы Кардано и без необходимости использования комплексных чисел. Но список доступных операций “калькулятора” расширяется: потребуются трансцендентные функции, а именно, cos (и обратная к косинусу – arccos).

Основная идея метода Виета состоит в использовании формулы для косинуса тройного угла. Да, тройной угол тут не просто так – кубическое уравнение прямо связано с задачей трисекции угла, это отдельно отмечено и у Бомбелли.

Запишем нужную формулу для косинуса:

\cos(3\cdot \varphi) = 4\cdot\cos^{3}(\varphi) - 3\cdot\cos(\varphi).

Вспоминаем наше кубическое уравнение:

x^{3} = px + q.

Пусть теперь

x = k\cdot\cos(\varphi)

k^{2} = \frac{4p}{3}.

Зачем нужно соотношение для k^{2}? Оно гарантирует, что на нужном шаге можно будет вынести за скобки общий множитель, содержащий квадратный корень. Обратите внимание, что (\sqrt{a})^{3} = \sqrt{a}\sqrt{a}\sqrt{a} = a\sqrt{a}, а у нас, как раз, кубическое уравнение.

Если подставить x = k\cdot\cos(\varphi) в исходное уравнение, то получим:

{k}^{3}\cdot\cos^{3}{(\varphi)} = {p}\cdot{k}\cdot\cos{(\varphi)} + {q}.

Перепишем исходную формулу для косинуса тройного угла, чтобы подставить \cos^{3}{(\varphi)} в получившееся выражение:

\cos(3\cdot \varphi) = 4\cdot\cos^{3}(\varphi) - 3\cdot\cos(\varphi)

4\cdot\cos^{3}(\varphi) = \cos(3\cdot \varphi) + 3\cdot\cos(\varphi)

cos^{3}(\varphi) = \frac{1}{4}\cdot(\cos(3\cdot \varphi) + 3\cdot\cos(\varphi)).

Подставляем:

\frac{k^{3}}{4}(\cos{(3\varphi)} + 3\cos{\varphi}) = {p}{k}\cos{(\varphi)} + q

\frac{k^{3}}{4}\cos{(3\varphi)} + \frac{3{k}^{3}}{4}\cos{\varphi} = {p}{k}\cos{(\varphi)} + q

\frac{k^{3}}{4}\cos{(3\varphi)} + \frac{3{k}^{3}}{4}\cos{\varphi} - {p}{k}\cos{(\varphi)} = q

\frac{k^{3}}{4}\cos{(3\varphi)} + {(\frac{3{k}^{3}}{4} - {p}{k})}\cos{(\varphi)} = q.

Мы хотим получить формулу, выражающую корни через тройной угол, соответственно, нужно, чтобы множитель {(\frac{3{k}^{3}}{4} - {p}{k})} при \cos{\varphi} был равен нулю. Отсюда получаем:

\frac{3{k}^{3}}{4} - {p}{k} = 0

\frac{3{k}^{3}}{4} = pk

{k}^{3} = \frac{4pk}{3}.

Делим на k и вот – искомый результат:

{k}^{2} = \frac{4p}{3}.

Мы вновь получили соотношения для подстановки в исходное уравнение:

x = k\cdot\cos(\varphi)

k^{2} = \frac{4p}{3}.

Выражение для x:

x = 2\sqrt{\frac{p}{3}}\cos{\varphi}.

Подставляем в {x}^{3} = {p}\cdot{x} + {q}:

\frac{8{p}}{3}\sqrt{\frac{p}{3}}\cos^{3}{\varphi} = {p}\cdot{2}\sqrt{\frac{p}{3}}\cos{\varphi} + q

\frac{8{p}}{3}\sqrt{\frac{p}{3}}\cos^{3}{\varphi} - {p}\cdot{2}\sqrt{\frac{p}{3}}\cos{\varphi} = q

\frac{2{p}}{3}\sqrt{\frac{p}{3}}{(4\cos^{3}{\varphi} - 3\cos{\varphi})} = q.

Загнали, что называется, формулу косинуса тройного угла в нужное место. Снова выполняем подстановку и переносим множители:

\cos{(3\varphi)} = \frac{q}{\frac{2p}{3}\sqrt{\frac{p}{3}}}

\cos{(3\varphi)} = \frac{q}{2\sqrt{\frac{p^{3}}{27}}}.

Заметьте, что, по формулировке нашего исходного уравнения, p – всегда положительное. Это означает, что никаких отрицательных чисел под радикалом квадратного корня здесь быть не может. Сохранились и два основных условия:

\frac{p^{3}}{27} \ne 0

{q} \lt 2\sqrt{\frac{p^{3}}{27}}

Если вернуться к формуле Кардано, то нетрудно заметить, что данное условие как раз и приводит там к отрицательному значению под радикалом. Под радикалом квадратного корня в формуле Кардано записано вот что:

\sqrt{\frac{q^{2}}{4} - \frac{p^{3}}{27}}.

Из условия для q получаем:

{q} \lt 2\sqrt{\frac{p^{3}}{27}}

{q}^{2} \lt \frac{4p^{3}}{27}

\frac{{q}^{2}}{4} \lt \frac{p^{3}}{27}.

Так что, всё сходится – метод Виета работает только для случая, когда все корни рациональные, как и задумано. Зато вообще без комплексных чисел и даже без специальных сигнатур. Отсутствуют и неочевидные комбинации кубических корней. Но, по закону “закапывания трудностей”, для вычисления корней x_{n} требуются косинус и арккосинус:

\cos{(3\varphi)} = \frac{q}{2\sqrt{\frac{p^{3}}{27}}}

t_{n} = \frac{1}{3}\arccos{\left(\frac{q}{2\sqrt{\frac{p^{3}}{27}}}\right)} + \frac{2\pi{n}}{3},\qquad n = 0, 1, 2

x_{n} = 2\sqrt{\frac{p}{3}}\cos{(t_{n})}.

К сожалению, косинус – трансцендентная функция, поэтому формула не сильно-то поможет в точности вычислений. Проверим для исходного уравнения и корня 4.

x^{3} = 15x + 4
p = 15
q = 4

t_{0} = \frac{1}{3}\arccos{\left(\frac{4}{2\sqrt{\frac{15^{3}}{27}}}\right)}

t_{0} = \frac{1}{3}\arccos{\left(\frac{4}{10\sqrt{5}}\right)}

t_{0} = \frac{1}{3}\arccos{\left(\frac{2}{5\sqrt{5}}\right)}

(t_{0} \approx 26.56505)

x_{0} = 2\sqrt{\frac{15}{3}}\cos{(t_{0})} = 4.

Неожиданно. Но мы-то знаем, что так и есть. Проверьте на калькуляторе. Или при помощи программы на языке Python для калькулятора. Особенно интересной будет проверка для двух других корней, когда k = [1,2]: не забывайте, где там градусы, а где – радианы.

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

Итоги

Итак, уравнение Бомбелли x^{3} = 15x + 4 имеет три действительных корня – очевидный 4 и менее очевидные -2 + \sqrt{3} и -2 - \sqrt{3}. Эти корни проще всего найти не по формуле Кардано, а угадав очевидный и поделив уравнение на линейное. Уравнение знаменито потому, что даже для того, чтобы вычислить очевидный корень 4 по формуле Кардано необходимо придумать, как работать с минусами под радикалами квадратного корня. Это осложняется тем, что квадратные корни из отрицательных чисел невозможно извлекать, а для того, чтобы алгоритм формулы Кардано продолжил работать, необходимо добавить новую операцию: преобразование сигнатуры. Именно из этой операции и появилась “мнимая единица”.

Замкнутый круг

2026-Mar-26, Thursday 07:40
vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Тут у одной френдессы (вернее ее родственницы) случилась катастрофа:

У нас тут случилась катастрофа местного масштаба: была утеряна сумка. Кожаная, женская, бежевая, большая. 25.03, примерно между 14 и 15 часами в автобусе М88 или с891, шедшем к метро "Царицыно" или "Каширская" соответственно (Москва). Или, возможно, в Филиале № 3 поликлиники № 52 (Лебедянская улица, д. 10). В сумке были документы, мобильник и много чего еще. Мы ее и ее содержимое (хотя бы документы и сим-карту) очень хотим вернуть, но не знаем, как. Если вдруг кто-то что-то о судьбе сумки знает - пусть позвонит по телефону +7-916-977-09-35 (это я, а владелец сумки либо рядом, либо я ему передам). Мы даже денежку дадим!..

Дальше получается замкнутый круг - чтобы восстановить сим-карту, нужен паспорт. А чтобы восстановить паспорт, нужно подать заявление через госуслуги. А там авторзация была через SMS на эту самую сим-карту. (max, надо сказать бы тут не помог совершенно, потому как потерялся бы вместе с мобильником).

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

Понятно что в системе что-то не додумано. Но в качестве защиты от подобных эксцессов рекомендую:

  1. Не носить паспорт и телефон в одной сумочке. И вообще и то и другое держать ближе к телу - телефон в чехле на поясе, а паспорт во внутреннем кармане.
  2. Использовать на госуслугах авторизацию через OTP, и держать резервные копии OTP-секрета. Причем не (только) в гугловском облаке, а еще и у себя дома, может быть даже на бумажку выписать - там всего-то 32 буквы и цифры. Понятно, что для того, чтобы воспользоваться такой копией, нужно будет руками ввести ее в соответствующую программу. Но программу-то вы скачаете. Кстати вывести на бумагу и повесить на стенку можно и QR-код.
[syndicated profile] lleo_feed
Удивительное встречаю в рижских парках: сбор берёзового сока с осины.






Кажется, я слишком мало знаю о том, как делают мой любимый рижский бальзам.

Profile

jegjj: (Default)
jegjj

April 2026

S M T W T F S
   1234
567891011
12131415161718
19202122232425
2627282930  

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated 2026-Apr-07, Tuesday 02:09
Powered by Dreamwidth Studios