Подтвердить что ты не робот

Почему 0 ** 0 равно 1 в python

Почему 0 ** 0 равно 1 в Python? Не следует ли это исключать, например 0 / 0?

4b9b3361

Ответ 1

В Википедии есть интересный обзор истории и различных точек зрения на ценность 0 ** 0:

Дискуссия продолжается, по крайней мере, с начала 19 века. В то время большинство математиков согласились с тем, что 0 ** 0 = 1, пока в 1821 году Коши не перечислил 0 ** 0 вместе с такими выражениями, как 0⁄0, в таблице неопределенных форм. В 1830-х годах Либри опубликовал неубедительный аргумент в пользу 0 ** 0 = 1, и Мебиус встал на его сторону...

Применительно к компьютерам IEEE 754 рекомендует несколько функций для вычисления мощности. Он определяет pow(0, 0) и pown(0, 0) как возвращающие 1, и powr(0, 0) как возвращающие NaN.

Большинство языков программирования придерживаются соглашения 0 ** 0 == 1. Python не является исключением, как для целочисленных аргументов, так и для аргументов с плавающей точкой.

Ответ 2

рассмотрим x^x:

Используя пределы, мы легко можем перейти к нашему решению и переставить x^x, получим:

x^x= exp(log(x^x))

Теперь у нас есть:

lim x->0 exp(log(x^x))= exp(lim x->0 xlog(x)) = exp(lim x->0 log(x)/(x^-1))

Применяя правило L'Hôpital, получаем:

exp(lim x^-1/(-x^-2)) = exp(lim x->0 -x) = exp(0) = 1=x^x

Но согласно Вольфрам Альфа 0**0 неопределен, и следующие объяснения были получены ими:

0 ^ 0 - undefined. Отсутствие четко определенного значения для этого величина следует из взаимно противоречивых фактов, что а ^ 0 всегда 1, поэтому 0 ^ 0 должно равняться 1, но 0 ^ а всегда 0 (при a > 0), поэтому 0 ^ 0 должно равняться 0. Можно утверждать, что 0 ^ 0 = 1 является естественным определением так как lim_ (n- > 0) n ^ n = lim_ (n- > 0 ^ +) n ^ n = lim_ (n- > 0 ^ -) n ^ n = 1. Однако предел для общих комплексных значений n не существует. Поэтому выбор определение для 0 ^ 0 обычно определяется как неопределенное. "

Ответ 3

2 ^ 2 = (1 + 1) * (1 + 1) = 4 (два объекта встречались два раза)

2 ^ 1 = (1 + 1) * 1 = 2 (два объекта произошли один раз)

2 ^ 0 = (1 + 1) * 0 = 0 (двух объектов не было)

1 ^ 2 = 1 * (1 + 1) = 2 (один объект встречался два раза)

1 ^ 1 = 1 * 1 = 1 (один объект произошел один раз)

1 ^ 0 = 1 * 0 = 0 (один объект не обнаружен)

0 ^ 2 = 0 * (1 + 1) = 0 (ноль объектов встречалось дважды)

0 ^ 1 = 0 * 1 = 0 (ноль объектов произошло один раз)

0 ^ 0 = 0 * 0 = 0 (нулевых объектов не было)

Поэтому вы не можете сделать что-то из ничего!