Чому = -x ^ 2 + x для x = 3 в Excel призводить до 12 замість -6?


96

Припустимо, моя клітинка A1 в таблиці Excel містить номер 3 . Якщо я ввійду у формулу

= - A1^2 + A1

в A2, тоді A2 показує число 12, коли воно повинно показувати -6 (або -9 + 3)

Чому так? Як я можу запобігти цій оманливій поведінці?


19
Від’ємне число у квадраті - додатне число. Що б склало формулу 9 + 3. - (A1) ^ 2 дасть вам -6.
Рамхаунд

68
@ Повноваження Рамхаунду мають більший пріоритет, ніж знаки мінус у будь-якому розумному середовищі.
Ніхто

17
Повинно бути - (A1 ^ 2), щоб отримати -6 ... вам потрібні дужки навколо операції, а не лише число. Excel просто чудовий для математики, але вам потрібно дотримуватися порядку операцій, а коли сумніваєтесь, використовувати дужки!
SnakeDoc

13
Це все про порядок операцій і нічого спільного з Excel.
Ще

11
Для всіх тих, хто коментує критику навичок математики ОП: У стандартній чистої математики це однозначно слід оцінювати до -6. Зокрема, під негативним розуміється завжди значення 0-x (як зазначено у відповіді). Введення одинарної - нова тема у прикладній інформатиці, і майже завжди лише деталізація впровадження. Критикувати ОП за те, що це не розуміють, це як відповісти на запитання про плутанину щодо помилок з плаваючою комою з "програма добре. Вам просто потрібно перевірити математику. Дивіться, якщо ви записуєте ці числа у двійковій формі ..."
DreamConspiracy

Відповіді:


136

Коротка відповідь

Щоб вирішити цю проблему, просто додайте 0 перед знаком рівності

= 0 - A1^2 + A1

або додати пару дужок, щоб примусити стандартний порядок операцій

= - (A1^2) + A1

або замінити знак мінус його загальним тлумаченням множення на -1

= -1 * A1^2 + A1

У цьому конкретному випадку, коли у вас є додатковий термін + A1, найкращим рішенням є рішення, запропоноване @ lioness99a:

= A1 - A1^2

Детальне пояснення

Згідно з умовами Excel,

= - 3^2

дорівнює (-3) ^ 2 = 9, а

= 0-3^2

дорівнює 0-9 = -9.

Чому додавання лише 0 змінює результат?

Не передує мінусу, знак мінус у -3 ^ 2 вважається оператором заперечення , який є одинарним оператором (лише з одним аргументом), який змінює ознаку числа (або виразу), що випливає. Однак знак мінус у 0-3 ^ 2 є оператором віднімання , який є двійковим оператором, який віднімає те, що випливає -з того, що передує -. Згідно з умовами Excel, оператор експоненції ^ обчислюється після оператора заперечення та перед оператором віднімання . Див. "Оператори обчислення та пріоритет у Excel" , розділ "Порядок, в якому Excel виконує операції у формулах".

Стандартна математична умова полягає в тому, що експоненція обчислюється перед запереченням і відніманням або, простіше кажучи, ^обчислюється раніше -. Соромно, що Excel обрав різні конвенції від правил алгебри, шкільних підручників, академічного письма, наукових калькуляторів, Lotus 1-2-3, Mathematica, Maple, мов, орієнтованих на обчислення, таких як Fortran або Matlab, MS Works, і ... VBA ( мова, що використовується для написання макросів Excel). На жаль, Calc з LibreOffice та Google Sheets дотримується тієї ж конвенції щодо сумісності з Excel. Однак розміщення вирази у вікні пошуку або рядку Google дає чудові результати. Якщо натиснути клавішу Enter, порядок обчислень буде визначений за допомогою круглих дужок. Дискусія, коли математик вбиває аргументи "вченого-комп'ютера", захищаючи перевагу заперечення над експоненцією: http://mathforum.org/library/drmath/view/69058.html

Загальні обхідні шляхи

Якщо ви хочете зробити обчислення

- Anything ^ 2,

додати знак 0 перед знаком рівності

0 - Anything ^ 2

або додати пару дужок, щоб примусити стандартний порядок операцій

- ( Anything ^ 2 )

або замінити знак мінус його загальним тлумаченням множення на -1

-1 * Anything ^ 2

З наведених вище варіантів я вважаю за краще додавати знак 0 перед де-мінусом, оскільки це найбільш практично. Якщо вираз уже оточений дужками, я уникаю додавання дужок. Сильне використання дужок ускладнює вирази для читання, налагодження та запису.

