Я проверил результат 0 ^ 0 в калькуляторе на разных версиях:
- iOS 10.3 => 1
- iOS 11.4 => Ошибка
- macOS 10.12.6 => 1
- macOS 10.13.5 => не число
В чем причина разницы?
Я проверил результат 0 ^ 0 в калькуляторе на разных версиях:
В чем причина разницы?
Ответы:
Хотя 0⁰ обычно не определено, некоторые разделы математики явно определяют его как 1, потому что, как вы можете видеть , это значение, к которому сходится функция y (x) = xˣ при n = 0.
Менее формально, обратите внимание, что 0,5 0,5 = 0,707 ...; 0,2 0,2 = 0,725…; 0,1 0,1 = 0,794… и 0,01 0,01 = 0,955…. По мере приближения к 0 результат будет приближаться к 1, что делает его вполне логичным и удобным для определения 0 ^ 0 как 1 в некоторых случаях .
Таким образом, ни один из этих 3-х результатов неверен сам по себе, и вместо этого все они отражают различные соглашения о значении этого неопределенного выражения.
Есть хорошая статья Википедии, объясняющая проблему. Смотрите также От нуля до нулевой степени - это 0⁰ = 1? ,
Большинство реализаций арифметики с плавающей запятой следуют стандарту IEEE 754-2008, в котором указано, что pow (0,0) возвращает 1 (см. §9.2.1).
Но он также определяет две другие функции: pown (0,0) = 1 и powr (0,0) = NaN.
Википедия резюмирует это следующим образом :
Стандарт IEEE 754-2008 с плавающей точкой используется при разработке большинства библиотек с плавающей точкой. Он рекомендует ряд операций для вычисления мощности: [20]
pow рассматривает 0 0 как 1. Если power является точным целым числом, результат такой же, как для pown, в противном случае результат такой же, как и для powr (за исключением некоторых исключительных случаев).
pown рассматривает 0 0 как 1. Степень должна быть точным целым числом. Значение определяется для отрицательных оснований; например, pown (-3,5) равно -243. powr рассматривает 0 0 как NaN (Not-a-Number - undefined). Значение также равно NaN для случаев, подобных powr (-3,2), где основание меньше нуля. Значение определяется как epower × log (base).
Вариант pow вдохновлен функцией pow из C99, в основном для совместимости. [21] Это полезно в основном для языков с одной степенной функцией. Варианты pown и powr были введены из-за противоречивого использования степенных функций и разных точек зрения (как указано выше). [22]
Конечно, это не имеет никакого отношения к правильному математическому результату: как отметили другие, существует более одного возможного ответа, и IEEE пришлось принять произвольное решение.
Кто-то из Apple понял, что 0 ^ 0 - недопустимая операция, и исправил ее.
Ноль в ноль является противоречием
Это должно генерировать ошибку. Единственная причина, по которой вы не видите сгенерированную ошибку, заключается в том, что рассматриваемая версия калькулятора не перехватила эту ошибку ввода.
Существует некоторая полуконверсия о 0 about, которая сводится к функции x ^ y, имеющей разрыв при (x, y) -> (0,0). Это полуконтроль, поскольку математически бессмысленно запрещать функцию, имеющую значение при разрыве.
Общепринятая практика - встраивать целые числа в вещественные числа так, чтобы функция, определенная в числах, соответствовала той же функции, что и целые числа, всякий раз, когда действительная функция принимает целочисленные значения. Так что нет смысла отличать 0.0 ^ 0 от 0.0 ^ 0.0.
Теперь x⁰ с целым числом 0 в качестве показателя является произведением, содержащим ровно ноль множителей x. Поскольку в его значении нет факторов x, нет смысла присваивать ему значение, зависящее от x, и его значение как пустого произведения довольно ясно равно 1, нейтральному элементу для умножения.
Это также имеет смысл, так как не ограничивает произвольно теорему бинома ненулевыми значениями. В некотором смысле, это аргумент, основанный на попытках разумно завершить функцию x⁰ при x = 0, делая ее определенной и непрерывной везде.
Если мы попробуем это с функцией 0 ^ x вместо этого, предел при x = 0 + может быть 0, но определение его как такового все еще не помогает излечить существенный разрыв, поскольку функция не определена для отрицательного x.
Теперь калькуляторы имеют тенденцию вычислять x ^ y как exp (y * ln (x)). Конечно, это плохие новости для х = 0. Таким образом, такие значения должны быть явно запрограммированы, иначе вы получите не число. Для явного программирования вы должны полагаться на математическую интуицию программиста, и типичный программист будет больше руководствоваться псевдоматематической интуицией типа «функция должна быть непрерывной там, где она определена», чем математик.
Кроме того, вы можете ожидать шквал комментариев от разных пользователей, и чистые математики не будут слишком сильно прибегать к калькуляторам для их представления о математической истине, поэтому вы не можете ожидать, что их вклад будет затмевать мнение других.
Таким образом, результат является демократическим, а не математическим, и демократическое большинство имеет тенденцию меняться.