Pořadí operací - Order of operations

v matematika a programování, pořadí operací (nebo přednost operátora) je sbírka pravidel, která odrážejí konvence o tom, které postupy je třeba provést jako první za účelem vyhodnocení daného matematické vyjádření.

Například v matematice a ve většině počítačových jazyků má násobení vyšší prioritu než sčítání a je tomu tak od zavedení moderních algebraická notace.[1][2] Tedy výraz 2 + 3 × 4 je interpretován tak, aby měl hodnotu 2 + (3 × 4) = 14a ne (2 + 3) × 4 = 20. Se zavedením exponentů v 16. a 17. století dostali přednost před sčítáním i množením a mohli být umístěni pouze jako horní index napravo od své základny.[1] Tím pádem 3 + 52 = 28 a 3 × 52 = 75.

Tyto konvence existují, aby eliminovaly značnou nejednoznačnost a zároveň umožnily co nejkratšímu zápisu. Tam, kde je žádoucí přepsat konvence priority, nebo je jednoduše zdůraznit, lze použít závorky () k označení alternativního pořadí operace (nebo jednoduše posílit výchozí pořadí operací). Například, (2 + 3) × 4 = 20 vynutí přidání předcházet násobení, zatímco (3 + 5)2 = 64 sčítání sil předcházet umocňování. Pokud je v matematickém výrazu požadováno více párů závorek (například v případě vnořených závorek), mohou být závorky nahrazeny závorky nebo rovnátka aby nedošlo k záměně, jako v [2 × (3 + 4)] − 5 = 9.[3]

Definice

Pořadí operací, které se používá v celé matematice, vědě, technologii a mnoha počítačích programovací jazyky, je vyjádřen zde:[1][4][5]

  1. umocňování a extrakce kořenů
  2. násobení a divize
  3. přidání a odčítání

To znamená, že pokud se v matematickém výrazu objeví podvýraz mezi dvěma operátory, operátor, který je výše ve výše uvedeném seznamu, by měl být použit jako první.

The komutativní a asociativní zákony sčítání a násobení umožňují přidávání termínů v libovolném pořadí a multiplikační faktory v libovolném pořadí - smíšené operace však musí dodržovat standardní pořadí operací.

V některých kontextech je užitečné nahradit dělení vynásobením recipročním (multiplikativní inverzní) a odčítáním sčítáním opačného (aditivní inverzní). Například v počítačová algebra, což umožňuje jednomu zvládnout méně binární operace a usnadňuje použití komutativita a asociativita při zjednodušení velkých výrazů (více viz Počítačová algebra § Zjednodušení ). Tím pádem 3 ÷ 4 = 3 × 1/4; jinými slovy, podíl 3 a 4 se rovná součinu 3 a 1/4. Taky 3 − 4 = 3 + (−4); jinými slovy rozdíl 3 a 4 se rovná součtu 3 a −4. Tím pádem, 1 − 3 + 7 lze považovat za součet 1 + (−3) + 7a tři summands lze přidat v libovolném pořadí, ve všech případech je výsledkem 5.

Kořenový symbol √ je tradičně prodloužen čárkou (tzv vinculum ) přes radicand (tím se vyhnete nutnosti závorek kolem radicand). Ostatní funkce používají kolem vstupu závorky, aby se zabránilo nejednoznačnosti.[6][7][A] Závorky lze vynechat, pokud je vstupem jedna numerická proměnná nebo konstanta[1] (jako v případě hřích X = hřích (X) a sin π = sin (π).[A] Další zkratka, která se někdy používá, je, když je vstup monomiální; tím pádem, hřích 3X = hřích (3X) spíše než (hřích (3))X, ale hřích X + y = hřích (X) + y, protože X + y není monomial. To je však nejednoznačné a mimo konkrétní kontexty není všeobecně chápáno.[b]Některé kalkulačky a programovací jazyky vyžadují u vstupů funkcí závorky, jiné nikoli.

K přepsání obvyklého pořadí operací lze použít symboly seskupení.[1] Se seskupenými symboly lze zacházet jako s jedním výrazem.[1] Symboly seskupení lze odstranit pomocí asociativních a distribuční zákony, také je lze odstranit, pokud je výraz uvnitř symbolu seskupení dostatečně zjednodušen, takže z jejich odstranění nevyplývá žádná nejednoznačnost.

Příklady

Vodorovná zlomková čára funguje také jako symbol seskupení:

Pro snazší čtení další seskupovací symboly, například složené závorky { } nebo hranaté závorky [ ], se často používají spolu se závorkami ( ). Například:

Mnemotechnika

Mnemotechnika se často používají k tomu, aby si studenti zapamatovali pravidla, zahrnující první písmena slov představujících různé operace. V různých zemích se používají různé mnemotechnické pomůcky.[8][9][10]

  • Ve Spojených státech je to zkratka PEMDAS je běžné.[11] Znamená Paréza, Exponenti, Multiplikace /Division, Astav /Subtraction.[11] PEMDAS je často rozšířen na mnemotechniku ​​"Omluvte prosím moji drahou tetu Sally".[12]
  • Kanada a Nový Zéland použití BEDMAS, stojící za Brakety, Exponenti, Division /Multiplikace, Astav /Subtraction.[11]
  • Nejběžnější ve Velké Británii, Pákistánu, Indii, Bangladéši a Austrálii[13] a některé další anglicky mluvící země ano BODMAS což znamená buď Brakety, Órder, Division /Multiplikace, Astav /Subtraction nebo Brakety, ÓF/Division /Multiplikace, Astav /Subtraction.[C][14] Nigérie a některé další země západní Afriky také používají BODMAS. Podobně ve Velké Británii BIDMAS je také používán, stojí za Brakety, ndices, Division /Multiplikace, Astav /Subtraction.

Tyto mnemotechnické pomůcky mohou být zavádějící, pokud jsou psány tímto způsobem.[12] Například nesprávná interpretace některého z výše uvedených pravidel ve smyslu „nejdříve sčítání, odčítání“ by nesprávně vyhodnotila výraz[12]

Při vyhodnocování výše uvedeného výrazu by mělo být sčítání a odčítání prováděno postupně a pracuje zleva doprava, protože odčítání je levo-asociativní a považován za neasociativní provoz. Buď pracujte zleva doprava, nebo s odečtením zacházejte jako s přidáním a podepsané číslo vytvoří správnou odpověď; provedení odčítání ve špatném pořadí bude mít za následek nesprávnou odpověď. Mnemotechnika neodráží seskupení sčítání / odčítání nebo násobení / dělení, takže jejich použití může vést k tomuto nedorozumění.

Podobná nejednoznačnost existuje například v případě sériového dělení a ÷ b ÷ c × d mohou být čteny více způsoby, ale nemusí vždy přijít ke stejné odpovědi.[Citace je zapotřebí ]

Rozdělení je tradičně považováno za levo-asociativní. To znamená, že pokud je v řadě více divizí, pořadí výpočtu jde zleva doprava:[15][16]

Matematický zvyk kombinování faktorů a reprezentace dělení jako násobení pomocí reciprocity dále výrazně snižuje frekvenci nejednoznačného dělení.

Speciální případy

Sériová umocňování

Li umocňování je označeno skládanými symboly pomocí horního zápisu, obvyklým pravidlem je práce shora dolů:[17][1][7][18]

AbC = A(bC)

což se obvykle nerovná (Ab)C.

Při použití notace operátora s a stříška (^) nebo Šíp (↑), neexistuje žádný společný standard.[19] Například, Microsoft Excel a výpočetní programovací jazyk MATLAB vyhodnotit A^b^C tak jako (Ab)C, ale Google vyhledávání a Wolfram Alpha tak jako A(bC). Tím pádem 4^3^2 je hodnocena na 4 096 v prvním případě a na 262 144 v druhém případě.

Unární znaménko minus

Existují různé konvence týkající se unárního operátoru - (obvykle číst „minus“). V písemné nebo tištěné matematice výraz −32 je vykládán ve smyslu 0 − (32) = − 9.[1][20]

V některých aplikacích a programovacích jazycích, zejména Microsoft Excel, PlanMaker (a další tabulkové aplikace) a programovací jazyk bc, unární operátory mají vyšší prioritu než binární operátory, to znamená, že unární mínus má vyšší prioritu než umocňování, takže v těchto jazycích −32 bude interpretováno jako (−3)2 = 9.[21] To se nevztahuje na operátor binární mínus -; například v aplikaci Microsoft Excel, zatímco vzorce =−2^2, =-(2)^2 a =0+−2^2 návrat 4, vzorec =0−2^2 a =−(2^2) návrat −4.

Smíšené dělení a násobení

Podobně může existovat nejednoznačnost při používání lomítko symbol / ve výrazech jako 1/2X.[12] Pokud někdo přepíše tento výraz jako 1 ÷ 2X a poté interpretuje divizní symbol tak, že indikuje násobení pomocí reciprocity, stane se:

1 ÷ 2 × X = 1 × 1/2 × X = 1/2 × X.

S touto interpretací 1 ÷ 2X je rovný (1 ÷ 2)X.[1][8] V některé akademické literatuře však násobení označené juxtapozicí (také známý jako implikované násobení ) je interpretován tak, že má vyšší prioritu než dělení, takže 1 ÷ 2X rovná se 1 ÷ (2X), ne (1 ÷ 2)XNapříklad pokyny pro odeslání rukopisu pro Fyzický přehled časopisy uvádějí, že násobení má vyšší prioritu než dělení lomítkem,[22] a to je také konvence dodržovaná v předních učebnicích fyziky, jako je Kurz teoretické fyziky podle Landau a Lifshitz a Feynman přednášky z fyziky.[d]

Kalkulačky

Různé kalkulačky sledují různé pořadí operací.[1] Mnoho jednoduchých kalkulaček bez zásobníku implementovat řetězový vstup práce zleva doprava bez jakékoli priority dané různým operátorům, například psaní

1 + 2 × 3 výnosy 9,

zatímco sofistikovanější kalkulačky budou používat standardnější prioritu, například psaní

1 + 2 × 3 výnosy 7.

The Microsoft Calculator program používá první ve standardním zobrazení a druhý ve vědeckém a programátorském zobrazení.

Řetězový vstup očekává dva operandy a operátor. Po stisknutí dalšího operátoru je výraz okamžitě vyhodnocen a odpověď se stane levou rukou dalšího operátora. Pokročilé kalkulačky umožňují zadání celého výrazu, který je podle potřeby seskupen, a vyhodnocuje se pouze tehdy, když uživatel použije znaménko rovnosti.

Kalkulačky mohou přiřadit exponenty zleva doprava. Například výraz A^b^C je interpretován jako A(bC) na TI-92 a TI-30XS MultiView v „režimu Mathprint“, zatímco je interpretován jako (Ab)C na TI-30XII a TI-30XS MultiView v „klasickém režimu“.

Výraz jako 1/2X je interpretován jako 1 / (2X) od TI-82, stejně jako mnoho moderních Casio kalkulačky,[23] ale jako (1/2)X podle TI-83 a všechny ostatní kalkulačky TI vydané od roku 1996,[24] stejně jako všichni Hewlett Packard kalkulačky s algebraickou notací. Někteří uživatelé mohou očekávat první výklad vzhledem k povaze implikované násobení, druhý je více v souladu se standardním pravidlem, že násobení a dělení mají stejnou prioritu,[25][26] kde 1/2X se čte jedna děleno dvěma a odpověď vynásobená X.

Pokud si uživatel není jistý, jak bude kalkulačka interpretovat výraz, je vhodné použít závorky, aby nedocházelo k nejednoznačnosti.

Kalkulačky, které používají obrácenou polskou notaci (RPN), také známý jako postfixový zápis, použijte a zásobník zadávat výrazy ve správném pořadí priorit bez nutnosti použití závorek nebo jakéhokoli pořadí provedení specifického pro model.[12][11]

Programovací jazyky

Nějaký programovací jazyky používat úrovně priority, které odpovídají pořadí běžně používanému v matematice,[19] ačkoli jiní, jako např APL, Pokec, Occam a Mary, nemají operátor pravidla priority (v APL je hodnocení striktně zprava doleva; v Smalltalku atd. je striktně zleva doprava).

Kromě toho, protože mnoho operátorů není asociativních, je pořadí v rámci jedné úrovně obvykle definováno seskupením zleva doprava, takže 16/4/4 je interpretován jako (16/4)/4 = 1 spíše než 16/(4/4) = 16; tito operátoři jsou možná zavádějícím způsobem označováni jako „leví asociativní“. Výjimky existují; například jazyky s operátory odpovídajícími nevýhody operace se seznamy je obvykle seskupuje zprava doleva („pravá asociativní“), např. v Haskell, 1:2:3:4:[] == 1:(2:(3:(4:[]))) == [1,2,3,4].

The tvůrce z Jazyk C. řekl o prioritě v C (sdílené programovacími jazyky, které si tato pravidla vypůjčují z C, například, C ++, Perl a PHP ), že by bylo lepší přesunout bitové operátory nad operátory porovnání.[27] Mnoho programátorů si však na tuto objednávku zvyklo. Relativní úrovně priority operátory nalezené v mnoha jazycích ve stylu C jsou následující:

1()   []   ->   .   ::Volání funkce, rozsah, přístup k poli / členům
2!   ~   -   +   *   &   velikost   typ obsazení   ++   --  (většina) unárních operátorů, velikost a odlitky typu (zprava doleva)
3* /% MODNásobení, dělení, modulo
4+   -Sčítání a odčítání
5<<   >>Bitový posun doleva a doprava
6<   <=   >   >=Srovnání: menší než a větší než
7==   !=Srovnání: stejné a nerovné
8&Bitové AND
9^Bitově exkluzivní OR (XOR)
10|Bitové včetně (normální) NEBO
11&&Logické AND
12||Logické NEBO
13? :Podmíněný výraz (ternární)
14=   +=   -=   *=   /=   %=   &=   |=   ^=   <<=   >>=Operátoři přiřazení (zprava doleva)
15,Operátor čárky

Příklady: (Poznámka: V níže uvedených příkladech se „≡“ používá ve smyslu „je ekvivalentní“ a nelze jej interpretovat jako skutečný operátor přiřazení použitý jako součást příkladu výrazu.)

  • ! A +! B(! A) + (! B)
  • ++ A +! B(++ A) + (! B)
  • A + B * CA + (B * C)
  • A || PŘED NAŠÍM LETOPOČTEMA || (PŘED NAŠÍM LETOPOČTEM)
  • A && B == CA && (B == C)
  • A & B == CA & (B == C)

Překladače mezi zdroji že kompilace do více jazyků se musí výslovně zabývat otázkou odlišného pořadí operací napříč jazyky. Haxe například standardizuje objednávku a vynucuje ji vložením závorek tam, kde je to vhodné.[28]

Bylo zjištěno, že přesnost znalostí vývojářů softwaru o prioritě binárních operátorů úzce sleduje jejich frekvenci výskytu ve zdrojovém kódu.[29]

Viz také

Poznámky

  1. ^ A b Někteří autoři se záměrně vyhýbají vynechání závorek s funkcemi, a to i v případě jediné číselné proměnné nebo konstantních argumentů (např. Oldham dovnitř Atlas ), zatímco ostatní autoři (jako NIST ) aplikujte toto zjednodušení zápisu pouze podmíněně ve spojení s konkrétními názvy víceznakových funkcí (jako hřích), ale nepoužívejte jej s obecnými názvy funkcí (jako F).
  2. ^ Aby nedocházelo k nejednoznačnosti, je toto notační zjednodušení pro monomials se záměrně vyhýbá v pracích jako Oldham Atlas funkcí nebo NIST Handbook of Mathematical Functions.
  3. ^ „Of“ je ekvivalentní rozdělení nebo násobení a běžně se používá zejména na úrovni základní školy, jako v „polovině“ z padesáti".
  4. ^ Například třetí vydání Mechanika podle Landau a Lifshitz obsahuje výrazy jako hPz/2π (str. 22) a první svazek Feynman přednášky obsahuje výrazy jako 1/2N (str. 6–7). V obou knihách jsou tyto výrazy psány konvencí, kterou solidus je vyhodnocen jako poslední. To také znamená, že výraz jako 8/2 (4) má řešení 1 jako vynechání znak násobení (x * nebo.) znamená, že solidus je vyhodnocen jako poslední, i když je umístěn více doleva.

Reference

  1. ^ A b C d E F G h i j Bronstein, Ilja Nikolaevič; Semendjajew, Konstantin Adolfovič (1987) [1945]. „2.4.1.1. Definice arithmetischer Ausdrücke“ [Definice aritmetických výrazů]. Napsáno v Lipsku v Německu. V Grosche, Günter; Ziegler, Viktor; Ziegler, Dorothea (eds.). Taschenbuch der Mathematik [Kapesní kniha matematiky] (v němčině). 1. Přeložil Ziegler, Viktor. Weiß, Jürgen (23. vyd.). Thun, Švýcarsko / Frankfurt nad Mohanem, Německo: Verlag Harri Deutsch (a B. G. Teubner Verlagsgesellschaft, Lipsko). str. 115–120, 802. ISBN  3-87144-492-8. Regel 7: Ist F(A) Teilzeichenreihe eines arithmetischen Ausdrucks oder einer seiner Abkürzungen und F eine Funktionenkonstante und A eine Zahlenvariable oder Zahlenkonstante, so darf F A dafür geschrieben werden. [Darüber hinaus ist noch die Abkürzung Fn(A) für (F(A))n üblich. Dabei kann F sowohl Funktionenkonstante als auch Funktionenvariable sein.]
  2. ^ „Zeptejte se doktora Matematiky“. Matematické fórum. 2000-11-22. Citováno 2012-03-05.
  3. ^ „Kompendium matematických symbolů“. Matematický trezor. 2020-03-01. Citováno 2020-08-22.
  4. ^ Weisstein, Eric W. "Přednost". mathworld.wolfram.com. Citováno 2020-08-22.
  5. ^ Stapel, Elizabeth. „Pořadí operací: PEMDAS“. Purplemath. Citováno 2020-08-22.
  6. ^ Oldham, Keith B .; Myland, Jan C .; Spanier, Jerome (2009) [1987]. Atlas funkcí: s Equatorem, kalkulačka funkcí Atlas (2. vyd.). Springer Science + Business Media, LLC. doi:10.1007/978-0-387-48807-3. ISBN  978-0-387-48806-6. LCCN  2008937525.
  7. ^ A b Olver, Frank W. J .; Lozier, Daniel W .; Boisvert, Ronald F .; Clark, Charles W., eds. (2010). NIST Handbook of Mathematical Functions. Národní institut pro standardy a technologie (NIST), Americké ministerstvo obchodu, Cambridge University Press. ISBN  978-0-521-19225-5. PAN  2723248.[1]
  8. ^ A b „Pravidla aritmetiky“ (PDF). Mathcentre.ac.uk. Citováno 2019-08-02.
  9. ^ „Prosím, omluvte moji drahou tetu Sally (PEMDAS) - navždy!“. Týden vzdělávání - Tipy pro výuku trenéra G.. 2011-01-01.
  10. ^ „Co je PEMDAS? - Definice, pravidlo a příklady“. Study.com.
  11. ^ A b C d Vanderbeek, Greg (červen 2007). Pořadí operací a RPN (Výkladový papír). Přípravné práce ke zkouškám na magisterské studium ve výuce (MAT). Lincoln, Nebraska, USA: University of Nebraska. Papír 46. Archivováno od původního dne 2020-06-14. Citováno 2020-06-14.
  12. ^ A b C d E Ball, John A. (1978). Algoritmy pro kalkulačky RPN (1. vyd.). Cambridge, Massachusetts, USA: Wiley-Interscience, John Wiley & Sons, Inc. str.31. ISBN  0-471-03070-8.
  13. ^ "Pořadí operací" (DOC). Syllabus.bos.nsw.edu.au. Citováno 2019-08-02.
  14. ^ „Pravidlo Bodmas - Co je pravidlo Bodmas - Pořadí operací“. vedantu.com. Citováno 2019-08-21.
  15. ^ George Mark Bergman: Pořadí aritmetických operací Archivováno 03.03.2017 na Wayback Machine
  16. ^ Místo vzdělání: Řád operací Archivováno 08.06.2017 na Wayback Machine
  17. ^ Robinson, Raphael Mitchel (Říjen 1958) [07-04-07]. „Zpráva o prvočíslech ve tvaru k · 2n + 1 a o faktorech Fermatových čísel " (PDF). Proceedings of the American Mathematical Society. University of California, Berkeley, Kalifornie, USA. 9 (5): 673–681 [677]. doi:10.1090 / s0002-9939-1958-0096614-7. Archivováno (PDF) od původního dne 2020-06-28. Citováno 2020-06-28.
  18. ^ Zeidler, Eberhard; Schwarz, Hans Rudolf; Hackbusch, Wolfgang; Luderer, Bernd; Blath, Jochen; Schied, Alexander; Dempe, Stephan; Wanka, Gert; Hromkovič, Juraj; Gottwald, Siegfried (2013) [2012]. Zeidler, Eberhard (vyd.). Springer-Handbuch der Mathematik I (v němčině). (1. vyd.). Berlín / Heidelberg, Německo: Springer Spektrum, Springer Fachmedien Wiesbaden. str. 590. doi:10.1007/978-3-658-00285-5. ISBN  978-3-658-00284-8. (xii + 635 stran)
  19. ^ A b Van Winkle, Lewis (23. 8. 2016). "Asociačnost asociace a standardní matematická notace". Codeplea - náhodné myšlenky na programování. Archivováno od původního dne 2020-06-28. Citováno 2016-09-20.
  20. ^ Anděl, Allen R. Základní algebra pro studenty vysokých škol (8 ed.). Kapitola 1, oddíl 9, cíl 3.
  21. ^ "Vzorec vrací neočekávanou kladnou hodnotu". Microsoft. 2005-08-15. Archivovány od originál dne 19. 4. 2015. Citováno 2012-03-05.
  22. ^ "Průvodce fyzickým stylem a notací" (PDF). Americká fyzická společnost. Oddíl IV – E – 2 – e. Citováno 2012-08-05.
  23. ^ "Prioritní sekvence výpočtu". support.casio.com. Casio. Citováno 2019-08-01.
  24. ^ „Implied Multiplication Versus Explicit Multiplication on TI Graphing Calculators“. Texas Instruments. 2011-01-16. 11773. Archivováno od originálu 2016-04-17. Citováno 2015-08-24.
  25. ^ Zachary, Joseph L. (1997). "Úvod do vědeckého programování - Výpočetní řešení problémů pomocí Maple a C - Pracovní list priority operátora". Citováno 2015-08-25.
  26. ^ Zachary, Joseph L. (1997). "Úvod do vědeckého programování - Výpočetní řešení problémů pomocí Mathematica a C - Notebook s prioritami operátorů". Citováno 2015-08-25.
  27. ^ Ritchie, Dennis M. (1996). „Vývoj jazyka C“. Historie programovacích jazyků (2. vyd.). Stiskněte ACM.
  28. ^ Li, Andy (02.05.2011). "6÷2(1+2)=?". Blog Andy Li. Citováno 2012-12-31.
  29. ^ Jones, Derek M. „Názory vývojářů na prioritu binárních operátorů“. CVu. 18 (4): 14–21.

Další čtení

externí odkazy