Я перевірив результат 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. Якщо потужність є цілим цілим числом, результат такий же, як і для Pown, інакше результат такий, як і для powr (за винятком деяких виняткових випадків).
pown розглядає 0 0 як 1. Потужність повинна бути точним цілим числом. Значення визначається для негативних підстав; наприклад, Pown (−3,5) - −243. Powr вважає 0 0 як NaN (Not-a-Number - невизначений). Значення також NaN для таких випадків, як powr (−3,2), де основа менше нуля. Значення визначається журналом epower × log (база).
Варіант порошку надихається функцією порошку від C99, головним чином для сумісності. [21] Це корисно здебільшого для мов з єдиною функцією живлення. Варіанти Pown та Powr були введені через суперечливе використання силових функцій та різних точок зору (як зазначено вище). [22]
Звичайно, це не має жодного стосунку до того, який правильний математичний результат: як зазначають інші, відповідь існує більше ніж одна, і IEEE довелося приймати довільне рішення.
Нуль до сили нуля - це суперечність
Це повинно генерувати помилку. Єдина причина, по якій ви не бачите помилки, що створюється, пов'язана з тим, що версія калькулятора, про яку йде мова, не вловила цю вхідну помилку.
Існує деяка напівпровідність приблизно 0⁰, яка зводиться до функції x ^ y, що має розрив при (x, y) -> (0,0). Це напівпровідність, оскільки математична нісенітниця забороняє функції, що мають значення при розриві.
Загальна практика вбудовувати цілі числа в реальні числа таким чином, щоб функція, визначена на дійсних даних, відповідала одній і тій же функції, визначеній для цілих чисел, коли реальна функція приймає цілісні значення. Тож мало розрізнити 0,0 ^ 0 від 0,0 ^ 0,0.
Тепер x⁰ з цілим числом 0 як експонент - це добуток, що містить точно нульові множники x. Оскільки жодні фактори x не містять його значення, мало значення в призначенні йому значення залежно від x, а його значення як порожнього добутку досить чітко 1, нейтральний елемент для множення.
Це також має добрий сенс, оскільки воно не довільно обмежує біноміальну теорему ненульовими значеннями. Таким чином, це аргумент, заснований на спробі досконало виконати функцію x at при x = 0, зробивши її визначеною і безперервною всюди.
Якщо ми спробуємо це замість функції 0 ^ x, то межа при x = 0 + може бути дорівнює 0, але визначення її як такої все ще не допомагає вилікувати суттєвий розрив, оскільки функція не визначена для від'ємного x.
Тепер калькулятори, як правило, обчислюють x ^ y як exp (y * ln (x)). Звичайно, це погана новина для x = 0. Таким чином, такі значення повинні бути явно запрограмовані, або ви отримаєте не-число. Для явного програмування вам потрібно покластися на математичну інтуїцію програміста, і типовий програміст буде більше керуватися псевдоматематичною інтуїцією на зразок "функція повинна бути безперервною, де визначено", ніж математик.
Крім того, ви можете очікувати шквалу коментарів від різних користувачів, і чисті математики не будуть повертатися до калькуляторів за своє бачення математичної істини настільки багато, тож ви не можете очікувати, що їх внесок зможе переконатись від інших.
Таким чином, результат є більш демократичним, ніж математичним, і демократичні більшості мають тенденцію до змін.