Załóżmy, że moja komórka A1 w arkuszu kalkulacyjnym Excel zawiera liczbę 3 . Jeśli wprowadzę formułę
= - A1^2 + A1
w A2, wtedy A2 pokazuje liczbę 12, kiedy powinna pokazywać -6 (lub -9 + 3)
Dlaczego? Jak mogę zapobiec takiemu zachowaniu?
Załóżmy, że moja komórka A1 w arkuszu kalkulacyjnym Excel zawiera liczbę 3 . Jeśli wprowadzę formułę
= - A1^2 + A1
w A2, wtedy A2 pokazuje liczbę 12, kiedy powinna pokazywać -6 (lub -9 + 3)
Dlaczego? Jak mogę zapobiec takiemu zachowaniu?
Odpowiedzi:
Krótka odpowiedź
Aby rozwiązać ten problem, po prostu dodaj 0 przed znakiem równości
= 0 - A1^2 + A1
lub dodaj kilka nawiasów, aby wymusić standardową kolejność operacji
= - (A1^2) + A1
lub zastąp znak minus jego powszechną interpretacją mnożenia przez -1
= -1 * A1^2 + A1
W tym szczególnym przypadku, gdy masz dodatkowy termin + A1, najlepszym rozwiązaniem jest to zaproponowane przez @ lioness99a:
= A1 - A1^2
Szczegółowe wyjaśnienie
Zgodnie z konwencjami programu Excel
= - 3^2
równa się (-3) ^ 2 = 9, podczas gdy
= 0-3^2
wynosi 0–9 = –9.
Dlaczego dodanie tylko 0 zmienia wynik?
Znak minus w -3 ^ 2, nie poprzedzony minuendem, jest uważany za operator negacji , który jest operatorem jednoargumentowym (z tylko jednym argumentem), który zmienia znak liczby (lub wyrażenia), który następuje. Jednak znak minus w 0-3 ^ 2 jest operatorem odejmowania , który jest operatorem binarnym, który odejmuje to, co wynika -
z tego, co poprzedza -
. Zgodnie z konwencjami programu Excel operator potęgowania ^
jest obliczany po operatorze negacji i przed operatorem odejmowania . Zobacz „Operatory obliczeń i pierwszeństwo w programie Excel” , sekcja „Kolejność, w jakiej program Excel wykonuje operacje w formułach”.
Standardowa konwencja matematyczna mówi, że potęgowanie jest obliczane zarówno przed negacją, jak i odejmowaniem, lub, mówiąc prościej, ^
jest obliczane wcześniej -
. Ze wstydem Excel wybrał inne konwencje niż reguły algebry, podręczniki szkolne, pisanie akademickie, kalkulatory naukowe, Lotus 1-2-3, Mathematica, Klon, języki zorientowane na obliczenia, takie jak Fortran lub Matlab, MS Works i ... VBA ( język używany do pisania makr Excela). Niestety, Calc z LibreOffice i Arkuszy Google są zgodne z tą samą konwencją dotyczącą zgodności z programem Excel. Jednak umieszczenie wyrażenia w polu wyszukiwania lub pasku Google daje doskonałe wyniki. Jeśli naciśniesz Enter, kolejność obliczeń zostanie podana w nawiasach. Dyskusja, w której matematyk zabija argumenty „informatyka” broniącego pierwszeństwa negacji przed eksponencją: http://mathforum.org/library/drmath/view/69058.html
Ogólne obejścia
Jeśli chcesz obliczyć
- Anything ^ 2,
dodaj 0 przed znakiem równości
0 - Anything ^ 2
lub dodaj kilka nawiasów, aby wymusić standardową kolejność operacji
- ( Anything ^ 2 )
lub zastąp znak minus jego powszechną interpretacją mnożenia przez -1
-1 * Anything ^ 2
Z powyższych opcji wolę dodać znak 0 przed znakiem minus, ponieważ jest to najbardziej praktyczne. Jeśli wyrażenie jest już otoczone nawiasami, unikam dodawania nawiasów. Częste stosowanie nawiasów sprawia, że wyrażenia są trudniejsze do odczytania, debugowania i pisania.
Jeśli zostanie dodany dodatkowy termin (lub odjęty bez problemu z równomierną mocą),
- Anything ^ 2 + ExtraTerm,
najlepszym rozwiązaniem jest umieszczenie ExtraTerm na pierwszym miejscu,
ExtraTerm - Anything ^ 2.
Komentarz do innej odpowiedzi mówi, że jedynym przypadkiem, który musisz znać niestandardową regułę pierwszeństwa, jest znak minus po znaku równości (= -). Istnieją jednak inne przykłady, takie jak = exp (-x ^ 2) lub = (- 2 ^ 2 = 2 ^ 2), w których przed znakiem minus nie ma znaku minus.
Dzięki @BruceWayne za zaproponowanie krótkiej odpowiedzi, którą napisałem na początku.
Możesz być zainteresowany Zgodnie z Excelem, 4 ^ 3 ^ 2 = (4 ^ 3) ^ 2. Czy to naprawdę standardowa konwencja matematyczna?
Trochę więcej pomocy niż odpowiedź Rodolfo, możesz użyć:
=-(A1^2)+(A1)
(Edycja: Całkowicie nie widziałem, żeby było to pytanie / odpowiedź.)
Prowadzenie -
jest uważane za część pierwszego semestru.
=-3^2
jest przetwarzany jako (-3)^2 = 9
Zera na początku jest traktowane jako normalne odejmowanie.
=0-3^2
jest przetwarzany jako 0 - 3^2 = -9
A jeśli masz dwóch operatorów, to samo się stanie.
=0--3^2
jest przetwarzany jako 0 - (-3)^2 = -9
i
=0+-3^2
jest przetwarzany jako0 + (-3)^2 = 9
Ponieważ Excel interpretuje twoje równanie jako:
(-x) ^ 2 + x
Kiedy chciałeś:
- (x ^ 2) + x
Aby zapobiec tego rodzaju niepożądanym zachowaniom, uważam, że najlepszą praktyką jest częste używanie nawiasów w celu zdefiniowania własnego systemu priorytetów, ponieważ negacja nie jest tym samym co odejmowanie, a zatem nie jest objęta PEMDAS. Przykładem może być:
(- (x ^ 2)) + x
Może to być przesada, ale w ten sposób gwarantuję, że Excel zachowuje się tak, jak chcę.
x - x^2
. Zapewnia to, że - jest interpretowany jako binarny operator odejmowania.
Wyrażenie = - A1^2 + A1
jest specyficzne dla programu Excel, więc musi być zgodne z regułami programu Excel W przeciwieństwie do niektórych innych odpowiedzi tutaj, nie ma właściwej kolejności pierwszeństwa. Istnieją tylko różne konwencje przyjęte przez różne aplikacje. W celach informacyjnych kolejność pierwszeństwa stosowana przez program Excel jest następująca:
: Range
<space> intersection
, union
- Negation
% Percentage
^ Exponential
* and / Multiplication and Division
+ and - Addition and Subtraction
& Concatenation
= < > <= >= <> Comparison
Które można zastąpić za pomocą nawiasów.
-
może być jednoargumentowy lub binarny. Ale to nie oznacza kolejności operacji. Inne języki mają rację: w Pythonie, Ruby, Octave, Awk i Haskell (pierwszych pięciu językach z operatorem potęgującym, które przyszły na myśl), -3 ** 2
zawsze się to sprawdza -9
. Dlaczego? Ponieważ to jest poprawna odpowiedź.
Możesz to zrobić w dowolny sposób:
=-A1^2+A1
zwróci 12 , ale:
=0-A1^2+A1
zwróci wartość -6
Jeśli uważasz, że powrót 12 narusza zdrowy rozsądek; pamiętaj, że Arkusze Google robią to samo.
=A1-A1^2
również zwraca -6
Alternatywnie możesz po prostu zrobić
= A1 - A1^2
dlatego -y + x = x-y
Inne osoby odpowiedziały „jak mogę tego uniknąć?” część pytania. Powiem ci, dlaczego tak się dzieje.
Dzieje się tak, ponieważ komputery osobiste w 1979 r. Miały bardzo ograniczoną pamięć i możliwości przetwarzania.
VisiCalc został wprowadzony dla Apple II w 1979 roku, dwa lata przed początkową wersją komputera IBM PC (do którego większość współczesnych komputerów stacjonarnych i laptopów śledzi ich bezpośrednie pochodzenie). Apple II może mieć do 64 KiB (65 536 bajtów) pamięci RAM, a VisiCalc wymaga co najmniej 32 KiB do uruchomienia. Na marginesie, VisiCalc jest raczej powszechnie uważany za „aplikację zabójczą” dla Apple II, a być może rzeczywiście dla osobistych mikrokomputerów w ogóle.
Wymaganych jest mniej specjalnych przypadków i mniej wyprzedzania formuł, tym łatwiejszy (i w konsekwencji mniejszy) kod do parsowania formuły arkusza kalkulacyjnego. Dlatego sensowne byłoby wymaganie od użytkownika, aby był bardziej wyraźny w narożnych przypadkach, w zamian za możliwość obsługi większych arkuszy kalkulacyjnych. Pamiętaj, że nawet z wysokiej klasy Apple II, masz tylko kilkadziesiąt kilobajtów do gry po uwzględnieniu pamięci wymaganej przez aplikację. W przypadku systemu o niskiej pamięci (48 KiB RAM nie była rzadką konfiguracją dla „poważnej” maszyny) limit był jeszcze niższy.
Kiedy IBM przedstawił swój komputer, powstał port VisiCalc do nowej architektury. Wikipedia określa ten port jako „kompatybilny z błędami” , więc można oczekiwać, że zobaczysz dokładnie to samo zachowanie podczas analizowania formuł, nawet jeśli system był technicznie zdolny do bardziej złożonej analizy.
Począwszy od 1982 r. Microsoft konkurował z VisiCalc, a później 1-2-3, z wieloplatformowym arkuszem kalkulacyjnym Multiplan . Później Lotus 1-2-3 został wprowadzony w 1983 roku specjalnie dla komputerów IBM i szybko wyprzedził na nim VisiCalc. Aby ułatwić przejście, warto przeanalizować formuły w taki sam sposób, jak zrobił to VisiCalc. Tak więc ograniczone zachowanie z wyprzedzeniem byłoby kontynuowane.
W 1985 r. Microsoft wprowadził program Excel , pierwotnie dla komputerów Macintosh, a od wersji 2 w 1987 r. Na PC. Ponownie, aby ułatwić przejście, sensowne było kontynuowanie analizy składniowej formuły, do której ludzie byli już przyzwyczajeni od prawie dekady.
Przy każdej aktualizacji programu Excel istniała możliwość zmiany zachowania, ale nie tylko wymagałaby od użytkowników poznania nowego sposobu pisania formuł, ale także groziłaby zerwaniem zgodności z arkuszami kalkulacyjnymi używanymi lub tworzonymi z poprzednią wersją. Na wciąż bardzo konkurencyjnym rynku z kilkoma firmami komercyjnymi konkurującymi ze sobą w każdej dziedzinie, prawdopodobnie podjęto decyzję o zachowaniu przyzwyczajenia użytkowników.
Przechodzimy do 2019 r., A my nadal utknęliśmy przy decyzjach dotyczących analizowania formuły pierwotnie podjętych nie później niż w latach 1978–1979.
Wyrażenie - A1^2
zawiera dwa operatory, mianowicie jednoargumentowy operator negacji -
i operator binarnego potęgowania ^
. Przy braku nawiasów mogą istnieć dwie interpretacje. Zarówno:
-(A1^2)
lub:
(-A1)^2
Pierwszy z nich mówi najpierw wykonać potęgowanie z argumentów A1
i 2
, a następnie zrobić negację w tej sprawie.
Drugi mówi, że najpierw wykonaj negację operandu A1
, a następnie użyj potęgowania na podstawie tego i 2
.
Jak powiedziano w komentarzach do pytania, Moce mają wyższy priorytet niż znaki minus w każdym zdrowym środowisku. Co oznacza, że najlepiej jest przyjąć pierwszy system.
Jednak Excel preferuje drugi.
Lekcja polega na tym, że jeśli nie jesteś pewien, czy twoje środowisko jest zdrowe, dołącz nawias, aby zachować bezpieczeństwo. Więc napisz -(A1^2)
.
To nie jest problem z programem Excel, ale z wykładnikami i negatywami. Kiedy weźmiesz liczbę i podniesiesz ją do równej siły, anulujesz znak ujemny.
-x^2 + x == (-x * -x) + x
x = 3 => (-3 * -3) + 3
== 9 + 3 => 12
Musisz użyć nawiasu i wielokrotności przez -1
-1 * (x^2) + x
-x^2
gdzie x wynosi 3, a x^2
gdzie x wynosi -3. -x^2+x
nigdy nie osiągnie 12: wolframalpha.com/input/?i=-x%5E2%2Bx
-x ^ 2 + x gdzie x = 3 To jest przykład równania kwadratowego. Równanie można zapisać w następujący sposób: -3 * -3 + 3: Mnożenie ma pierwszeństwo przed dodawaniem, więc wynik zostanie zapisany w następujący sposób: 9 + 3 : Dlaczego = 9, ponieważ liczba ujemna x liczba ujemna daje wynik dodatni. Można to zweryfikować za pomocą dowolnego kalkulatora, reguły slajdów lub dowolnego programu komputerowego. Wynik końcowy 9 + 3 = 12
To tylko bardzo prosta matematyka.
Reguła 1. Nawet mnożenie liczb ujemnych dałoby wynik dodatni:
minus * minus = plus
minus * minus * minus = minus
minus * minus * minus * minus = plus
Wynika to z faktu, że minusy znoszą się parami.
Zasada 2. Moc każdej liczby oznacza, że liczba ta zostanie pomnożona wiele razy.
(2) ^ n, gdzie n = 2 => 2 * 2 = 4
(-2) ^ n, gdzie n = 2 => (-2) * (- 2) = 4
A jeśli widzisz Regułę numer 1 ...
(-3) ^ n, gdzie n = 3 => (-3) * (-3) * (-3) = 9 * (-3) = -27
Zasada 3. Mnożenie i dzielenie mają wyższy priorytet niż dodawanie i odejmowanie.
3 * 5 + 2 = 15 + 2 = 17
3 * (5 + 2) = 3 * 7 = 21
I jest odpowiedź na twoje pytanie:
Łącząc wszystkie 3 reguły wcześniej:
-x ^ 2 + x, gdzie x = 3 => -3 ^ 2 + 3 = 9 + 3 = 12
Radzę ci spędzać co roku trochę czasu i odświeżać podstawowe zasady matematyki.
Jest to umiejętność, którą możesz utrzymać i utrzymać się na dużej części świata, tylko znając podstawowe matematyki.
+-*/
, ale nie operatorów jednoargumentowych takich jak -
lub +
. Pierwszeństwo operatora energii jest wyższa niż *
i /
ale unarne operatorzy mają nawet wyższy priorytet