главная новое лучшее написать
2

Ответ спасен из Яндекс.Кью

На самом деле, это не всегда так. Смысл и содержание математического выражения 0^0 обсуждался со времён Огюстена Луи Коши. До Огюстена Луи Коши и появляния полноценной современной теории действительных чисел 0^0 был принятым равным единице без вопросов, причем, на тот момент, в основном, из эмпирических данных: график показательно-степенной функции x^x приближали к нулю справа и вроде бы как графически получалась единица, что всех устраивало.

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

Если сократить и перевести на современный язык, то проблемы начинаются, если мы говорим про множество действительных чисел. На множестве действительных чисел операция возведения в степень определена как a^b = exp(b^log(a)), где exp() -- показательная функция по основанию e, а log() -- натуральный логарифм. Но логарифм от нуля не определен, следовательно, на множестве действительных чисел операция не может быть определена.

Такая же ситуация у нас получается и с комплексными числами, для которых форма записи такая же, только уже через комплексный логарифм: комплексный логарифм от нуля так же не определен.

С другой стороны, в XX-м веке произошло переосмысление выражения в контексте общей алгебры, комбинаторики и наивной теории множеств.

  1. Комбинаторика и теория множеств:

Множество A можно отразить во множество B количеством способов: |A|^|B| . Соответственно, пустое множество в пустое множество можно отобразить один единственный раз, а значит 0^0 = 1. Однако заметим, что в этом случае мы работаем только с кардинальными числами, которые по определению являются обобщенным случаем натуральных чисел.

  1. Общая алгебра. Единица является нейтральным элементом относительно произведения. Поэтому, вроде бы логично выбрать конвенцию , что 0^0 = 1 , так как если мы определяем возведение в степень как гипероперацию относительно произведения, то имеем следующую картину для показательно-степенной функции:

3^3 = 1 * 3 * 3 * 3 = 27

2^2 = 1 * 2 * 2 = 4

1^1 = 1 * 1 = 1

0^0 = 1 -- "пустое произведение", остался только нейтральный элемент относительно операции умножения.

  1. "Наивное определение". "Любое число в степени 0 равно 1, а значит и 0 в степени 0 тоже равно 1".

Действительно, lim [x-> 0+] (x^x) = exp( lim [x-> 0+] (x*log(x))) = exp ( lim [x-> 0+] (log(x)/(1/x))) -> получаем неопределенность вида infty / infty , а значит можно применить правило Лопиталя -> (d / dx) (log(x)) = 1/x ; (d / dx) (1/x) = - (1/sqr(x)) => exp ( lim [x-> 0+] (log(x)/(1/x))) = exp ( lim [x-> 0+] (1/x)/(- (1/sqr(x)))) = exp ( lim [x-> 0+] (-x)) = exp (0) = 1. То есть, предел функции f(x) = x^x при x-> 0+ равен 1.

Из пп. 2 и 3 максимум можно вывести локальную конвенцию о равенстве 0^0 = 1, исключительно, из эстетических, а не чисто математических соображений. При этом, в случае 3 придется закрыть глаза и на область определения показательно-степенной функции и на степенную функцию с нулевым показателем, все значения которой всегда равны нулю и почему не выбрана эта конвенция в качестве ориентира, в рамках наивного пункта 3 объяснить невозможно.

В советских энциклопедиях выражение считалось неопределенным, тогда как Дональд Кнут настаивал на том, что ноль в нулевой степени "должен" (sic!) быть равен единице, просто потому, что ему так удобно разлагать экспоненту в ряд.

И действительно, если конвенция не работает, то экспонента разлагается в ряд следующим образом:

exp(x) = 1 + sum[n=1,infty] [(x^n)/(factorial(n))]

А если мы принимаем конвенцию, то следующим образом:

exp(x) = sum[n=0,infty] [(x^n)/(factorial(n))]

Как видим, на одно слагаемое меньше.

Но для разложений в ряд специально хочу обратить особое внимание, что в данном конкретном случае мы работаем с ординалами (т.е. с обобщением натуральных чисел), которые на компьютере мы будем передавать типом integer.

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

Решение спора пришло вместе с развитием computer science. IEEE приняли решение, что под возведением в степень мы понимаем, на самом деле, как минимум, три разные функции, а именно:

pow(a,b)

pown(a,b)

powr(a,b)

Где pown() -- строго типизированная функция, определенная для аргументов типа integer, и для случая pown(0,0) возвращает единицу.

powr() -- строго типизированная функция, определенная для аргументов типа real, и при подстановке "нулей" вернет NaN -- Not-A-Number (букв. "не число")

Также есть третья функция pow() , которая для "целочисленных нулей" вернет 1, а для "нулей типа real" вернет NaN. Функция присутствует для совместимости со стандартом C99 .

Следует специально отметить, что тип real -- это не "действительные/вещественные" числа фундаментальной математики, а их рациональные приближения в виде чисел с плавающим десятичным разделителем (floating point / comma). Но по аналогии с возведением степень для действительных чисел, операция возведения в степень для чисел с плавающей запятой была определена через логарифм. Т.е., powr (a,b)= exp(b^log(a)) , а натуральный логарифм от нуля, как мы помним, принципиально не может быть определен.

Отдельно хотелось бы остановиться на "наивной" "эмпирической" конвенции до Огюстена Луи Коши: когда значение показательно-степенной функции приближалось "справа". Обычно, такую наивную операцию сторонники Кнутовского ригоризма ("должно быть определено!") предлагают проверить на калькуляторе, опытным т.с., путём предлагая возводить число в степень себя самого, постепенно уменьшая аргумент к нулю, минуя минимум функции в точке 1/e. Однако, это приближение не является равномерным и не проводится приближение слева. Потому что слева комплексная показательно-степенная функция приближается к комплексному же значению, а не к целочисленной единице.

В настоящий момент, советский подход-- то есть восприятие выражения как неопределенного-- практически изжит и наиболее популярен кнутовский ригоризм, фундаментализм и, не побоюсь этого слова, фанатизм, благодаря распространению опус магнум Дональда Кнута "Искусство Программирования". Так что основная аргументация сторонников определенности иногда сводится вообще к аргументу ad verecundiam: "так у Дональда Кнута написано". Но иногда бывает небесполезно читать бюллетени IEEE и ставить все радикальные assertio под сомнение.

Это если совсем кратенечко и по верхам.

От себя лично отмечу, что по моему личному мнению, радикальные "кнутовцы" находятся в состоянии тяжкого греха и не могут получать Святого Причастия.

Я буду за них молиться.

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