Целочисленные функции
В математике и информатике мы часто сталкиваемся с необходимостью «перевести» вещественные величины в целочисленные термины: подсчитать количество полных шагов, определить номер интервала, выделить остаток от деления или просто отбросить дробную часть. Однако интуитивные идеи вроде округления оказываются недостаточно точными для формального анализа — они либо неоднозначны, либо не обладают нужными алгебраическими или топологическими свойствами.
Именно для строгого и универсального описания таких операций были введены целочисленные функции — прежде всего, функции пола и потолка, а также связанные с ними дробная часть и остаток по модулю. Эти функции, несмотря на кажущуюся простоту, лежат в основе глубоких математических конструкций: от теории делимости и алгоритмов до спектрального анализа чисел, теории вероятности и даже теории игр.
В этом тексте мы систематизируем базовые целочисленные функции, их ключевые свойства и взаимосвязи, а также покажем, как с их помощью моделировать дискретные структуры, возникающие из непрерывных величин.
Пол и потолок
Простое округление не подходит для формальных систем: оно неоднозначно (особенно вблизи полуцелых значений) и не согласуется строго с порядком на числовой прямой. В отличие от таких эвристик, функции пола и потолка, введённые Кеннетом Айверсоном в начале 1960‑х годов, однозначно определены для любого вещественного числа, естественно связаны с неравенствами и позволяют точно переводить аналитические утверждения в дискретные.
Функции пол и потолок
Пол (floor) — функция, округляющее число вниз
Потолок (ceil) — функция, округляющее число вверх
В целых точках значения функций пола и потолка совпадают, а в нецелых точках значения отличаются на :
Симметрия относительно нуля. Функции пола и потолка зеркально связаны: отражение числа относительно нуля «переворачивает» порядок, а значит, меняет и направление округления:
Эта симметрия часто упрощает доказательства: достаточно разобрать случай , а отрицательный получится автоматически.
Перевод равенств в неравенства. Самое ценное в функциях пола и потолка — их эквивалентные характеристики через неравенства. Например, утверждение равносильно двум условиям: . Это очень удобный инструмент для доказательств, ведь он позволяет нам мгновенно переходить от равенства к системе неравенств, с которой гораздо проще работать. Вот четыре ключевых эквивалентности:
Обратите внимание: каждая из эквивалентностей задаёт интервал, в который попадает , если его пол (или потолок) равен .
Пол числа всегда не больше самого числа, а потолок числа всегда не меньше самого числа. В сочетании с соответствующими равенствами для целых чисел эти факты дают нам способ немного огрубив неравенство записать его в терминах целых чисел:
Давайте разберём простой пример, чтобы закрепить навыки обращения со свойствами функций пола и потолка. Вопрос: верно ли неравенство
Очевидно, это равенство справедливо, когда — целое число, ведь тогда . Но оно также оказывается верным и для , и для , и для ... Наша безуспешная попытка найти какой-либо опровергающий пример наводит на мысль, что равенство справедливо и в общем случае. Давайте попробуем его доказать.
Давайте использовать разобранные выше свойства для доказательства. Попробуем каким-либо образом «разобрать» левую часть , избавившись от корня и внешнего пола. Затем уберём внутренний пол . А потом вновь «соберём» выражение, но уже в виде .
Пусть . Это целое число.
Перейдём от равенства к двойному неравенству, избавившись от от наружного пола:
Поскольку все три части этой конструкции неотрицательны, смело возводим их в квадрат, чтобы избавиться от квадратного корня:
Теперь избавимся от оставшегося пола, оценив его с обоих сторон. Используем два неравенства и при . Поскольку — целое число, значит и , и тоже целые, и эти неравенства мы можем применять.
А теперь не составляет труда восстановить проделанное в обратном порядке. Извлечем квадратные корни
А это классическое определение функции пол. Перейдём от неравенства к равенству и получим
Таким образом, мы начали с и, используя только наши свойства, пришли к . Значит
Наше утверждение оказалось верным.
Сколько целых чисел содержится на интервалах: , и при и ?
Функция пол позволяет нам исследовать удивительные свойства иррациональных чисел.
Задолго до того, как это стало знаменитой математической задачей, лорд Рэлей в своей "Теории звука" изучал, как взаимодействуют несоизмеримые частоты и оказалось, что задача сводится к чистой теории чисел. Мы получаем инструмент, чтобы оцифровать иррациональный процесс и знакомимся с понятием спектра.
Спектр числа
Спектром некоторого вещественного числа называется бесконечное мультимножество (множество с повторяющимися элементами) целых чисел:
Например, для рационального числа . Но настоящая магия начинается, когда иррационально.
Рассмотрим, например, два мультимножества:
Более внимательное рассмотрение показывает, что два этих спектра связаны друг с другом гораздо более удивительным образом: получается так, что любое целое положительное число, отсутствующее в одном спектре, присутствует в другом, но никакое число не содержится одновременно в обоих!
Разбиение всех целых положительных чисел
И это действительно так — все целые положительные числа представляют собой объединение непересекающихся множеств . Говорят, что эти спектры образуют разбиение всех целых положительных чисел. Строгое доказательство этого красивого факта мы оставляем для самых искушенных читателей.Сами же спектры иррациональных чисел (такие как ) носят имя последовательностей Битти.
Тот факт, что спектры чисел и идеально дополняют друг друга, не является случайным совпадением. Это проявление жесткого арифметического закона. Чтобы два иррациональных числа могли поделить между собой натуральный ряд, они должны находиться в особой гармонической связи.
Теорема Битти
Пусть и — положительные иррациональные числа. Множества и образуют разбиение множества натуральных чисел тогда и только тогда, когда выполняется соотношение:
На первый взгляд спектр иррационального числа кажется хаотичным набором целых чисел. Однако функция пола накладывает на него строгие структурные ограничения.
Свойство двух шагов
Рассмотрим упорядоченную последовательность элементов спектра . Разность между соседними элементами может принимать только два значения:
Вернемся к нашему примеру с . Тогда . Значит, шаги в спектре могут быть только или .
Последовательности Битти находят красивое применение в анализе Игры Витхоффа.
Представьте две кучки камней. Двое игроков по очереди делают ход. Разрешается два типа ходов:
Взять любое количество камней из одной кучки.
Взять одинаковое количество камней из обеих кучек сразу.
Выигрывает тот, кто забирает последний камень. Анализ показывает, что существует набор проигрышных позиций — если вы в них попали и противник играет оптимально, ваше поражение неизбежно.
Стратегия Витхоффа
Пара чисел для которых является проигрышной позицией тогда и только тогда, когда она является парой чисел из спектров золотого сечения:
где , а — номер хода. Заметьте, что так как , эти позиции покрывают все возможные варианты, никогда не повторяясь.
Упражнения
Мы только что видели, как функция пол помогает нам анализировать структуры, порожденные иррациональными числами.
Теперь вернемся к целочисленной арифметике. При делении функция пол дает нам точное частное: .
Эта же самая операция, как мы сейчас увидим, служит фундаментом для формального определения остатка — краеугольного камня всей дискретной математики.
Операция взятия остатка
Если — целые положительные числа, то частное от деления равно . Нам также полезно иметь обозначение и для остатка от этого деления — обозначим его .
Свяжем воедино:
Чтобы распространить эту идею на произвольные вещественные числа, нам необходимо формальное определение. Оно элегантно строится на той же функции пол, которую мы только что использовали для частного.
MOD как остаток от деления
для
MOD является бинарной операцией. Обратите внимание, что она имеет приоритет выше сложения/вычитания, поэтому скобки намерено опущены. Число после MOD называется модулем, а само выражение читается как «икс по модулю игрек».
Вообразим себя бегущими по кругу с длиной окружности , точкам которой приписаны вещественные числа из интервала . Если, взяв старт в точке , пробежать некоторое расстояние по окружности, мы остановимся в точке . (А пока мы бегаем, точка 0 встретится нам раз.)
Из нашего формального определения логически вытекают важные свойства остатка:
В частности, (пробежались по окружности нулевой длины).
В статье основы модулярной арифметики вводится целый раздел, порождаемый операцией MOD. Я же остановлюсь здесь на интересном факте.
Представим, что нужно определить положение маятника или фазу волны в какой-то момент времени. Неважно, сколько полных колебаний совершено, важна только текущая фаза. Эта задача сводится к отбрасыванию целой части или, по-другому, к извлечению...
Дробная часть числа
Операция — элегантный способ мгновенно получить дробную часть числаТеорема Вейля
Есть знаменитая теорема Вейля о том, что если — иррациональное число, то последовательность (то есть ) будет равномерно распределена по всему отрезку . Она никогда не попадет в одну точку дважды, но со временем "заполнит" весь отрезок, как бы хаотично, но при этом нигде не оставляя пустот. Это основа многих генераторов псевдослучайных чисел.Пусть — заданная последовательность действительных чисел. Для положительного целого числа и подмножества промежутка введем счетчик , по определению равный количеству членов , для которых . При отсутствии опасности путаницы буду писать вместо . Вот основное определение:
Равномерное распределение по модулю 1
Последовательность действительных чисел равномерно распределена по модулю 1 (сокращенно р.р. ), если для любой пары действительных чисел, для которых , имеем:
Обозначим теперь через характеристическую функцию интервала . Тогда (1.1) можно записать в форме:
Это замечание дает следующий критерий:
Критерий Вейля
Последовательность действительных чисел р.р. тогда и только тогда, когда для любой действительной непрерывной функции , определенной на замкнутом интервале , имеем:
Пусть р.р. , а — ступенчатая функция, определенная на , причем . Из (1.2) следует, что для любой такой функции справедливо уравнение (1.3).
Предположим теперь, что действительная непрерывная функция, определенная на . Из определения интеграла Римана вытекает, что для любого заданного существуют две ступенчатые функции и такие, что при всех и
Тогда справедлива следующая цепочка неравенств:
так что в случае непрерывной функции имеет место (1.3).
Обратно, пусть задана последовательность и предполагается, что (1.3) выполнено для любой действительной непрерывной функции , определенной на . Пусть — произвольный подынтервал . Для любого заданного существуют две непрерывные функции и такие, что при и в то же время
Тогда имеем:
Так как сколь угодно мало, то отсюда вытекает (1.1).
Возьмем рациональное . Рассмотрим последовательность .
"Заполнит" ли эта последовательность отрезок ?
Сколько уникальных точек она породит? Будет ли множество таких точек счётным?