Pull to refresh

Делить на ноль — это норма. Часть 2

Reading time18 min
Views75K
Часть 1. Вобще-то уже все поделили до нас!
Часть 2. Истина где-то рядом

В прошлой части мы расширяли алгебру и смогли делить на ноль арифметически. В качестве бонуса, способ оказался не единственным. Однако, все эти алгебры не дали ответа на вопрос: “Что там внутри или почему нам это не показывают?”

Пока древние вязали узелки, такой вопрос возникнуть не мог. Сейчас, куда не глянь, “бла-бла, для а≠0”. Значит ответ затаился где-то между узелками и настоящим. В математике все строго и последовательно, а значит и ответ не мог потеряться.

Читать дальше →
Total votes 83: ↑77 and ↓6+71
Comments59

Папа, а почему на ноль делить нельзя?

Reading time6 min
Views237K
Моя трёхлетняя дочка София в последнее время частенько упоминает «ноль», например, в таком контексте:
— Соня, вот ты вроде сначала не послушалась, а затем послушалась, что же получается?..
— Ну… ноль!

Т.е. ощущение отрицательных чисел и нейтральности нуля уже имеет, о как. Скоро поинтересуется: почему же это на ноль делить нельзя?
И вот решил я простыми словами записать всё, что я ещё помню про деление на ноль и всё такое.
Читать дальше →
Total votes 262: ↑192 and ↓70+122
Comments281

Делить на ноль — это норма. Часть 1

Reading time9 min
Views219K
Часть 1. Вобще-то уже все поделили до нас!
Часть 2. Истина где-то рядом

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


Читать дальше →
Total votes 106: ↑98 and ↓8+90
Comments102

Философия деления на… или исповедь сумасшедшего

Reading time12 min
Views5.4K

Вступление


Сразу следует указать что в данной статье не будет глубокой математики. Будет лишь рассуждение на указанную в заголовке тему. Всё далее описанное лишь мнение автора. Не более того. Почти.

Небольшое дополнение: «мера» и «величина» являются слишком расплывчатыми понятиями, а некоторыми они считаются и синонимичными. Автор же решил строго использовать их в разных представлениях, для однозначности — мерами выступают названия единиц измерения, а величинами выступают численные значения, полученные в результате введённых условий или измерений. Причина, по которой мера указана в виде обычной единицы ("/1" в квадратных скобках далее), а не какого-то символьного названия, состоит в том, что при работе с обычными числами в нашем воображении мы не опираемся на какую-либо известную человечеству меру в своих мысленных расчётах, а просто напрямую работаем с числами («чистые вычисления»).

Особенность математики


Математика, как наука, окончательно углубилась в систематизацию и отвлечение, тем самым создав себе положение, при котором она попала в кризисное состояние. Что под этим подразумевается? Великий философ и математик Курт Гёдель своими прекрасными теоремами доказал что некоторые математические основания нельзя доказать или опровергнуть средствами самой математики.

И хотя многим очевидно, что аксиоматизация основана всегда на наблюдениях физической действительности (то есть на опыте), почему-то эти многие концентрируются исключительно на самой математике, то есть структуре (форме) без содержания. Потому они иногда не представляют что делают, но знают как. Большинство пытавшихся подойти к описанной проблеме, подобно кошке, которая преследует свой хвост, упорно ходит по кругу. Здесь, по всей видимости, проявляется то самое профессиональное закостенение, о котором написал Лоренц в своей прекрасной работе.
Читать дальше →
Total votes 34: ↑19 and ↓15+4
Comments101

Деление на ноль или наглядный пример почему нужны внутренние прерывания в ядре

Reading time2 min
Views13K
Яркий пример того, для чего в ядре каждого современного устройства, начиная от калькулятора до сверх мощных серверов и ПК, есть прерывания на случай абсурдных команд.

Читать дальше →
Total votes 20: ↑11 and ↓9+2
Comments27

Всем нолям ноль: почти все языки программирования делают это

Reading time2 min
Views13K
Решил я намедни сделать для себя небольшой, но очень удобный велосипед для вычисления всяких полезных математических функций. Стоит отметить, что пишу я на разных языках, и в этот раз выбор пал на C++. Пилю я, значит, сей чудесный трехколесный транспорт и параллельно занимаюсь юнит-тестированием свежесозданных функций… И тут нате-здрасте — один из тестов выдает мне совсем не тот результат, которого я ждал. Готовы?!
Читать дальше →
Total votes 33: ↑14 and ↓19-5
Comments30

Просто деление, или как создать математическую теорию и заработать на этом 400К$. Серия вторая, предпоследняя

Reading time22 min
Views9.6K
В предыдущей серии мы рассмотрели дробные числа, не включающие рациональные. Сегодня же нас ждёт именно эта, не рассмотренная часть, а так же мы подготовимся к немного более сложной заключительной части без привлечения терминов вроде колец классов вычетов или сравнений по модулю с дискретным логарифмированием. Так же в третьей части заинтересовавшихся ждут призы размером 400K$. Почему в третьей? Потому что без введения в предмет не всегда просто понять причины, по которым призы получить не так просто. А после прочтения — лишь удача и некоторая целеустремлённая, терпеливая, но не очень сложная, деятельность, вот всё, что вам будет нужно.

image

Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments15

Почему нельзя делить на ноль, даже если очень хочется?

Reading time5 min
Views110K
Недавно на Хабре появилась удивительная статья «Папа, а почему на ноль делить нельзя?», которая собрала массу не менее удивительных комментариев.

Детские вопросы обычно очень сложны («Почему небо ночью темное?», «Почему яблоки падают на землю?») и у взрослых обычно не хватает времени, чтобы их доходчиво объяснить. Да и не всегда взрослые знают ответ на эти вопросы.

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

image

Самые серьезные сомнения появляются, я думаю, после изучения рациональных чисел, когда для любого числа x, кроме нуля, вводится понятие обратного числа 1/x, и графика гиперболы y(x)=1/x.

Очевидно, что при делении 1 на очень маленькие числа появляются очень большие числа, и чем меньше мы берем x, тем больше становится 1/x. Почему же мы не можем сказать, что 1/x=∞ — есть некоторое число?

Алгебраическое возражение против этого состоит в следующем. Предположим, что ∞=1/x является числом. Тогда на это число должны распространяться все правила, которые имеют место быть для обычных чисел. В частности, с одной стороны должно быть верно соотношение 0⋅∞=1, а с другой стороны поскольку 0=1−1 должно быть выполнено 0⋅∞=1⋅∞−1⋅∞=0. Таким образом, имеем 1=0, а из этого уже следует, что все числа равны между собой и равны нулю. В самом деле, поскольку для любого числа x верно 1⋅x=x, то 1⋅x=0⋅x=0.

«Ну разве это не полная чушь?» — спросим себя, добравшись до этого места.

Разумеется, это полная чушь, если мы говорим об обычных числах. Но я недаром подчеркнул выше слово «правила». К ним мы вернемся чуть позже, после рассмотрения арифметического возражения против деления на ноль, и поможет нам в этом фасоль.

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

Для этого берем чашу с фасолью, символизирующую натуральный ряд, и высыпаем из нее какое-то количество зерен на разлинованный лист бумаги:

image

Тем самым, мы установили делимое на нашем бобовом калькуляторе.

Читать дальше →
Total votes 97: ↑81 and ↓16+65
Comments96

К вопросу о делении

Reading time4 min
Views15K

Нам подвернулась возможность провести небольшое, но крайне интересное тактическое учение


В процессе исследований нового МК от известной фирмы на основе архитектуры Cortex-М4 (я об этом обязательно еще напишу) возник вопрос, насколько быстро может работать операция целочисленного деления в аппаратной реализации. Натурный эксперимент дал несколько неожиданный результат: деление 32-разрядного числа на 32-разрядное выполняется за 3 такта частоты процессора — ну ни фига ж себе, как быстро. Выяснилось, что это имеет место только с определенными операндами, но дальнейшие исследования показали, что никогда время выполнения деления не превосходит 7 тактов. Полученные результаты вызвали легкую оторопь («и это не некая фигура речи, которая неизвестно что означает, а вполне конкретный глагол» — Дивов, как всегда, бесподобен).

Ну нельзя же просто так взять и быстро поделить такие длинные числа, странно как то, но факты — упрямая вещь. Представил себе картину, что вызывает меня завтра к себе Президент РФ и ставит передо мной задачу сделать МК не хуже, чем у ARM (согласен, что картина бредовая, но чего на свете не бывает), а я растеряно на него гляжу и понимаю, что не смогу сделать такое деление таких чисел за такое время, и не оправдаю ожиданий, на меня возлагаемых (ну на самом то деле я всегда смогу втихую купить лицензию у ARM, и сделать вид, будто бы придумал все сам, многие так и делают, но от меня то ВВП ждет совсем другого, да и потом — его то я обмануть смогу, а вот себя вряд ли).
Как же это сделать
Total votes 51: ↑42 and ↓9+33
Comments26

Просто деление, или как создать математическую теорию и заработать на этом 400К$. Серия третья, заключительная

Reading time19 min
Views8.2K
В предыдущих сериях мы взглянули на дробные числа с несколько необычных ракурсов. В этой серии, после введения и некоторой теоретической базы, попробуем собрать всё в удобном виде и получить пользу от имеющейся информации.
Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments15

Животные умеют считать и использовать ноль – насколько хорошо они обращаются с числами?

Reading time12 min
Views10K

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



Высокий интеллект врановых – воронов и ворон – известен давно. Недавно вороны даже продемонстрировали понимание концепции нулевого множества – такое редко можно встретить у других животных.

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

Но это совершенно не так. Пчёлы считают приметные объекты на пути к источникам нектара. Львицы оценивают, сколько раз рычали представители другого прайда, чтобы решить, атаковать их или отступать. Некоторые муравьи считают количество шагов. Некоторые пауки считают количество пойманных в паутину насекомых. Один вид лягушек строит весь брачный ритуал на числах. Когда самец издаёт свой крик – воющий звук, заканчивающийся коротким «кудахтаньем» – его соперник отвечает, кудахтая два раза после своего крика. Тогда первый самец кричит и кудахтает уже три раза, второй – четыре, и так далее, пока после примерно шести раз у них уже не хватает дыхания.
Читать дальше →
Total votes 35: ↑31 and ↓4+27
Comments26

Быстрое целочисленное деление на константу

Reading time3 min
Views9.1K
На всех CPU операция деления выполняется сравнительно медленно, с этим ничего поделать нельзя. Но если делитель константа, то деление можно заменить на умножение на какую-то другую константу (обратное число, которое вычисляется во время компиляции). Тогда код будет чуть быстрее работать (и потреблять меньше энергии). Такую оптимизацию делают многие компиляторы (gcc, MSVC), но оказывается, многие разработчики не знают, как вычисляется сомножитель, а это не тривиально.

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

Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments8

Деление на ноль, вот ответ бесконечна ли нашей вселенная?

Reading time3 min
Views70K

Бесконечна ли наша вселенная?


Вселенная

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

Доброго времени суток гиктаймс! На написание данной статьи меня толкнули видео с ютуба о необычных числовых парадоксах. А именно о парадоксах Зенона и того почему нельзя делить на ноль, о которых сегодня и пойдет речь.
Total votes 43: ↑9 and ↓34-25
Comments74

«Чистый ноль»: Стратегия правительства Великобритании на пути к термоядерной энергии

Reading time10 min
Views21K


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

Цены на природный газ в Европе стремительно выросли за последние месяцы на фоне перехода на возобновляемые источники энергии и сокращения поставок из Норвегии, России и СПГ (сжиженного природного газа) из США, а также более высокого спроса на электроэнергию. В начале августа фьючерсы на газ в Европе торговались в районе 515 долларов за тысячу кубометров, к концу сентября они выросли более чем вдвое, в начале октября превысив рекордные 1900 долл. за тысячу кубометров (в пике, 6 октября, — до 1937 долл. за тыс. кубов), при средней цене в прошлые годы в 200 долларов.

Великобритания находится в лидерах по использованию ветряной генерации (однако, страна не может обходиться без газа: по-прежнему 80 % домов в стране отапливаются газом, а 40 % газа идёт на выработку электроэнергии) и именно останов ветряков (две недели в сентябре в Северном море был штиль) многие эксперты называют главным фактором, который сделал энергетический кризис в стране ещё более острым, чем во многих странах материковой Европы. В итоге в сентябре и октябре электроэнергия подорожала на 200 %.

Великобритания добилась большего прогресса, чем другие страны с развитой экономикой в поэтапном отказе от сжигания угля для производства электроэнергии, но стала сильно зависеть от газа как крупнейшего и единственного гибкого источника генерации. Один из главных факторов уязвимости энергетической системы страны заключается в том, что Великобритания полагалась на импорт почти 60% всего газа в 2019–2020 гг. В результате почти вся энергосистема страны (в том числе на уровне бытовых потребителей) зависит от импортируемого газа, который, в свою очередь, зависит от мировых цен на СПГ.

Энергетический кризис требует чётких политических решений. И остро стоит вопрос: как в таких условиях продвигать переход к низкоуглеродной энергетике по программе «Чистый ноль»?
Читать дальше →
Total votes 46: ↑41 and ↓5+36
Comments121

