エクセルのスプレッドシートのセルA1に3という数字が入っているとします。式を入力すると
= - A1^2 + A1
の場合、A2は-6(または-9+3)を表示すべきところ、12を表示しています
なぜそうなるのか?この誤解を招く行動を防ぐにはどうすればいいのでしょうか?
96 None 2018-12-18
Short answer
この問題を解決するには、等号の前に0を追加するだけです
= 0 - A1^2 + A1
または、カッコをいくつか追加して、標準的な操作順序を強制的に行うことができます
= - (A1^2) + A1
またはマイナス記号を-1の乗算の一般的な解釈に置き換えます
= -1 * A1^2 + A1
この場合、余分な項+A1があるので、@lioness99aさんが提案した解が最良の解です
= A1 - A1^2
Detailed explanation
エクセルの規約では
= - 3^2
は(-3)^2 = 9 に等しく、一方
= 0-3^2
0-9 = -9に等しくなります
なぜ0を加えるだけで結果が変わるのか?
minuendで先行していない-3^2のマイナス符号は、否定演算子とみなされ、これは、後に続く数(または式)の符号を変更する単項演算子(引数を1つだけ持つ)です。しかし、0-3^2 のマイナス記号は減算演算子とみなされ、これは -
に続くものを -
に先行するものから減算する二項演算子です。Excelの規則によると、指数演算子^
は否定演算子の後に計算され、減算演算子の前に計算されます。“Excelの計算演算子と優先順位”の「Excelが数式で演算を行う順序」のセクションを参照してください
標準的な数学の規則は、除算は否定と減算の両方の前に計算される、あるいはもっと簡単に言えば、^
は-
の前に計算されるというものです。恥ずかしながら,Excelは代数の規則,学校の教科書,学術論文,科学計算機,Lotus 1-2-3,Mathematica,Maple,FortranやMatlabのような計算指向言語,MS Works,および…とは異なる規則を選択しました.VBA(Excelのマクロを記述するために使用される言語)。残念ながら、LibreOfficeのCalcとGoogle SheetsはExcelとの互換性のために同じ規約に従っています。しかし、Googleの検索ボックスやバーに式を入れると素晴らしい結果が得られます。Enterキーを押すと、計算の順番がカッコで示されます。指数よりも否定が優先されることを擁護する「計算機科学者」の議論に、数学者が殺意を抱く議論。http://mathforum.org/library/drmath/view/69058.html
General Workarounds
計算したいなら
- 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。これは本当に指数の次数のための標準的な数学の慣習なのでしょうか?
137 Rodolfo Oviedo 2018-12-18
ロドルフォのアンサーよりも少し簡潔なので、使えます
=-(A1^2)+(A1)
(編集:完全に自問自答とは見ていませんでした)
20 BruceWayne 2018-12-18
有力な-
は第1期の一部と考えられています
=-3^2
は(-3)^2 = 9
として処理されます
開始時にゼロがある場合は、通常の減算として扱われます
=0-3^2
は0 - 3^2 = -9
として処理されます
また、演算子が2つあれば、同じことが起こります
=0--3^2
は0 - (-3)^2 = -9
、=0+-3^2
は0 + (-3)^2 = 9
として処理されます
14 trapper 2018-12-19
エクセルがあなたの方程式を解釈しているからです
(-x)^2 + x
あなたが望んだ時
-(x^2) + x
このような望ましくない動作を防ぐために、私は、否定は減算と同じではないので、PEMDASではカバーされていないので、独自の優先順位システムを定義するためにカッコを多用することが最善の方法であると思います。例は次のようになります
(-(x^2))+x
やりすぎかもしれませんが、これが私の思い通りのExcelの動作を保証する方法です
4 routhken 2018-12-19
= - A1^2 + A1
の式はエクセル特有のものなので、エクセルのルールに従わなければなりません。ここでの他のいくつかの回答に反して、正しい優先順位はありません。異なるアプリケーションで採用されている異なる規則があるだけです。参考までに、エクセルで使用されている優先順位は以下の通りです
: Range
<space> intersection
, union
- Negation
% Percentage
^ Exponential
* and / Multiplication and Division
+ and - Addition and Subtraction
& Concatenation
= < > <= >= <> Comparison
括弧を使って上書きすることができます
3 Paul Smith 2018-12-19
どっちでもいいですよ
=-A1^2+A1
は12を返しますが
=0-A1^2+A1
は-6を返します
12を返すことが常識に反すると感じている人は、Google Sheetsも同じことをしていることに注意してください
3 Gary’s Student 2018-12-18
あるいは、そうすればいいのです
= A1 - A1^2
なぜなら -y + x = x-y
は
3 lioness99a 2018-12-21
他の方も「どうすれば回避できるのか」という部分について回答しています。なぜそうなってしまうのかをお伝えします
1979年当時のパーソナルコンピュータは、メモリや処理能力が非常に限られていたため、このようなことが起こります
VisiCalcは1979年にApple IIに導入されましたが、これはIBM PC (現代のデスクトップやラップトップコンピュータのほとんどがその直系の祖先をたどっています)が最初にリリースされる2年前のことです。Apple II は最大 64 KiB (65,536 バイト) の RAM を搭載しており、VisiCalc を実行するには少なくとも 32 KiB が必要でした。余談ですが、VisiCalcはApple IIの「キラーアプリケーション」であると広く考えられています
特殊なケースが少なく、必要な数式の先読みが少なくなればなるほど、スプレッドシートの数式を解析するコードはシンプルになります(結果的に小さくなります)。したがって、大規模なスプレッドシートを扱えるようにする代わりに、コーナーケースでの明示的な処理をユーザーに要求するのは理にかなっています。ハイエンドの Apple II を使っていても、アプリケーションが必要とするメモリを考慮した後では、数十キロバイトしか使えないことを覚えておいてください。低メモリのシステム(48 KiB RAM は「本格的な」マシンでは珍しい構成ではありませんでした)では、その限界はさらに低くなっていました
IBMがPCを発表したとき、新しいアーキテクチャへのVisiCalcの移植が行われました。ウィキペディアはこの移植を “バグ互換性がある” としています
1982年からマイクロソフトは、Multiplanのクロスプラットフォームスプレッドシートで、VisiCalc、そして後に1-2-3と競合しました。その後、Lotus 1-2-3が1983年にIBM PC専用に導入され、すぐにVisiCalcを追い抜きました。移行を容易にするために、VisiCalcが行ったのと同じ方法で数式を解析することは、両者にとって理にかなっていました。そのため、限定的な先読み動作はそのまま引き継がれることになりました
1985年、MicrosoftはExcelを発表しました。これはもともとはMacintosh用でしたが、1987年のバージョン2からPCにも導入されました。ここでも、移行を容易にするために、人々がすでに10年近く前から慣れ親しんできた数式のパース動作を引き継ぐことは理にかなっていました
Excel のアップグレードのたびに動作を変更する機会がありましたが、ユーザーは数式の新しい入力方法を習得しなければならないだけでなく、以前のバージョンで使用したり作成したりしたスプレッドシートとの互換性が失われる危険性がありました。複数の営利企業がそれぞれの分野で競い合う競争の激しい市場では、ユーザーが慣れ親しんだ動作を維持することが決定された可能性が高い
2019年に早送りしても、私たちはまだ1978年から1979年までの間に行われた式の解析動作の決定に行き詰っています
2 user 2019-04-03
式 - A1^2
には2つの演算子、すなわち単項否定演算子 -
と2項指数演算子 ^
が含まれています。括弧がない場合、2つの解釈があります。どちらか
-(A1^2)
or:
(-A1)^2
最初のものは、まずオペランドA1
と2
で指数計算を行い、その上で否定を行うというものです
2番目のものは、まずオペランドA1
の否定を行い、その結果と2
を指数化します
質問へのコメントでも言われていましたが、どんなまともな環境でもパワーズの方がマイナス記号よりも優先度が高いです。つまり、システムが最初のものを想定しているのが一番良いということです
しかし、エクセルは2番目のものを好む
教訓としては、自分の環境がまともかどうかわからない場合は、安全のためにカッコを入れておくことです。なので、-(A1^2)
と書きます
0 Jeppe Stig Nielsen 2018-12-22
これはエクセルの問題ではなく、指数と負の問題です。数字を取って偶数乗に上げるときは、負の符号を打ち消しています
-x^2 + x == (-x * -x) + x
x = 3 => (-3 * -3) + 3
== 9 + 3 => 12
括弧を使って-1
で倍数化する必要があります
-1 * (x^2) + x
-1 nitrodmr 2018-12-19
-x =3 これは二次方程式の例です。-3*-3+3 :乗算は足し算よりも優先されるので、結果は次のように書かれます。9 + 3 :なぜ=9なのかというと、負の数×負の数は正の結果を与えるからです。これは、任意の電卓、スライドルール、または任意のコンピュータ数学プログラムを使用して検証することができます 最終的な結果 9 + 3 = 12
-2 Cripple2Cripple 2018-12-22
本当に簡単な算数です
ルール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
私からのアドバイスは、毎年時間をかけて、数学の基本的なルールをリフレッシュし続けることです
基礎的な数学を知っているからこそ、世界の大部分を維持し、常にトップに立っていられるスキルなのです
-3 Michael John 2018-12-20