Excelスプレッドシートの私のセルA1が数字3を保持しているとします。数式を入力した場合
= - A1^2 + A1
A2では、A2は-6(または-9 + 3)を示すはずの12を示します。
何故ですか?この誤解を招く動作を防ぐにはどうすればよいですか?
Excelスプレッドシートの私のセルA1が数字3を保持しているとします。数式を入力した場合
= - A1^2 + A1
A2では、A2は-6(または-9 + 3)を示すはずの12を示します。
何故ですか?この誤解を招く動作を防ぐにはどうすればよいですか?
回答:
簡潔な答え
この問題を解決するには、等号の前に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のマイナス記号は否定演算子と見なされます。これは、後続の数値(または式)の符号を変更する単項演算子(引数は1つのみ)です。ただし、0-3 ^ 2のマイナス記号は減算演算子です。これは、-
先行するものから後続するものを減算する2項演算子です-
。Excelの規則によると、指数演算子が ^
計算され、否定演算子の後と減算演算子の前に。「Excelの計算演算子と優先順位」、「Excelが数式で演算を実行する順序」セクションを参照してください。
標準的な数学的慣習では、べき乗は否定と減算の両方の前に計算され、より簡単に言えばの^
前に計算され-
ます。残念なことに、Excelは代数規則、学校の教科書、アカデミックライティング、科学計算機、Lotus 1-2-3、Mathematica、Maple、FortranやMatlabなどの計算指向言語、MS Works、... VBA( ... Excelのマクロの記述に使用される言語)。残念ながら、LibreOfficeとGoogle SheetsのCalcは、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に興味があるかもしれません。これは本当に標準的な数学的慣習ですか?
ロドルフォの答えよりも少し簡潔で、次のものを使用できます。
=-(A1^2)+(A1)
(編集:私はそれが自己の質問/回答だとはまったく見ませんでした。)
Excelは方程式を次のように解釈しているためです。
(-x)^ 2 + x
必要なとき:
-(x ^ 2)+ x
この種の望ましくない動作を防止するために、ベストプラクティスは、括弧を多用して独自の優先度システムを定義することです。例は次のようになります。
(-(x ^ 2))+ x
それはやり過ぎかもしれませんが、これはExcelが私が望むように動作することを保証する方法です。
x - x^2
ます。これにより、-が2進減算演算子として解釈されます。
式= - A1^2 + A1
はExcelに固有であるため、Excelのルールに従う必要があります。ここの他のいくつかの答えとは反対に、正しい優先順位はありません。さまざまなアプリケーションで採用されているさまざまな規約があります。参考までに、Excelで使用される優先順位は次のとおりです。
: Range
<space> intersection
, union
- Negation
% Percentage
^ Exponential
* and / Multiplication and Division
+ and - Addition and Subtraction
& Concatenation
= < > <= >= <> Comparison
括弧を使用してオーバーライドできます。
-
単項でもバイナリでもかまいません。しかし、それは操作の順序を意味するものではありません。Python、Ruby、Octave、Awk、およびHaskell(頭に浮かんだ指数演算子を備えた最初の5つの言語)では、他の言語はこれを正しく実現し、-3 ** 2
常にに評価され-9
ます。どうして?それが正しい答えだからです。
どちらの方法でも使用できます。
=-A1^2+A1
12を返しますが:
=0-A1^2+A1
-6を返します
12を返すことが常識に反すると感じた場合; Googleスプレッドシートでも同じことが行われることに注意してください。
=A1-A1^2
ます............... -6を
あるいは、あなたはちょうどすることができます
= A1 - A1^2
なぜなら -y + x = x-y
他の人は「どうすればこれを避けることができますか」と答えました。質問の一部。なぜそれが起こるのかをお話しします。
これは、1979年のパソコンのメモリと処理能力が非常に限られていたために起こります。
VisiCalcは、IBM PCの最初のリリースの2年前の1979年にApple IIに導入されました(最近のデスクトップおよびラップトップコンピューターのほとんどが直接の祖先を追跡します)。Apple IIは最大64 KiB(65,536バイト)のRAMを搭載でき、VisiCalcを実行するには少なくとも32 KiBが必要でした。ここで少し脇に置いておくと、VisiCalcはかなり広く、Apple IIの「キラーアプリケーション」であると考えられています。
特殊なケースが少なく、式の先読みが少ないほど、スプレッドシートの式を解析するためのコードが簡単になります(結果として小さくなります)。したがって、大きなスプレッドシートを処理できることと引き換えに、ユーザーにコーナーケースで多少明確にすることを要求することは理にかなっています。ハイエンドのApple IIであっても、アプリケーションに必要なメモリが占められた後は、ほんの数十キロバイトしかプレイできませんでした。低メモリシステム(48 KiB RAMは "深刻な"マシンにとって珍しい構成ではありませんでした)で、制限はさらに低くなりました。
IBMがPCを導入したとき、新しいアーキテクチャへのVisiCalcの移植が行われました。ウィキペディアではこのポートを「バグ互換」と呼んでいるため、たとえシステムがより複雑な解析を行うことができたとしても、まったく同じ式の解析動作を期待しています。
1982年から、MicrosoftはVisiCalcと競合し、その後1-2-3でMultiplanクロスプラットフォームスプレッドシートと競合しました。後で、Lotus 1-2-3は1983年にIBM PC専用に導入され、すぐにVisiCalcに取って代わりました。移行を容易にするために、VisiCalcが行ったのと同じ方法で両方を数式を解析することは理にかなっています。そのため、限られた先読み動作が繰り越されます。
1985年に、Microsoft はExcelを最初にMacintosh用に、1987年にバージョン2からPCに導入しました。繰り返しになりますが、移行を容易にするために、今からほぼ10年で人々がすでに慣れている式の構文解析動作を進めることは理にかなっています。
Excelをアップグレードするたびに、動作を変更する機会がありましたが、ユーザーが数式を入力する新しい方法を学ぶ必要があるだけでなく、以前のバージョンで使用または作成されたスプレッドシートとの互換性を損なう危険性もあります。各分野で競合するいくつかの営利企業が存在する非常に競争の激しい市場では、ユーザーが慣れている行動を維持するという決定が下された可能性があります。
2019年に早送りしますが、1978年から1979年までに最初に行われた数式解析動作の決定にまだ固執しています。
式に- A1^2
は2つの演算子、つまり単項否定演算子-
と2進指数演算子が含まれ^
ます。括弧がない場合、2つの解釈があります。どちらか:
-(A1^2)
または:
(-A1)^2
最初の例では、最初にオペランドA1
と2
で累乗を行い、次に否定を行います。
2番目の例では、最初にオペランドA1
に対して否定を行い、その結果に対して指数を使用します2
。
質問へのコメントで述べたように、正気の環境では、権力はマイナス記号よりも高い優先度を持っています。つまり、システムが最初のシステムを想定している場合に最適です。
ただし、Excelは2番目の方を好みます。
教訓は、環境が健全かどうかわからない場合は、安全のために括弧を含めることです。だから書く-(A1^2)
。
これはExcelの問題ではなく、指数とネガの問題です。数字を取り、それを偶数乗すると、マイナス記号がキャンセルされます。
-x^2 + x == (-x * -x) + x
x = 3 => (-3 * -3) + 3
== 9 + 3 => 12
括弧と複数を使用する必要があります -1
-1 * (x^2) + x
-x ^ 2 + xここでx = 3これは二次方程式の例です。方程式は次のように記述できます。-3 * -3 + 3:乗算は加算より優先されるため、結果は次のように記述されます。9 + 3 :負の数xa負の数が正の結果を与えるため、なぜ= 9です。これは、任意の計算機、スライド規則、または任意のコンピューター数学プログラムを使用して検証できます最終結果9 + 3 = 12
これは本当に簡単な数学です。
規則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
あなたへの私のアドバイスは、毎年いくつかの時間を過ごし、数学の基本的なルールを更新し続けることです。
実際、基本的な数学を知っていることによってのみ、世界の大部分を維持し、維持することができるスキルです。
+-*/
、-
またはなどの単項演算子には適用されません+
。パワー演算子よりも高くされるの優先順位*
と/
が、単項演算子は、より高い優先度を持っている