Публикация научных статей.
Вход на сайт
E-mail:
Пароль:
Запомнить
Регистрация/
Забыли пароль?
Научные направления
Поделиться:
Статья опубликована в №78 (февраль) 2020
Разделы: Информационные технологии, Математика
Размещена 03.02.2020. Последняя правка: 28.03.2020.
Просмотров - 2663

Многомерные числа или Ноль - имеет значение, а Бесконечность- конечна! Деление на Ноль!

Зиновьев Василий Владимирович

Филиал ПАО Ленэнерго СПбВС

Заместитель главного инженера ЦВВР

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


Abstract:
The article describes a fundamentally new method of representation of numbers, with which it is possible to solve the problem of data loss when multiplying by zero and getting uncertainty when dividing by zero.


Ключевые слова:
деление на ноль возможно; деление на ноль в программировании; деление на ноль в математике; оперирование бесконечностью; многомерные числа

Keywords:
division by zero; infinity operation; multidimensional numbers


УДК 519.61

Введение:

Исторически «ноль» является проблемой в математике: с одной стороны, без ноля невозможно представить современную математику, с другой, использование ноля накладывает некоторые ограничения в расчётах (например, деление на ноль).

Актуальность:

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

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

Научная новизна:

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

История ноля и его представление в современной математике:

Понятие ноля и бесконечности в истории отлично описано Чарльзом Сейфе [1].

Современное понимание ноля и бесконечности:

Ноль - это «портал» в другие миры:

Те, кто из нас помнят начальную школу, могут сказать, что там нас учили: 0 — это пустота или отсутствие чего-либо. Если у Тани 0 яблок, а у Саши 5 яблок, сколько у Тани и Саши яблок?

0+5=5;

Нет сомнений, ни у кого не может быть меньше 0 яблок.

Первый портал ноля:

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

рис. 1

Появление отрицательных чисел стало логическим продолжением оператора вычитания «-», когда из меньшего числа мы вычитаем большее, само появление отрицательных чисел никого не смутило (за малостью лет мы не задали вопрос Марье Ивановне, мол, а как может быть у Тани меньше 0 яблок), и мы приняли это как данность, и пошли дальше.

Второй портал ноля:

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

Но, вот оказалось, что всё не так просто.

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

Корень из отрицательного числа может быть как положительным, так и отрицательным (это число назвали мнимым, оно и существует и нет одновременно).

 рис. 2

Прекрасно мнимые числа описаны Марком Беньевичем Балк [2].

Вроде всё понятно, но…

Третий (крайний) портал ноля:

Что делать, когда нам приходиться делить на ноль?

Всё, что нам объяснили в школе (кроме примера с калькулятором), так то, что при делении на ноль получается «бесконечность».

 рис. 3

Бесконечность? А что это такое? Это не число! Это то, что поглощает любые числа. Все числа делятся на все, кроме ноля, поделив на ноль мы получаем «бесконечность», то есть «не число»!

 

Те, кто учился в институте, могут вспомнить ещё вот эту картинку:

 рис. 4

Но нам никто не рассказал, что делать с вот этими выражениями:

 рис. 5

Все эти уравнения не имеют решения.

Те из нас, кто глубоко изучал высшую математику, ещё вспомнят вот эту картинку:
рис. 6

Это сфера Римана, которая объясняет нам проблему деления на ноль и что в итоге этого деления получается. Точнее сказать, мы научились оперировать числами, стремящимися к нулю, но не нолём. И числами, стремящимися к бесконечности.

Прежде чем перейти к сути немного поразмышляем.

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

Вопросы о бесконечности:

Что больше:             ∞ или ∞? Очевидно, что они равны? Или нет?

Что больше:             ∞ или ∞+100? Или они равны? Или нет?

А если так:              ∞ или ∞+10000000000000?

А так:                      ∞ или ∞*2?  Так, кажется, точно второе значение больше?

А если так:              ∞ или ∞*∞?  Вот тут, то сто процентов правое выражение больше?

Классическая математика говорит о том, что все эти выражения не имеют ответа, то есть, нельзя поставить ни один из знаков неравенства.

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

Если представить, что бесконечность имеет какой-то конечный вид, то было бы логичным заключение о том, что две бесконечности больше чем одна. А бесконечно много бесконечностей, тем более больше, чем просто бесконечность.

Оказывается, если поменять представление о бесконечности, то становиться возможным оперировать ею, как обычным числом. При этом, изящно решить проблемы деления на ноль и потери данных при умножении на ноль. Для того, чтобы числа не растворялись в бесконечности, необходимо принять постулаты:
-бесконечность конечна;
-она есть обратное от ноля;
-бесконечность возникает в следствии деления любого числа (кроме ноля) на ноль, при этом делимое число переходит в следующее измерение.

 

Многомерные числа и их представление.

 

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

Классический ноль – это тот самый ноль (в классической математике), при умножении на который любого числа, мы получаем классический ноль, а при делении на него - получается неопределённость (классическая бесконечность).

Классическая бесконечность -  эта та самая бесконечность (неопределённость), в которой растворяются все числа при использовании её в качестве оператора.

Многомерный ноль – это любое число, делённое на бесконечность (многомерную бесконечность), в первом представлении многомерный ноль это n *∞-1 , где n - любое (классическое) число, не равное классическому нулю или классической бесконечности, например единица. В дальнейшем, первоначальный ноль, при автозаполнении баз данных, будем представлять именно как 1 *∞-1. Это выражение не противоречит классической математике, т.к. любое число, делённое на бесконечность, это ноль. Для понимания: в общем случае многомерный ноль это n *∞-m , где m – целочисленное число от 1 до ∞.

Многомерная бесконечность – это любое число, умноженное на бесконечность (многомерную бесконечность). В первом представлении многомерная бесконечность это n *∞1 , где n - любое (классическое) число не равное классическому нулю или классической бесконечности, например, единица (1). В общем случае многомерная бесконечность - это n *∞m , где m – целочисленное число от 1 до ∞.

Число нулевого (существующего) измерения – это классическое число, представленное в многомерном выражении как n *∞0.

Размерность (измерение) – это целочисленное число, в степень которого возведена бесконечность. В представлении многомерных чисел функции сложения и вычитания возможны только с числами той же размерности (измерения).  Размерность может быть отрицательной (-1,-2,-3… -m), нулевой и положительной (1,2,3… m).

 

Итак, в общем случае действительные числа 1, 2, 3 и т.д. необходимо представить в следующем виде:

              1 *∞0, 2 *∞0 , 3 *∞0 и т.д.

Где степень, в которую возведена бесконечность, говорит об измерении, в котором находится значение.

То есть, нулевая степень – значит наше обычное (классическое) измерение.

(-1) «минус первая» как и -2, и -3…. и т.д. степень говорит о том, что это значение на одно или несколько измерений ниже классического и в представлении классической математики это ноль.

Соответственно 1, 2, 3 и т.д. степень говорит нам о том, что значение находится на одно или несколько измерений выше чем классическое и в классическом случае это бесконечность.

для начальных условий принимаем   0= 1 *∞-1 . 

Если делим на ноль любое число, то степень бесконечности увеличивается на единицу,  если умножаем - то уменьшается.

И получаем :     Х / 0 = Х/(1 *∞-1) =х*∞1 .

То есть обычную в нашем понимании бесконечность, но при этом число не теряется в бесконечности, а остаётся для дельнейших расчётов. Если в последующих расчётах его умножить на многомерный ноль (1 *∞-1), то степень бесконечности уменьшиться и число не будет потеряно.

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

Многомерная арифметика (или сложение и вычитание бесконечностей с обычными числами).

Если обычное число представить как:

              Х*∞0+ Х*∞-1+….. Х*∞-n…. Х*∞-∞ становиться ещё интереснее.

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

Теперь можно вычитать и складывать бесконечность с обыкновенными числами без потери данных.

Например:

               1*∞1 +  20*∞0

Машина поймёт, что к числу первого порядка прибавляется число нулевого порядка, и запишет в память, именно так:

              1*∞1 +  20*∞0   если в последующем будут прибавляться или вычитаться числа нулевого порядка, то действия сложения или вычитания будут производиться именно с нулевым порядком, то же самое относиться ко всем остальным меньшим порядкам этого числа. В общем случае: складываться или вычитаются числа соответствующих порядков.

                Правила умножения и деления в многомерной арифметике, такие же как в классической арифметике с умножением и делением: результатом умножения одного многомерного числа (Х) на другое (Y), станет такое многомерное число (Z), в котором сложатся произведения каждого измерения числа (Х) со старшим измерением числа (Y)             

  Пример:

                (5*∞0 +  20*∞-1)*(2*∞1 +  5*∞0) =10*∞1 +  40*∞0

Деление многомерных чисел аналогично с умножением, каждая размерность делимого делится на старшее измерение многомерного числа:

                (10*∞1) + (40*∞0) /  ((2*∞1) +  5*∞0)     = ((5*∞0) +  20*∞-1

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

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

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

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

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

                                                    Реализация в программировании:

Прошу прощения за синтаксис (языка программирования), главное понять идею. Для примера использован С++.
Создаём некий класс или структуру (кому как удобно), например multinumber

Со следующими членами:

int dimension; //степень бесконечности, по умолчанию для всех чисел кроме ноля степень бесконечности равна 0; для ноля -1.

float value; // собственно само значение числа, может быть отрицательным и положительным.

*multinumber littlenumber //указатель на следующего члена многомерного числа нижнего порядка. На начальном этапе он равен NULL.

Функции:

конструктор по умолчанию// где создаётся объект для классического ноля, со следующими значениями dimension= "-1"; value="1"; littlenumber = NULL;

конструктор// для вводимых данных, где пользователем или программой задаются значения  dimension и value

деструктор// в котором не забываем прописать рекуперативное удаление всех младших членов.

Ну и собственно, перегружаем арифметические функции для членов этого класса(или структуры):

Для "+" и "-" если степень бесконечности равны и нет младших членов, то соответственно сумируем или вычитаем значение value и возвращаем с тем же значением dimension, если у слагаемых есть младшие члены, то, соответственно, делаем с ними тоже самое. Если dimension не равны, то слагаемому с большим значением степени бесконечности, добавляем littlenumber с указателем на слагаемое с меньшим значением dimension.

Для "*" для старших членов умножаемых multinumber, перемножаем value и суммируем dimension, если есть младшие члены, то в возвращаемом multinumber добавляем соответствующие littlenumber в соответствии с правилами умножения многомерных чисел.

Для "/" для старших членов multinumber соответственно вычитаем dimension и соответственно делим value, если есть младшие члены, то в соответствии с правилами деления многомерных чисел, делим их.

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

Можно также прописать функцию отображения значений для пользователя, где у нас три варианта значений:

с dimension  меньше ноля - отображаем "0";

dimension  = 0; - отображаем value;

и dimension  больше ноля - отображаем "infinity".

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

Эта числовая модель работает на всех видах числовых данных, в том числе опробована на комплексных числах.

Библиографический список:

1. Чарльз Сейфе. Ноль: биография опасной идеи, 2014
2. Балк М.Б. Реальные применения мнимых чисел, 1988




Рецензии:

3.02.2020, 13:39 Голик Феликс Валентинович
Рецензия: Тема актуальна: с потерей данных и произвольной заменой "бесконечности" достаточно большим числом сталкиваться при численных компьютерных расчетах приходится часто. Можно только удивляться, почему предложенное автором решение проблемы не появилось раньше. Структура и содержание статьи, логика изложения материала соответствую научному стилю публикаций. Выводы автора статьи имеют под собой строгую научную основу. Мысли сформулированы ясно и изложены логично. Внедрение "многомерной арифметики" в компьютерные программы численного анализа позволит, на наш взгляд, сделать расчеты более корректными. Вызывает некоторое сомнение термин "многомерное число". Может быть здесь лучше говорить о порядке или ранге? Число n-го порядка? Считаю, что статья может быть опубликована в журнале SCI-ARTICLE.

03.02.2020 14:14 Ответ на рецензию автора Зиновьев Василий Владимирович:
Феликс Валентинович, огромное спасибо за положительный отзыв! Надеюсь, что этот метод будут использовать. Название "многомерное число" лично для меня не принципиально, главной целью было донести идею.

6.02.2020, 15:38 Усов Геннадий Григорьевич
Рецензия: В статье есть фраза: "Прошу прощения за синтаксис, главное понять идею,.." Вообще, эту фразу надо убрать из статьи. Идея подаётся через публикацию, а статья имеет кучу синтаксических ошибок. Получается, что есть положительная рецензия, и, согласно правилу журнала, статья будет опубликована. А как же отсутствие в статье большого числа знаков препинания, после точек идут строчные буквы, после слова "пример" и самого примера, где 2 колонки, идут 4 непонятные колонки с текстами, и т.д. Поэтому статья должна быть доработана перед публикацией с использованием любого текстового редактора.
09.02.2020 12:12 Ответ на рецензию автора Зиновьев Василий Владимирович:
Уважаемый Геннадий Григорьевич! Огромное спасибо, за ваше желание сделать статью лучше! Я постарался учесть все Ваши замечания. Исправил синтаксические и орфографические ошибки (те из них, которые нашёл), добавил наглядный пример, а так же исправил логические ошибки в самой статье. Убрал "непонятные колонки с текстами". Фразу с синтаксисом не стал убирать, так как здесь имел ввиду "синтаксис языка программирования". Честно признаться, мой родной язык, для меня "ахиллесова пята", а статья писалась фрагментарно, урывками по выходным, поэтому получилась запутанной для понимания. Хотелось бы отметить, что мне льстит тот факт, что Вы расчехлили "меч рецензора" ради моей статьи. Для меня честь - стать Вашим первенцем. С наилучшими пожеланиями, Зиновьев В.В.



Комментарии пользователей:

3.02.2020, 15:17 Усов Геннадий Григорьевич
Отзыв: Уважаемый Василий Владимирович! В статье рассматривается интересная проблема при работе компьютерных программ. В аннотации Вы говорите о потере данных? Но данные не теряются. Если продолжать Ваше рассуждения в начале статьи, то умножение числа n на m означает, что m раз «взяли» число n. А если умножение на 0, то это означает, что Вы «не взяли» ни одно из чисел n. Аналогично про деление: деление на m означает получение m-ой части числа n, а деление на 0 означает, что деления не было. На счет представления результата деления на 0 в программе: в Wikipedia есть статья «деление на ноль», в которой говорится о способах представления результата деления на 0 в программе (стандарт IEEE 754). И ещё один момент: у каждой операции должна быть обратная операция, а об этом в статье ни слова. Если n делится на 0, то получается некоторая переменная. А если эту переменную умножаем на 0, то должно получиться n. С уважением, Усов Геннадий Григорьевич.


3.02.2020, 15:36 Зиновьев Василий Владимирович
Отзыв: Здравствуйте, Геннадий Григорьевич! даже не знаю как ответить на Ваш отзыв. В статье описывается способ, как можно умножить на ноль любое число, а потом его разделить на ноль и получить то самое число которое было в начале, возможно необходимо добавить конкретный пример, чтоб было понятно. На стандарт IEEE 754 не обращайте внимание, он ни чего не даёт, кроме обхода ошибки компьютера при попытке деления на ноль и выдаче понятного пользователю значения такого деления.


3.02.2020, 16:27 Усов Геннадий Григорьевич
Отзыв: Уважаемый Василий Владимирович! Конечно, нужен конкретный пример. При этом нужно показать: а что можно выиграть от применения этого метода. И за этим последуют выводы о применимости данного метода, которые должны будут отдельно представлены. И что-то добавится в аннотацию. С уважением, Усов Геннадий Григорьевич.


10.02.2020, 9:32 Усов Геннадий Григорьевич
Отзыв: Уважаемый Василий Владимирович! Над синтаксисом Вам ещё работать. Запомните правило: если предыдущая строка заканчивается на точку, то следующая строка начинается с большой буквы. Если предыдущая строка заканчивается на другие знаки препинания или без знака, то следующая строка начинается с маленькой буквы. С электротехникой мало знаком. Одно непонятно: зачем рассматривать контур (3-ий), который "перегорожен" бесконечным соротивлением? Не лучше ли его обойти? И останется только 2 контура - экономия вычислений. А то из-за 3-его контура приходится создавать новую теорию. Кстати, почему Вы не указали раздел "электротехника"?


22.03.2020, 15:10 Немлихер Иосиф Ананьевич
Отзыв: Уважаемый Зиновьев Василий Владимирович. К сожалению, я не всё понял. Позавидовал изложению, удивлён возможностями. Но, знаете, каждый о своём. Чувствуется глубокое понимание программирования. У меня есть "Методика факторизации неограниченных чисел". И, хотя она не использует бесконечность или О, она,не только решает проблему факторизации чисел детерминированным методом с неплохими временными показателями, но, как мне кажется, может быть полезна для решения других загадок вычислительных закономерностей. По методике написана программа программистом -самоучкой Белых С.А., но, к сожалению, она не адаптирована к большим числам. Мои попытки по поиску программиста, способного обеспечить написание программы, адаптированной к большим числам, к моему удивлению, уже продолжительное время, ни к чему не привели. Я показывал её уже не однократно, но показать здесь мне уже затруднительно. Но ссылками и файлом, или голосовыми переговорами - без проблем. При этом программа, не содержит каких то затруднений. Белых С.А. освоил её за неделю. А иметь такую программу "не грех". Извиняюсь за неполное понимание материала , может быть потому, что от программирования очень далёк.


23.03.2020, 10:28 Зиновьев Василий Владимирович
Отзыв: Уважаемый Иосиф Ананьевич. Мне очень приятно, что Вы уделили внимание моей статье. В двойне приятно что Вы предлагаете мне сотрудничество. Возможно, я мог бы вам помочь, но я тоже в программировании самоучка, от части это и послужило причиной того, что я решал и решил проблему, которая описана в этой статье, т.к. не знал что эта проблема не решена. Но честно признаться, я не вижу прикладного смысла в факторизации чисел, и как следствие не понимаю где можно применять такую программу. Возможно, если Вы сможете мне открыть тайну необходимости такой программы я мог бы заняться ей. Хотя мне больше интересно моделирование процессов сложных систем и чем сложней системы тем интересней.


23.03.2020, 11:26 Немлихер Иосиф Ананьевич
Отзыв:  Уважаемый Василий Владимирович. Тайна программы! Эта задача тысячелетий. Необходимость её, как мне известно, в криптографии при шифровании. Я в этом абсолютный профан. Чего же я тогда взялся её решать? Это объясняется просто, мой багаж позволил заниматься только теорией чисел. И, кроме того, мне было очень интересно. И программирование, будь я в форме, как мне кажется, я тоже мог освоить, в пределах необходимости для решения конкретной задачи. Но вообще то, это учёба, а не поиск. Последнее интересней. Ну а вообще то, посредством факторизации находят всё новые и новые простые числа, стараясь, верно, найти закономерность их возникновения. Это одна из возможных задач. Самым умным советом от адресатов, с которыми мне удалось пообщаться, был ответ: "Надо написать программу". Да я сам знаю, что надо. Что я ещё могу добавить? При наличии программы не решённых сложностей в теории чисел, ещё предостаточно. У меня Mail.Ru Агент, можно поговорить, это ни к чему не обязывает.


23.03.2020, 12:22 Зиновьев Василий Владимирович
Отзыв: Уважаемый Иосиф Ананьевич. пишите мне на почту zinovyev_vv.spb@mail.ru, в свободное от работы время я постараюсь разобраться, могу ли я быть Вам чем-то полезен. Про задачу тысячелетия, я не понимаю) что даст человечеству решение этой задачи? Почему криптография и поиск простых чисел, настолько важная задача, что ей посвящены тысячи статей в журналах? Для меня это не понятно. На мой, сугубо личный взгляд, это не те задачи над которыми стоит работать. Но я могу и ошибаться, поэтому пишите.


Оставить комментарий


 
 

Вверх