Обновить
39
0
sysprg@sysprg

Пользователь

Отправить сообщение

Пара слов об алгебре интервалов

Уровень сложностиСложный
Время на прочтение10 мин
Охват и читатели3K

Интервалы, интервалы,‑ где тут лево, где тут право...

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

На практике однако встречаются и более сложные задачи. Допустим, например, что в некой гостинице есть два свободных номера. Но один свободен со 2-го по 5-е число, а второй - с 6-го по 10-е. Клиент интересуется, есть ли возможность поселения на 8 дней? Правильный ответ - "да, есть, но с переселением (лесенкой)". Для такого ответа программа должна уметь распознать, что интервалы [2, 5] и [6, 10] являются смежными , а значит, их можно сложить, получив общий доступный интервал [2, 10], длина которого (9) превышает запрашиваемый.

Другая более редкая, но и более интересная задача - определить область пересечения двух множеств интервалов. Сложность в том, что количество интервалов в сравниваемых множествах может быть произвольным. Программист, который умеет только в сравнения "на меньше/больше" (или даже в between), столкнется при реализации с трудностями формализации.

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

Поехали!

Как недовольный инженер часовые пояса придумал

Время на прочтение6 мин
Охват и читатели5.8K
Июльским вечером 1876 года один шотландский инженер опоздал на поезд. Обычный человек на его месте наверняка вычурно выругался бы и взял другой билет. Но Сэндфорд Флеминг решил, что виновато тут не расписание, а само человечество.

Люди, по его мнению, неправильно обращались со временем. А если что-то работает криво, то, значит, нужно сделать нормально. И уговорить всех жить по новым правилам.

image
«Нормально делай — нормально будет», С. Флеминг

Флеминга не зря зовут «отцом времени». Последствия его идеи мы ощущаем каждый раз, когда, например, берём билет на самолёт. Или пытаемся высчитать, что там в Петропавловске-Камчатском — уже полночь или ещё нет.

Потому что Флеминг изобрёл ни много ни мало часовые пояса. И, честно говоря, спасибо ему за это.
Читать дальше →

The Billiard Fractals

Уровень сложностиСложный
Время на прочтение25 мин
Охват и читатели1.1K


Complex systems often appear chaotic or incomprehensible, yet closer examination reveals that such complexity can frequently be reduced to a simple underlying mechanism. By systematically removing layers of emergent behavior, one can uncover a fundamental rule or equation from which the entire system originates.

Read more →

Радиолокационный радар — менее чем за 400 рублей: на базе esp32 и wi-fi

Время на прочтение9 мин
Охват и читатели41K


Приходило ли вам в голову, что ваша любимая esp32 может использоваться в роли самого натурального радиолокационного радара?

Если не приходило, то добро пожаловать под кат, так как кое-кому это пришло:-))
Читать дальше →

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

Уровень сложностиПростой
Время на прочтение20 мин
Охват и читатели4.4K

Настройка оповещений для различных метрик не всегда представляет из себя тривиальную задачу. В некоторых случаях может быть вполне достаточно простого порогового значения, например, для отслеживания свободного места на диске устройства. Вы можете просто установить оповещение о том, что осталось 10% свободного места, и все готово. То же самое касается и мониторинга доступной памяти на сервере.

Однако что делать, если необходимо отслеживать поведение пользователей на веб‑сайте? Представьте, что вы управляете интернет‑магазином, где продаете товары. Одним из подходов может быть установка минимального порога для ежедневных продаж и проверка его раз в день. Но что, если вам нужно выявить проблему гораздо раньше, в течение нескольких часов или даже минут? Статичный порог не позволит этого сделать, так как активность пользователей может меняться в течение дня. Именно здесь на помощь приходит обнаружение аномалий.

Читать далее

К чему можно подключить MIPI DSI экран?

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели5K


Как-то мне захотелось поэкспериментировать с MIPI DSI экранами. Встал вопрос: к чему их подключить? Позже я выбрал решение и спроектировал плату, о чём начал писать статью. Но есть и множество других вариантов. Решил вынести эти данные в отдельную часть.

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

Какие решения доступны? Как рассчитать скорость передачи данных?
Читать дальше →

Взрывы сверхновых изменили климат Земли и сформировали историю человечества

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели980

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

Мы живём в четвертичном периоде, который начался 2,58 миллиона лет назад и длится до наших дней. Четвертичный период характеризуется климатическими и экологическими изменениями, в первую очередь ледниковыми периодами. Четвертичный период также охватывает существование и эволюцию человека от ранних гоминид до нашего вида.

Читать далее

Программирование ESP32 с ESP-IDF в среде platformio #1

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели4.2K

Привет, Хабр!

Это вторая статья из цикла по программированию ESP32 на ESP‑IDF. В первой части мы познакомились с базовой терминологией RTOS и реализовали несколько простых задач (tasks). Сегодня же мы перейдём к работе с GPIO и прерываниями (ISR), а заодно обсудим особенности настройки стека задач в ESP‑IDF (спасибо за совет @0x6b73ca).

Читать далее

Детальный обзор полей Галуа

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели13K

"Попросите Якоби или Гаусса публично высказать своё мнение — не о истинности, а о важности этих теорем. Позже, я надеюсь, найдутся люди, которым будет выгодно разобраться во всём этом хаосе."

Этими словами заканчивалось письмо Эвариста Галуа, написанное для своего друга Огюста Шевалье за два дня до его смерти от полученных на дуэли ран на 21 году жизни. Ни Якоби, ни Гаусс в его теоремах не разобрались, зато спустя 15 лет разобрался Жозеф Лиувилль и опубликовал работы Галуа, ставшие впоследствии фундаментом современной алгебры, известные сейчас как теория Галуа. В статье расскажу про одну из частей этой теории - поля Галуа, получившая настолько повсеместное применение в криптографии и избыточном кодировании, что Intel и AMD выпустили набор процессорных расширений для эффективной реализации операций над этими полями.

Заметка! Если вам довелось использовать/реализовывать поля Галуа, то большая часть статьи для вас скорее всего будет не интересна, но возможно в последних разделах будет что-то для вас новое.

Читать далее

Как прямая помогает обучать машины

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели751

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

Давайте начнём с чего-то близкого нам: цен на недвижимость. Большие дома стоят больше, маленькие — меньше. Подобный паттерн можно заметить даже без анализа: чем больше места, тем дороже.

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

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

Теперь представьте, что вы продаёте свой дом. Его площадь 1850 квадратных футов (~172 квадратных метра) — больше среднего, но явно не особняк. Вы видели, почём продаются дома в вашем районе, но цены колеблются. Какой будет справедливая цена?

Читать далее

Упрощать сложно. История одного провала

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели6K

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

В общем, проблема оказалась отнюдь не мала

Сложный способ писать программы

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели4.8K

В прошлой публикации История одного провала я рассказал про свои попытки автоматизировать упрощение символьных выражений. Но практически совсем не коснулся вопроса – зачем мне это потребовалось, так что пришлось много объясняться по этому поводу в комментариях. В этой статье я расскажу про почти успешную часть того проекта – программу, которая должна была писать другие программы. За 10 лет до этого вашего ChatGPT.

Читать далее

Как ускорить сложение и вычитание при помощи 2^51

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели7.1K

Помните, как долго выполняется сложение на бумаге?

¹¹ ¹
6876
+ 3406
------
10282

Начиная с единиц, мы складываем 6 + 6 = 12, записываем 2 и переносим 1. Затем пошагово двигаемся влево, пока складываемые разряды не закончатся.

При реализации сложения больших чисел (например, от 264 и выше) обычно пишут код, похожий на этот алгоритм. Любопытно здесь то, что существует простой трюк, позволяющий существенно ускорить этот процесс на современных CPU.

Но сначала я задам вопрос: почему сложение столбиком мы начинаем с самого младшего разряда? Почему бы не начать слева?

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

Читать далее

Дискретное преобразование Фурье в живых картинках для девятиклассников

Уровень сложностиСредний
Время на прочтение19 мин
Охват и читатели21K

Мало что настолько меня угнетает, как невозможность что‑либо понять так, чтобы потом объяснить это самому себе:) И хоть я уже давно не девятиклассник, этот период запомнился мне внезапным переходом от заучивания материала «чтобы не схватить парашу» к некоторой степени осознания «а как оно там устроено и почему именно так». Сложнее всего было с математикой и я постоянно изобретал для себя «объяснялки». Этот навык, к счастью, прижился и стал привычкой.

В виртуальную лабораторию!

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

Уровень сложностиСложный
Время на прочтение19 мин
Охват и читатели4.2K

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

Читать далее

Как я делал генератор синуса на мосту Вина

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.4K
Я люблю аналоговую электронику, мне нравится возиться с настройкой схем и изучением процессов, которые в них протекают. Давно хотел сделать источник качественного синусоидального сигнала для проверки качества усилительных каскадов. Выбор схемотехнических решений для создания спектрально чистого сигнала невелик. Годится генератор на колебательном контуре (LC) и генератор на цепи Вина (RC).


Создавать высокодобротную катушку индуктивности, пригодную для колебаний звуковой частоты, не очень хотелось. А вот схема на RC цепи Вина привлекала простотой изготовления, и хотелось разобраться, как именно она работает. Спойлер: и не сделал, и полноценно не разобрался, но! Мне кажется, что именно опыт, полученный в экспериментах, — самое ценное. И я постарался описать свои приключения не скучно.
Читать далее

Важнейшая модель теории вероятностей

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели9.5K

Что объединяет частицу в воде, биржевой курс и кота Барсика, бродящего по району в поисках ларька с рыбой?


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

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

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

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

В финале — красивая задача для самостоятельного решения: её можно решить математически или запрограммировать симуляцию. Выбирайте способ по вкусу.

Читать далее

JFET в роли регулируемого резистора

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели4.6K

Привет, Хабр! Наверное, у многих словосочетание «регулируемый резистор» ассоциируется с обычным потенциометром.

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

Читать далее

Java Highload и сборка мусора

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели2.6K

Разработка HL-решения со строгим SLA по RPS и latency затрагивает множество аспектов. В частности OLTP, мультиплексирование запросов, неблокирующий I/O и прочее. В данной статье хотел бы поговорить про сборку мусора. Мы не будем погружаться в цитирование спецификации. Напротив, взглянем на сборку глазами инженера, перед которым стоит задача оптимизировать процесс с минимальными издержками.

Читать далее

Борьба с мельницами — 1: интерполяционные сплайны

Время на прочтение8 мин
Охват и читатели12K
В данной статье лирический герой бросает вызов оптимальной реализации классического полиномиального интерполятора Лагранжа (Фарроу), в процессе битвы случайно открывает и доказывает тривиальное никому не нужное математгическое заклинание, с помощью которого пытается потеснить противника, но по результатам всех раундов боя решением судей фиксируется ничья.

— Где вы видите великанов? — спросил Санчо Панса.
— Да вон они, с громадными руками, — отвечал его господин. — У некоторых из них длина рук достигает почти двух миль.
— Помилуйте, сеньор, — возразил Санчо, — то, что там виднеется, вовсе не великаны, а ветряные мельницы; то же, что вы принимаете за их руки, — это крылья: они кружатся от ветра и приводят в движение мельничные жернова.
— Сейчас видно неопытного искателя приключений, — заметил Дон Кихот, — это великаны. И если ты боишься, то отъезжай в сторону и помолись, а я тем временем вступлю с ними в жестокий и неравный бой…

Читать дальше →

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность