Excelのx = 3の= -x ^ 2 + xが-6ではなく12になるのはなぜですか?


96

Excelスプレッドシートの私のセルA1が数字3を保持しているとします。数式を入力した場合

= - A1^2 + A1

A2では、A2は-6(または-9 + 3)を示すはずの12を示します。

何故ですか?この誤解を招く動作を防ぐにはどうすればよいですか?


19
負の数の2乗は正の数です。これは式9 + 3になります。-(A1)^ 2は-6を与えます。
ラムハウンド

68
@Ramhound Powersは、すべての健全な環境でマイナス記号よりも高い優先順位を持っています。
誰も

17
-6を取得するには-(A1 ^ 2)である必要があります...数字だけでなく、操作を囲む括弧が必要です。Excelは数学的には問題ありませんが、操作の順序を尊重する必要があり、疑問がある場合は括弧を使用してください!
SnakeDoc

13
これはすべて操作の順序に関するものであり、Excelとは関係ありません。
YetAnotherRandomUser

11
OPの数学スキルを批判するすべてのコメンターに対して:標準の純粋な数学では、これは明確に-6と評価されるはずです。特に、ネガティブは常に0-xを意味すると理解されています(答えに示されているように)。単項式の導入-は、応用コンピュータサイエンスの新しいトピックであり、ほとんどの場合、実装の詳細にすぎません。これを理解していないためにOPを批判することは、「プログラムは問題ありません。数学をチェックするだけです。これらの数値をバイナリで書くなら...」で混乱についての質問に答えるようなものです
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のマイナス記号は否定演算子と見なされます。これは、後続の数値(または式)の符号を変更する単項演算子(引数は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に興味があるかもしれません。これは本当に標準的な数学的慣習ですか?


1
コメントは詳細なディスカッション用ではありません。この会話はチャットに移動さました
デビッドポスティル

上記をご覧ください。コメントがチャットディスカッションの一部でない場合、すべてのコメントは削除されます。
デビッドポスティル

20

ロドルフォの答えよりも少し簡潔で、次のものを使用できます。

=-(A1^2)+(A1)

(編集:私はそれが自己の質問/回答だとはまったく見ませんでした。)


1
まさに!言語やアプリケーションの優先ルールに応じて、本来あるべきだと思うものがトラブルの原因になります。
jamesqf

2
@jamesqf、しかしこれには何らかの意味と制限がなければなりません。誰も2+(3 * 4)を書き込みません。言語に算術演算と優先規則が含まれる場合、すべての標準的な数学規則を完全にサポートする必要があります。Excelには、このような失態の言い訳はありません。
ゼウス

4
@ゼウス:誰も?特に複雑な表現やif条件の場合はそうでしょう。もちろん、たとえ括弧を省いていたとしても、3 * 4 + 2と書きます。
jamesqf

3
このような括弧の過剰使用の習慣は、C(およびその構文の子孫)への(あまりにも一般的である)過度の暴露に起因するものではないかと疑っていました。しかし、Cは、優先順位を含む数学規則の正しいフォローの良い例ではありません(さらにマクロに問題があります)。対照的に、より多くの学術システム/言語に最初にさらされた人々は、正しいデザインを強く期待し、「万が一に備えて」前方譲歩する傾向はありません。したがって、OPのような本物の驚き。
ゼウス

14

リーディング-は、最初の用語の一部と見なされます。

=-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


4

Excelは方程式を次のように解釈しているためです。

(-x)^ 2 + x

必要なとき:

-(x ^ 2)+ x

この種の望ましくない動作を防止するために、ベストプラクティスは、括弧を多用して独自の優先度システムを定義することです。例は次のようになります。

(-(x ^ 2))+ x

それはやり過ぎかもしれませんが、これはExcelが私が望むように動作することを保証する方法です。


4
「PEMDASはExcelでは保証されていないため」—いいえ、Excelでは絶対に保証されています。それ以外は狂気です。単項否定(減算とは異なります)がべき乗よりも優先されるかどうかは、PEMDASではカバーされていません。
コンラッドルドルフ

1
@routhken括弧を多用すると、書き込み、編集、デバッグが面倒になります。これらのタスクを容易にするために、使用しているソフトウェアのオペレーターの優先順位を確認し、必要な括弧のみを使用しています。さらに、読みやすくするためにスペースを追加します。
ロドルフォオビエド

@KonradRudolph私は答えを編集しました。明確化してくれてありがとう。
routhken

1
を使用することをお勧めしx - x^2ます。これにより、-が2進減算演算子として解釈されます。
Xalorous

@KonradRudolphこれを見る方法は、スプレッドシートとコンピュータープログラミング言語がPUEMDASを使用し、単項演算が括弧演算の後、バイナリ数学演算の前に評価されることだと思います。
Xalorous

3

= - A1^2 + A1はExcelに固有であるため、Excelのルールに従う必要があります。ここの他のいくつかの答えとは反対に、正しい優先順位はありません。さまざまなアプリケーションで採用されているさまざまな規約があります。参考までに、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を試してみると、答えが6ではなく5であることがわかります。Excelが代数の規則に従っていると思われます。人を惑わすことの意味は何ですか?
ロドルフォオビエド

正しい優先順位がありますが、コンピューターには追加の操作があります。ここでの問題は、代数を書いている人が否定と減算を区別する場合、コンピューターは否定と減算に「-」を使用することです。コンピューターが違いを判断するには、一連のルールが必要です。「-x」では、「-」は単項演算子です(1つのオペランドに作用します)。「1-x」では、「-」は二項演算子です。そのため、Excel(およびその他のコンピューターソフトウェア)は-x ^ 2を(-x)^ 2に変換します。優先順位の残りの部分は、私たち全員が小学校で学んだので、まだ適用されます。
Xalorous

3
@Xalorous:はい、-単項でもバイナリでもかまいません。しかし、それは操作の順序を意味するものではありません。Python、Ruby、Octave、Awk、およびHaskell(頭に浮かんだ指数演算子を備えた最初の5つの言語)では、他の言語はこれを正しく実現し、-3 ** 2常にに評価され-9ます。どうして?それが正しい答えだからです。
wchargin

1
@Xalorousは、代数を書く人が、あいまいさを減らすために、聴衆の慣習​​と括弧を組み合わせて使用​​します。正しい優先順位はなく、代数の規則は実際には単なる慣習です。
ポールスミス

3

どちらの方法でも使用できます。

=-A1^2+A1

12を返しますが:

=0-A1^2+A1

-6を返します

12を返すことが常識に反すると感じた場合; Googleスプレッドシートでも同じことが行われることに注意してください。


1
単項マイナス記号の優先度が「高すぎる」ようです。
アンドレアスレイブランド

@AndreasRejbrand =記号に直接続く場合にのみ、ユニタリであるように見え=A1-A1^2ます............... -6を
ゲイリーの学生

2
しかし、例A1-A1 ^ 2では、マイナス記号は明らかにバイナリです。(単項演算子は、単一のオペランド(-5の単項マイナス記号、または階乗、非符号など)を取る演算子です。二項演算子は、2つのオペランド(バイナリプラス、マイナス、乗算、ユニオンなど)。)マイナス記号は、等号の直後に続かない場合でも単項になる可能性があることに注意してください: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は、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年までに最初に行われた数式解析動作の決定にまだ固執しています。


mathforum.org/library/drmath/view/69058.htmlおよびmacnauchtan.com/pub/precedence.html#_Aworksは、Lotus 1-2-3が一般的な代数規則に従っていることを報告しています。
ロドルフォオビエド

0

式に- A1^2は2つの演算子、つまり単項否定演算子-と2進指数演算子が含まれ^ます。括弧がない場合、2つの解釈があります。どちらか:

-(A1^2)

または:

(-A1)^2

最初の例では、最初にオペランドA12で累乗を行い、次に否定を行います。

2番目の例では、最初にオペランドA1に対して否定を行い、その結果に対して指数を使用します2

質問へのコメントで述べたように、正気の環境では権力はマイナス記号よりも高い優先度を持っています。つまり、システムが最初のシステムを想定している場合に最適です。

ただし、Excelは2番目の方を好みます。

教訓は、環境が健全かどうかわからない場合は、安全のために括弧を含めることです。だから書く-(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は、演算子の優先順位に誤った規則を使用します。
ダウッドイブンカリーム

-x^2xが3の場合とx^2xが-3の場合の違いに注意してください。-x^2+x12には決して到達しない:wolframalpha.com/input/?i
トーマスウェラー

-2

-x ^ 2 + xここでx = 3これは二次方程式の例です。方程式は次のように記述できます。-3 * -3 + 3:乗算は加算より優先されるため、結果は次のように記述されます。9 + 3 :負の数xa負の数が正の結果を与えるため、なぜ= 9です。これは、任意の計算機、スライド規則、または任意のコンピューター数学プログラムを使用して検証できます最終結果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には大きな違いがあります。そして、それは非常に明確です。それを述べることは私には意味がありません。無礼な先生はいませんが、あなたは受動的で攻撃的なやり方でカムバックしようとしただけだと思います。私はあなたをsomething辱するようなことを言ったら申し訳ありません。私はここにいるだけです。
マイケルジョン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.