Якщо додається додатковий термін (або віднімається без проблеми з рівними потужностями),

- Anything ^ 2 + ExtraTerm,

найкраще рішення - це на першому місці поставити ExtraTerm,

ExtraTerm - Anything ^ 2.

У коментарі до іншої відповіді йдеться про те, що єдиний випадок, який вам слід знати про нестандартне правило пріоритетності, - це те, коли знак мінус слідує за знаком рівності (= -). Однак є й інші приклади, наприклад = exp (-x ^ 2) або = (- 2 ^ 2 = 2 ^ 2), де перед знаком мінус немає жодної хвилини.

Дякую @BruceWayne за пропозицію короткої відповіді, про яку я писав на початку.

Вас може зацікавити За даними Excel, 4 ^ 3 ^ 2 = (4 ^ 3) ^ 2. Це справді стандартна математична умова?


1
Коментарі не для розширеного обговорення; ця розмова переміщена до чату .
DavidPostill

Будь ласка, дивіться вище. Усі коментарі будуть видалені, якщо вони не є частиною обговорення в чаті.
DavidPostill

20

Трохи більше, ніж відповідь Родольфо, ви можете використовувати:

=-(A1^2)+(A1)

(Редагувати: я абсолютно не бачив, що це питання про себе / відповідь.)


1
Саме так! Залежно від правил переваги будь-якої мови чи програми, це те, що, на вашу думку, повинно бути, - це рецепт неприємностей.
jamesqf

2
@jamesqf, але має бути певний сенс і обмеження в цьому. Ніхто не пише 2+ (3 * 4). Якщо мова має арифметичні операції та взагалі будь-які правила пріоритету, вона абсолютно повинна підтримувати всі стандартні математичні умовності. У Excel немає виправдання для такої помилки.
Зевс

4
@Zeus: Ніхто? Я, мабуть, хотів би, особливо, якщо це було б у більш складному виразі чи умові. Звичайно, я б написав 3 * 4 + 2, навіть якщо я не залишав парен.
jamesqf

3
Я давно мав підозру, ніж така звичка перенапруження парен походить від (о, настільки поширеного) надмірного впливу С (та його синтаксичних нащадків). Але C аж ніяк не є гарним прикладом правильного дотримання математичних правил, включаючи пріоритет (плюс у нього є проблеми з макросами). На відміну від цього, люди, які мають першочерговий вплив на більшу кількість академічних систем / мов, сильно розраховують на правильний дизайн і не прагнуть піти на поступки "про всяк випадок". Звідси справжні сюрпризи, як в ОП.
Зевс

14

Провідна -вважається частиною першого терміну.

=-3^2 обробляється як (-3)^2 = 9

З нулем на початку, це замість цього трактується як звичайне віднімання.

=0-3^2 обробляється як 0 - 3^2 = -9

А якщо у вас є два оператори, то відбудеться те саме.

=0--3^2обробляється як 0 - (-3)^2 = -9і =0+-3^2обробляється як0 + (-3)^2 = 9


4

Оскільки Excel інтерпретує ваше рівняння як:

(-x) ^ 2 + x

Коли ви хотіли:

- (х ^ 2) + х

Щоб запобігти такій формі небажаної поведінки, я вважаю, що найкраща практика полягає в тому, щоб широко використовувати дужки для визначення вашої власної системи пріоритетів, оскільки заперечення не є таким же, як віднімання, і, таким чином, не охоплюється PEMDAS. Прикладом може бути такий:

(- (х ^ 2)) + х

Це може бути зайвим, але саме так я гарантую, що Excel веде себе так, як мені хочеться.


4
"Оскільки PEMDAS не гарантується в Excel" - Ні, це абсолютно гарантується в Excel. Все інше було б божевіллям. Будь-яке одинарне заперечення чи ні (відмінне від віднімання!) Має перевагу над експоненціацією, не поширюється на PEMDAS.
Конрад Рудольф

1
@routhken Сильне використання дужок робить написання, редагування та налагодження громіздкими. Щоб полегшити ці завдання, я перевіряю перевагу операторів у програмному забезпеченні, з яким я працюю, і використовую лише необхідні дужки. Крім того, я додаю пробіли для поліпшення читабельності.
Родольфо Ов'єдо

@KonradRudolph Я відредагував свою відповідь, дякую за роз’яснення.
routhken

1
Я вважаю за краще використовувати x - x^2. Це забезпечує - інтерпретується як оператор віднімання двійкових.
Xalorous

@KonradRudolph Я думаю, що спосіб зробити це в тому, що електронні таблиці та мови комп'ютерного програмування використовують PUEMDAS, де одинарні операції оцінюються після дужкових операцій, але до двійкових математичних операцій.
Xalorous

3

Вираз = - A1^2 + A1характерний для Excel, тому він повинен відповідати правилам Excels. На відміну від деяких інших відповідей тут, немає правильного порядку пріоритетності. Існують лише різні конвенції, прийняті різними додатками. Для довідки, порядок пріоритету, який використовується excel, становить:

:       Range
<space> intersection
,       union
-       Negation
%       Percentage
^       Exponential
* and / Multiplication and Division
+ and - Addition and Subtraction
&       Concatenation
= < > <= >= <>  Comparison

Які ви можете змінити за допомогою дужок.


9
Звичайно, Excel міг обрати + для означання множення і * для віднімання і т. Д., І кожен, хто потребує використання Excel, повинен це знати. Але це було б неправильно. Справа в тому, що це не той самий рівень неправильного (або нерозумного), але ви, безумовно, можете стверджувати, що визначені Excel неправильно визначили пріоритети.
Мормегіл

4
@Mormegil Добре сказано! Як тільки ви спробуєте = 1 + 2 * 2 і побачите, що відповідь - це 5, а не 6., вас припускають припускати, що Excel дотримується правил алгебри. Який сенс вводити людей в оману?
Родольфо Ов'єдо

Є правильний порядок пріоритетності, але комп'ютери мають додаткові операції. Проблема тут полягає в тому, що комп’ютери використовують "-" для заперечення І для віднімання, коли людина, яка робить письмову алгебру, бачить, що це заперечує заперечення і віднімання. Щоб комп’ютер міг визначити різницю, йому потрібен набір правил. У '-x', '-' є одинарним оператором (діє на одному операнді). У '1-x', '-' є двійковим оператором. Отже, Excel (та інше комп'ютерне програмне забезпечення) перетворює -x ^ 2 в (-x) ^ 2. Решта порядку пріоритету все ще застосовується, коли ми все це вивчили в школі класів.
Xalorous

3
@Xalorous: Так, -може бути одинарним або двійковим. Але це не означає порядок операцій. Інші мови отримують це право: у Python, Ruby, Octave, Awk та Haskell (перші п’ять мов з оператором експоненції, які прийшли до тями) -3 ** 2завжди оцінюють -9. Чому? Тому що це правильна відповідь.
wchargin

1
@Xalorous людина, яка пише письмову алгебру, використовує конвенції своєї аудиторії у поєднанні з дужками для зменшення неоднозначності. Там немає правильний порядок старшинства, і правила алгебри, на самому ділі тільки конвенції.
Пол Сміт

3

Ви можете мати його в будь-якому випадку:

=-A1^2+A1

поверне 12 , але:

=0-A1^2+A1

поверне -6

Якщо ви відчуваєте, що повернення 12 порушує здоровий глузд; пам’ятайте, що Google Sheets робить те саме.


1
Здається, що знак одинарного мінусу має "занадто високий" перевагу.
Андреас Рейбранд

@AndreasRejbrand Здається, це єдине у тому випадку, якщо воно безпосередньо слідує знаку = ............... =A1-A1^2також повертається -6
Студент Гері

2
Але в прикладі А1 - А1 ^ 2 знак мінус, очевидно, двійковий. ( Онарний оператор - це той, хто приймає один операнд (наприклад, знак унарного мінусу в -5, або факторний, не знак тощо); двійковий оператор - це той, який приймає два операнди (наприклад, двійковий плюс, мінус, множення, об'єднання тощо).) Зауважте, що знак мінус може бути одинаковим, навіть якщо він не слідує відразу після знака рівності: 5 + (-4 + 3).
Андреас Рейбранд

@AndreasRejbrand Я повністю з вами згоден!
Студент Гері

Просто для захисту репутації Google спробуйте поле пошуку або смугу для введення математичних виразів. Ви отримаєте дуже результати, які відповідають хорошій математиці, ще краще, ніж, наприклад, з Matlab або Octave, спробуйте 2 ^ 1 ^ 2.
Родольфо Ов'єдо

3

Крім того, ви могли просто зробити

= A1 - A1^2

оскільки -y + x = x-y


Це не пояснює, чому це повинно працювати, і дублює численні попередні відповіді.
fixer1234

@ fixer1234 Буквально ніхто інший цього не сказав, і я дав математичну причину для цього?
lioness99a

1. Багато відповідей описують перетворення цього на явне віднімання. 2. Це не математична причина. Питання полягає в тому, чому Excel не так поводиться. Відповідь полягає в тому, що мінус Excel не трактується як віднімання.
fixer1234

Вони запитали, як запобігти поведінці. Я показав їм найпростіший спосіб. І жодна відповідь не говорить про те, що я маю ...
lioness99a

Найкраще рішення. Я додав свою відповідь з належним кредитом Якщо вам сподобалось ЗАПИТАННЯ, будь ласка, оновіть його.
Родольфо Ов'єдо

2

Інші люди відповіли "як я можу цього уникнути?" частина питання. Я збираюся сказати вам, чому це відбувається.

Це трапляється тому, що персональні комп’ютери 1979 року мали дуже обмежені можливості пам'яті та обробки.

VisiCalc був представлений для Apple II в 1979 році, за два роки до первинного випуску IBM PC (до якого більшість сучасних настільних і портативних комп'ютерів відстежують їх пряме походження). Apple II міг би мати 64 Кб (65,536 байт) оперативної пам’яті, а VisiCalc вимагало щонайменше 32 Кбайт для запуску. Як трохи тут, VisiCalc досить широко вважається "вбивчим додатком" для Apple II і, можливо, взагалі для персональних мікрокомп'ютерів взагалі.

Чим менше потрібних менше спеціальних випадків і меншої форми формули, тим простіший (і, як наслідок, менший) код для розбору формули електронних таблиць. Тому було б доцільно вимагати від користувача бути дещо більш чітким у кутових випадках, в обмін на можливість обробляти більші електронні таблиці. Пам’ятайте, навіть у Apple II класу високого класу вам довелося грати лише кілька десятків кілобайт після того, як була оброблена пам'ять, необхідна додатку. У системі з низькою пам’яттю (48 Кб оперативної пам’яті не була рідкісною конфігурацією для «серйозної» машини) межа була ще нижчою.

Коли IBM представила свій ПК, до нової архітектури був зроблений порт VisiCalc. Вікіпедія називає цей порт «сумісним з помилками» , тому ви дуже сподіваєтесь побачити таку саму формулу поведінки при аналізі формули, навіть якщо система технічно здатна до складнішого розбору.

Починаючи з 1982 року, Microsoft конкурувала з VisiCalc, а пізніше 1-2-3, з їхньою багатоплановою електронною таблицею Multiplan . Згодом Lotus 1-2-3 був представлений у 1983 році спеціально для комп'ютера IBM і швидко обігнав VisiCalc на ньому. Щоб полегшити перехід, було має сенс обидві формули аналізувати так само, як це робив VisiCalc. Таким чином, обмежена поведінка, спрямована вперед, переноситься вперед.

У 1985 році Microsoft представила на ПК Excel , спочатку для Macintosh і починаючи з версії 2 в 1987 році. Знову ж таки, щоб полегшити перехід, було доцільно перенести формулу поведінки для розбору формул, до якої люди вже звикли з тих пір, майже десятиліття.

З кожним оновленням Excel існувала можливість зміни поведінки, але це не тільки вимагатиме від користувачів вивчення нового способу введення формул, але й ризикує порушити сумісність з електронними таблицями, використовуваними або створеними з попередньою версією. На все ще дуже конкурентоспроможному ринку, де кілька комерційних компаній конкурують між собою у кожній галузі, ймовірно, було прийнято рішення зберегти поведінку, до якої звикли користувачі.

Швидкий перехід до 2019 року, і ми все ще дотримуємось формул, що розбирають рішення про поведінку, спочатку прийняті не пізніше 1978-1979 років.


mathforum.org/library/drmath/view/69058.html та macnauchtan.com/pub/precedence.html#_Aworks повідомляють, що Lotus 1-2-3 дотримується загальних алгебраїчних умов.
Родольфо Ов'єдо

0

Вираз - A1^2містить два оператори, а саме оператор одинарного заперечення -та оператор бінарної експоненції ^. За відсутності жодних дужок може бути два тлумачення. Або:

-(A1^2)

або:

(-A1)^2

Перший один говорить , що спочатку зробити експоненціацію з операндами A1і 2, а потім зробити заперечення з цього приводу .

Другий говорить, що спочатку робимо заперечення на операнді A1, а потім використовуємо експоненцію на результат цього і 2.

Як було сказано в коментарях до цього питання, повноваження мають більший пріоритет, ніж знаки мінус у будь-якому розумному середовищі. Що означає, що найкраще, якщо система передбачає першу.

Однак Excel віддає перевагу другому.

Урок полягає в тому, що якщо ви не впевнені, що ваше середовище є здоровим чи ні, включіть дужки, щоб бути в безпечній стороні. Тож пишіть -(A1^2).


Це дублює прийняту відповідь та інші попередні відповіді.
fixer1234

-1

Це не проблема з excel, а з експонентами та негативами. Коли ви берете номер і піднімаєте його до рівної сили, ви скасовуєте негативний знак.

-x^2 + x == (-x * -x) + x 
x = 3  => (-3 * -3) + 3
       ==  9 + 3 => 12

Вам потрібно скористатися дужками та кратними крапками -1

-1 * (x^2) + x

10
Це не так, як працюють знаки. Це має бути: x = 3 => - (3 * 3) + 3 = 6. Excel просто не використовує стандартну алгебраїчну умову.
відлучення

3
@henning Як уже згадувалося в іншому коментарі, в той час як це не «стандарт» умовність, це конвенції, хоча і не найпоширеніший. Отже, сказати, що "це не так, як знаки працюють", тому є некоректним. Швидше, це не так, як знаки працюють у переважній галузі використання.
Конрад Рудольф

2
@KonradRudolph Ярмарок досить. Я визнаю, я знаю лише про переважне використання, яке, на мою думку, викликало плутанину ОП.
відлучення

6
Ні, це абсолютно є проблема з Excel. Excel використовує неправильні правила для переваги оператора.
Давуд ібн Карім

Зверніть увагу на різницю між тим, -x^2де x дорівнює 3, а x^2де x -3. -x^2+xніколи не досягне 12: wolframalpha.com/input/?i=-x%5E2%2Bx
Thomas Weller

-2

-x ^ 2 + x де x = 3 Це приклад квадратичного рівняння Рівняння можна записати так: -3 * -3 + 3: Множення має перевагу над додаванням, тому результат записується таким чином: 9 + 3 : Чому = 9, тому що від'ємне число x негативне число дає позитивний результат. Це можна перевірити, використовуючи будь-який калькулятор, правило слайдів або будь-яку програму з комп'ютерної математики Кінцевий результат 9 + 3 = 12


-3

Це просто дійсно проста математика.

Правило 1. Навіть множення від'ємних чисел дасть позитивний результат:

мінус * мінус = плюс

мінус * мінус * мінус = мінус

мінус * мінус * мінус * мінус = плюс

Це пов’язано з тим, що мінуси скасовують один одного парами.

Правило 2. Потужність кожного числа визначає, що це число буде множено на себе кілька разів.

(2) ^ n, де n = 2 => 2 * 2 = 4

(-2) ^ n, де n = 2 => (-2) * (- 2) = 4

І якщо ви бачите правило №1 ..

(-3) ^ n, де n = 3 => (-3) * (-3) * (-3) = 9 * (-3) = -27

Правило 3. Множення та ділення мають більший пріоритет, ніж додавання та віднімання.

3 * 5 + 2 = 15 + 2 = 17

3 * (5 + 2) = 3 * 7 = 21

І є відповідь на ваше запитання:

Поєднання всіх 3 правил від раніше:

-x ^ 2 + x, де x = 3 => -3 ^ 2 + 3 = 9 + 3 = 12

Моя рада вам - щороку витрачати деякий час і продовжувати освіжати основні правила математики.

Насправді це вміння, яким можна підтримувати і залишатися на вершині значної частини світу, лише знаючи основні математики.


9
Коли ви пишете "Об'єднання всіх 3 правил раніше: -x ^ 2 + x, де x = 3 => -3 ^ 2 + 3 = 9 + 3 = 12", ви припускаєте, що -x ^ 2 = (-x) ^ 2. Ви раніше не заявляли про це припущення. Тому ваш висновок є невиправданим. Насправді, якщо ви читаєте підручник з математики чи Вікіпедію, ви помітите, що ваші загальні припущення не дотримуються. Підручники з математики, наукові праці тощо дотримуються припущення, що -x ^ 2 = - (x ^ 2)
Родольфо Ов'єдо

правило 3 застосовується до бінарних операторів, таких як +-*/, але не для одинакових операторів, таких як -або +. Позачерговий оператор потужності вище *і /але унарні оператори мають навіть більш високий пріоритет
phuclv

У відповідь на @RodolfoOviedo ви неправі. Існує величезна різниця між - (x) ^ 2 і -x ^ 2. І це цілком зрозуміло. Немає сенсу, щоб я це заявив. Без поваги, сер, але я відчуваю, що ви просто намагалися повернутися пасивно-агресивно. Мені шкода, якщо я сказав щось, що вас ображає. Я тільки тут, щоб допомогти.
Майкл Джон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.