Mikrotik Router OS, скрипт для динамического деления скорости

Reading time9 min
Views22K

Mikrotik Router OS, скрипт для динамического деления скорости.



На днях встала следующая проблема: делить скорость поровну между всеми пользователями, причем так, чтобы скорость не выделялась на клиентов, которые на данный момент не пользуются интернетом, а отдавалась всем остальным, еще чтобы при большом количестве клиентов и узком канале получить некоторую «буферность» канала.
Читать дальше →
Total votes 26: ↑26 and ↓0+26
Comments12

Вертикальная черта, затем ноль

Reading time3 min
Views41K
Заголовок, выраженный словами, понадобился только для поисковой находимости. Но речь пойдёт о роли символьной конструкции «|0» в JavaScript.

Впервые на неё я обратил внимание, когда переводил FAQ про asm.js и читал спецификации этого подмножества языка JavaScript. Там «|0» служит, например, для указания типа значения, возвращаемого из функции: увидели «|0» после значения — значит, перед нами знаковое целое.

Вдругорядь я заметил конструкцию «|0» в примере кода на Гитхабе, где происходило преобразование к целому числу результата деления на 1024².

Тогда глаза мои открылись, и я увидел прекрасные возможности:

( 3|0 ) === 3;       // целые числа не изменяет
( 3.3|0 ) === 3;     // у дробных чисел отбрасывает дробную часть
( 3.8|0 ) === 3;     // не округляет, а именно отбрасывает дробную часть
( -3.3|0 ) === -3;   // в том числе и у отрицательных дробных чисел
( -3.8|0 ) === -3;   // у которых Math.floor(-3.3) == Math.floor(-3.8) == -4
( "3"|0 ) === 3;     // строки с числами преобразуются к целым числам
( "3.8"|0 ) === 3;   // при этом опять же отбрасывается дробная часть
( "-3.8"|0 ) === -3; // в том числе и у отрицательных дробных чисел
( NaN|0 ) === 0;     // NaN приводится к нулю
( Infinity|0 ) === 0;     // приведение к нулю происходит и с бесконечностью,
( -Infinity|0 ) === 0;    // и с минус бесконечностью,
( null|0 ) === 0;         // и с null,
( (void 0)|0 ) === 0;     // и с undefined,
( []|0 ) === 0;           // и с пустым массивом,
( [3]|0 ) === 3;          // но массив с одним числом приводится к числу,
( [-3.8]|0 ) === -3;      // в том числе с отбрасыванием дробной части,
( [" -3.8 "]|0 ) === -3;  // и в том числе с извлечением чисел из строк,
( [-3.8, 22]|0 ) === 0    // но массив с несколькими числами вновь зануляется
( {}|0 ) === 0;                // к нулю также приводится пустой объект
( {'2':'3'}|0 ) === 0;         // или не пустой
( (function(){})|0 ) === 0;    // к нулю также приводится пустая функция
( (function(){ return 3;})|0 ) === 0;    // или не пустая

Итак, во-первых, перед нами удобное средство отбрасывания дробной части.

  • По отношению к отрицательным числам оно полезно тем, что дробное число превращается не в ближайшее меньшее целое число (возрастая по модулю), как это случилось бы после «Math.floor()», а в ближайшее меньшее по модулю целое число (возрастая по значению). Нередко именно это и требуется.
     
  • По отношению к положительным числам оно полезно уж тем одним, что конструкция «|0» более чем на порядок короче по сравнению с «Math.floor()». Поэтому она может и должна вызывать у разработчиков привыкание не меньшее, чем та принятая в jQuery запись «$()», о которой я говорил четыре дня назад, что с неё никто добровольно не перейдёт обратно на «document.getElementsByClassName()», например.

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

Читать дальше →
Total votes 184: ↑159 and ↓25+134
Comments93

Скучные числа

Reading time51 min
Views20K

1 / 0


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

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

Соревнование между нулём и единицей может быть описано более детально.

Заметка длинная, разделена на главы
1 / 0
Зря-зря
Спуск
Простые числа
Золотая середина
Предыдущее и следующее
Уровни
Что было до нуля
Вообще без нуля

Часть вторая:
Двойные функции
Двойные числа
Биномиальная свёртка
Происхождение чисел Бернулли
Откатная функция
Пи

Функция состоит не только из нулей
Суммируя
Умножая
Симметрия Дзеты
Ось
Откуда там вообще нули?

Исторически счёт принято начинать с единицы, и это оправдано, так как отводит нулю его место — то что было в самом начале, до начала счёта. И этим указывает, что такое сам счёт. Это нахождение элемента между предыдущим и предстоящим. «Предыдущий» в начале счёта ноль, «предстоящий» элемент тоже вполне определён. Основное действие — то что понимается под «предыдущим» меняется на то что получено, и счёт можно продолжать.
Читать дальше →
Total votes 81: ↑78 and ↓3+75
Comments32

Что такое -1.#IND и -1.#J?

Reading time3 min
Views36K

Любой опытный программист знает, что стандарт представления значений с плавающей точкой (IEEE 754) оставляет несколько зарезервированных значений, соответствующих не-числам (NaN, not-a-number). Стандартная библиотека Visual C печатает не-числа следующим образом:
Печатается Означает
1.#INF Положительная бесконечность
-1.#INF Отрицательная бесконечность
1.#SNAN Положительное сигнальное не-число (signaling NaN)
-1.#SNAN Отрицательное сигнальное не-число (signaling NaN)
1.#QNAN Положительное несигнальное не-число (quiet NaN)
-1.#QNAN Отрицательное несигнальное не-число (quiet NaN)
1.#IND Положительная неопределённость
-1.#IND Отрицательная неопределённость
Положительная и отрицательная бесконечности могут получаться при переполнении в результате арифметического действия — например, при делении на ноль, или при взятии логарифма от положительного нуля. (По стандарту IEEE, любое значение с плавающей точкой имеет определённый знак — не только не-числа существуют в положительном и отрицательном вариантах, но и нулей тоже два.)
Сигнальные и несигнальные не-числа...
Total votes 38: ↑33 and ↓5+28
Comments5

Структура и случайность простых чисел

Reading time22 min
Views38K

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

Но на этом история не заканчивается. Распределение простых чисел выглядит случайным, с неравномерными разрывами и скоплениями, которые выглядят довольно хаотично. Если и существует какая-то схема, то она непостижима. На самом деле, простые числа выглядят достаточно случайными, чтобы можно было сыграть с ними в кости. Создайте список последовательных простых чисел (допустим, начав с 11, 13, 17, 19,... ) и разделите их по модулю 7. Другими словами, разделите каждое простое число на 7 и сохраните только остаток. Результатом будет последовательность целых чисел из множества {1, 2, 3, 4, 5, 6}, которая выглядит почти как результат нескольких бросков правильной кости.

$\begin{align*}
 11 \bmod 7 & \rightarrow 4 \qquad 47 \bmod 7 \rightarrow 5 \\
 13 \bmod 7 & \rightarrow 6 \qquad 53 \bmod 7 \rightarrow 4 \\
 17 \bmod 7 & \rightarrow 3 \qquad 59 \bmod 7 \rightarrow 3 \\
 19 \bmod 7 & \rightarrow 5 \qquad 61 \bmod 7 \rightarrow 5 \\
 23 \bmod 7 & \rightarrow 2 \qquad 67 \bmod 7 \rightarrow 4 \\
 29 \bmod 7 & \rightarrow 1 \qquad 71 \bmod 7 \rightarrow 1 \\
 31 \bmod 7 & \rightarrow 3 \qquad 73 \bmod 7 \rightarrow 3 \\
 37 \bmod 7 & \rightarrow 2 \qquad 79 \bmod 7 \rightarrow 2 \\
 41 \bmod 7 & \rightarrow 6 \qquad 83 \bmod 7 \rightarrow 6 \\
 43 \bmod 7 & \rightarrow 1 \qquad 89 \bmod 7 \rightarrow 5 \\
 \end{align*}$

Читать дальше →
Total votes 91: ↑91 and ↓0+91
Comments41

Философия нуля

Reading time4 min
Views13K
В математике, как и везде, есть запретные понятия, и любая серьезная попытка раскрытия этих понятий сообществом встречается в штыки, выливаются тонны негатива на пытающегося поднять эту тему. В математике эти понятия — это ноль и бесконечность.
Однажды, чтобы понять сложность полной остановки деятельности, я решил поставить эксперимент над собой. В каком состоянии человек ничего не делает? Как минимум когда спит без снов, поэтому я решил по-максимуму отоспаться (не называйте меня лентяем), тем более случай попался подходящий под условия эксперимента — я попал в больницу, меня не дергали, я был предоставлен сам себе, еду приносили в палату и у меня было много времени на сон (вся ночь и почти целый день).
Читать дальше →
Total votes 54: ↑14 and ↓40-26
Comments262
1
23 ...