Почему Microsoft Excel 7 говорит, что 8 ^(- 1 ^(- 8 ^ 7))) = 8, а Вольфрам Альфа - 1/8?
Эти результаты совпадают, если я заменю -2097152.0 на -8 ^ 7.
Теперь -1 к любой степени -1. Поэтому -1 ^(- 8 ^ 7) = -1. И 8 ^ -1 = 1/8.
Excel не прав.
Попробуйте и посмотрите!
4 ответа
Проблема в том, что в Excel знак минус используется для обозначения как оператора вычитания, так и унарного знака. Это легко проиллюстрировать. В А1 введите:
=-1^(ROW())
и скопируйте вниз:
Флип / флоп положительный / отрицательный указывает, что Excel видит знак минус как унарный и обрабатывает эту формулу следующим образом:
=(-1)^(ROW())
Теперь в B1 введите:
=0-1^(-ROW())
и скопируйте вниз:
Отсутствие переворачивания означает, что Excel видит знак минуса как оператор вычитания и обрабатывает эту формулу следующим образом:
=0-(1^(-ROW()))
Конечно, пользователь всегда может контролировать приоритет, используя круглые скобки.
EDIT # 1:
Смотрите объяснение Билла Елена
Excel и Wolfram Alpha имеют разные правила приоритета для разбора выражения, такого как возведение в степень и унарный минус.
- x ^ y
Excel рассматривает унарный минус как более высокий приоритет и делает это первым, оценивая выражение как:
( - x ) ^ y
Вольфрам Альфа сначала возводит возведение в степень, оценивая выражение как:
- ( x ^ y )
Это неверно -1 ^ 2 равно 1. Однако -1 для любой нечетной степени равен -1; это правда. Используя совершенно разумную логику, вы можете сказать, что 8 ^(- 1 ^(- 8 ^ 7)). -8 ^ 7 = -2 097 152, четное число; следовательно, -1 ^(- 2 097 152) равно 1/(- 1 ^(2 097 152)), что уменьшает его до 1/1 или просто до 1, а 8 ^ 1 равно 8. Ваша запись в WolframAlpha в некотором роде ошибочна.
РЕДАКТИРОВАТЬ: я сделал расчет на Wolfram, и оказывается, что вы ввели это неправильно. Вы должны изолировать -1 дальше от базы, вот так:
8^( (-1)^(-8^7) )
Вольфрам выплюнул это мне (идентично моей записи):
8^((-1)^(-8^7))
Вольфрам Альфа делает это:
-(1 -2097152) = -(1) = -1
8 -1 = 1/8
Excel, с другой стороны, делает это:
(-1)-2097152 = 1
8 1 = 8
Действительно, Excel не прав - его следует сначала возвести в степень, а затем отрицать. Попробуйте эту формулу: =8^(-(1^(-8^7)))
Теперь -1 к любой степени -1
Как уже указывал var firstName, это неверно. Тем не менее, это правда, что -1 N = -1 верно для любого N
- опять же, потому что вы должны сначала возвести в степень, а затем отрицать.