Ответ на пост «Почему на ноль делить нельзя»

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

Спойлер для ЛЛ: на 0 нельзя делить потому, что если обозначить 1/0 = (некоторое специально очень большое значение, именно так до этого создали из натуральных чисел целые, а потом из целых чисел рациональные) то выяснится, что эта не является числом.

(0) Предположим, что мы в детском саду, изучаем деление и думаем что если 1 разделить на 0 - получится такое особое большое число : "1 / 0 = ∞", "2/0 = 2*", "3/0 = 3*"... Покажем, что детсадовские рассуждения не верны и к чему это приведёт.


(1)На столе лежат 6 яблок, вы за раз можете забрать 2. Сколько вам потребуется подходов? Правильно 3. 6 / 2 = 3.

(2) На столе лежит 1 яблоко, вы за раз можете забрать 0. Сколько вам потребуется подходов забирая 0 яблок, чтобы забрать со стола всё? Э... ну нисколько не хватит - предположим такое очень-очень большое число бесконечность . 1 / 0 = .


(3) На столе лежат 6 яблок, вы за раз можете забрать 0. Сколько вам потребуется подходов? Э... ну нисколько не хватит - ну формально пусть будет шесть бесконечностей. 6 / 0 = 6 * 1 / 0 = 6 * . (3.1)
А для 5 яблок - формально будет 5 бесконечностей. 5 / 0 = 5 * 1 / 0 = 5 * ∞. (3.2)
.... вроде пока всё верно так?

(4) Давайте внимательнее посмотрим что вообще значит 1 / 0 = , это значит, что мы можем перейти от деления к умножению: ∃с: (a / b = c) => (a = b * c), тогда
*) я вообще не очень понимаю как это 5-му классу сказать про транзитивность (=), ассоциативность (*) - вероятно надо оставить за скобками.
6 = 6 * 1 = 6 * (0 * ) = 6 * 0 * = 0 * = 1.


(5) Так стоп ерунда получается. Как такое возможно?
Ответ - такое возможно только если наше изначальное предположение (что результат 1/0 = является числом) не верно, т.е. числом не является. Вот тогда законы умножения, которые верны для чисел, на не распространяются и никакого "парадокса" нет.

ИТОГО:

на 0 нельзя делить потому, что даже если формально записать "1/0 = ∞", этот значение ∞ ведёт себя очень странно, и числом не является.

===========================================================

ПС1

Мне тут предлагают поменять определение на

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

Мне этот ответ не нравится.
Потому, что это определение вообще ничего не говорит о том, что происходит.
А если мы напишем "1/0 = " - не число и попробуем посмотреть что происходит, то происходит дофига всего интересного
- мат-анализ, если мы ограничимся пределами
- колесо и IEEE 754 https://ru.wikipedia.org/wiki/Колесо_(алгебра) https://ru.wikipedia.org/wiki/IEEE_754-2008) - если мы ∞ определим как "одно значение"
- теория бесконечно больших и малых чисел (вроде бы это будут бесконечные ординалы) - если мы попробуем то, что получилось считать "специальными числами".

ПС2
На чуть более фундаментальном уровне:
- на 0 делить нельзя потому, что с делителем 0 невозможно построить поле. т.е. появится семейство функций бесконечно порождающих новые множества (вроде это будут множества бесконечных ординалов и им обратных):
- f1 :: R -> R_∞; f1(x) = x / 0 -- что будет если записать все объекты от деления на 0?
- что f2 :: R_∞ -> R_0; f2(x) = 0 * (0 * x) -- что будет если биективно отразить все бесконечности в 0?
- f3 :: R_0 -> R_∞∞; -- что будет если уже эти R_0 отразить в бесконечность?
.......
Если вы можете объяснить почему так на каком-то фундаментальном уровне (просто написать что будет я и сам могу), почему какие-то сочетания операций порождают "хорошие" самозамкнутые структуры, а какие-то нет - то добро пожаловать в комменты объяснять мне.
Если вы можете только жонглировать терминами из теории поля - ну я книжку и сам могу открыть.

Лига образования

4.5K поста21.8K подписчиков

Добавить пост

Правила сообщества

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


ДЛЯ АВТОРОВ:


Приветствуются:

-уважение к читателю и открытость

-желание учиться

Не рекомендуются:

-публикация недостоверной информации


ДЛЯ ЧИТАТЕЛЕЙ:


Приветствуются:

-конструктивные дискуссии на тему постов

Не рекомендуются:

-личные оскорбления и провокации

-неподкрепленные фактами утверждения


В этом сообществе мы все союзники - мы все хотим учиться! :)

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Можно сделать корректной систему. Просто нужно дополнить, например, ещё символом ошибки. Все операции с ошибкой - ошибка. Будет корректно. Проблема в том, что потеряются аксиомы кольца. А мы ими дорожим.

раскрыть ветку (8)
Автор поста оценил этот комментарий

Скажем так "боле-менее" сделать можно.

Но хорошо не будет уже никогда. Например чему будет равно 0 + (-0) ?
float a = 1 / ((1 / Inf) + (1 / -Inf))

раскрыть ветку (7)
Автор поста оценил этот комментарий

0+(-0) =0, это всегда так.


⊥ - ошибка


Так, например, ∞-∞=⊥, /∞=⊥. Но при этом 1/∞=0.


Ну и так далее. Это странная система будет, но вполне корректная.

раскрыть ветку (6)
Автор поста оценил этот комментарий

я в курсе IEEE 754 (или колесо).

Проблема в том, что "b" должно быть NAN, а по-правилам бесконечность:
float a = 1/INF + (-1/INF);
float b = 1/a;

По-сути же "неопределённость" в бесконечности мы сводим к NAN.
А обратное для "0 с неизвестным знаком" - тоже должно быть NAN.

То есть (повторю ещё раз): боле-менее сделать можно, но хорошо уже никогда не будет хД

раскрыть ветку (5)
Автор поста оценил этот комментарий

А зачем там нужно делать минус бесконечность, то есть (-1/INF)? У нас только одно деление будет 1/inf и все. То есть операции будут только + и *, а в остальном там где есть обратный по одной из них, там есть.

раскрыть ветку (4)
Автор поста оценил этот комментарий

так стоп "-" нет?
Всё-таки колесо (и IEEE 754) - это расширение R, где - есть.

ну и да 1/INF - 1/INF (а если хотите 1/INF + 1/(-INF)) - NAN по той же самой причине, что и INF - INF - мы хотим придать INF/-INF какую-то разумную семантику при вычислениях. Ну т.е. "вылезли в очень большие числа".

раскрыть ветку (3)
Автор поста оценил этот комментарий

Я не знаю кто такое колесо.


ну и да 1/INF - 1/INF (а если хотите 1/INF + 1/(-INF)) - NAN по той же самой причине, что и INF - INF - мы хотим придать INF/-INF какую-то разумную семантику при вычислениях. Ну т.е. "вылезли в очень большие числа".

А зачем нам вообще определять эти операции? Но если хотите, то пусть будет ошибка, то есть NAN. При этом я бы и -INF тоже сделал NAN. Точнее, я бы вообще не вводил минус и деление в сигнатуру.

раскрыть ветку (2)
Автор поста оценил этот комментарий

> я не знаю что такое колесо
Математический прототип IEEE 754
https://ru.wikipedia.org/wiki/Колесо_(алгебра)

> А зачем нам вообще определять эти операции?
1. У нас уже есть мн-во рациональных чисел Q. На них уже есть эти операции => в новой системе надо их тоже поддержать.
2. Хотят чтобы числа обладали разумной семантикой, т.е. Inf - действительно было "очень большое число".

Поэтому можно получить разные штуки - (добавляя варианты: {Inf}, {+Inf; -Inf; -0}, {+Inf, -Inf; NAN; -0}). Ну вот я с ходу придумал вариант: {+Inf; -Inf; Inf; +0; -0; NAN} - вроде должен работать.


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

раскрыть ветку (1)
Автор поста оценил этот комментарий

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


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

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку