先日、ある人と話しているときに、私が大学で数学を学んだことを告げると、「なぜ、マイナス×マイナス=プラスとなるのか」と質問を受けた。
どうやら、「マイナス×マイナス=プラス」はルールとして覚えているようだった。

この質問を受けたとき、正直に言うと「すばらしい」と思った。なぜそう思ったのかというと、すでに当たり前として組み込まれている「マイナス×マイナス=プラス」に対して、疑問に感じて投げかけているからである。

そこで、分かり易い説明を考えてみたが思いつかず、また時間もなく返答できなかったため、後で上手な説明はないかとGoogle検索してみると、2通りの説明があった。

  • 何かに例えて文章で説明
  • 数式を用いて数学的に説明

この2つを比較して感じたことは、「何かに例えて文章で説明」の方が読み難かった。
また、理解の難易度という観点では、どちらも同じような気がした。

そこで、ここでは「なぜ、マイナス×マイナス=プラスとなるのか」という問いに対して、「数式を用いて数学的に説明」してみることにする。

ここからは、掛け算「×」を「⋅」と記述し、整数の世界で「マイナス×マイナス=プラス」となることを見ていこう。
ちなみに、整数とは「…, -2, -1, 0 , 1, 2, …」のような数のことである。

整数の性質

整数は次の性質を持つ(0,1,a,b,cは整数)。

  1. a⋅0 = 0⋅a = 0
  2. a⋅1 = 1⋅a = a
  3. a + 0 = 0 + a = a
  4. a + (-a) = a – a = (-a) + a = -a + a = 0
  5. a⋅(b + c) = a⋅b + a⋅c
  6. a,bが整数ならばa⋅bも整数

これらを言い換えると、次のようになる。

  1. 任意の整数に対して、0を掛けると、ゼロになる
  2. 任意の整数に対して、1を掛けても、変化なし
  3. 任意の整数に対して、0を加えても、変化なし
  4. 任意の整数に対して、その整数にマイナスを掛けた数を加えると、ゼロになる
  5. 2つの任意の整数に対して、その2つの整数を加えた後ある整数を掛けた数と、2つの整数それぞれにある整数を掛けた数を加えた数とは一致する
  6. a,bが整数ならばa⋅bも整数である

証明

それでは、次が成り立つことを示す。

(-1)⋅(-1) = 1

性質1から次が成り立つ。

(-1)⋅0 = 0

性質4から左辺の0を1+(-1)で置き換える。

(-1)⋅(1 + (-1)) = 0

左辺に性質5を適用する。

(-1)⋅1 + (-1)⋅(-1) = 0

性質2から(-1)⋅1を(-1)で置き換える。

(-1) + (-1)⋅(-1) = 0

両辺に1を加える。

1 + (-1) + (-1)⋅(-1) = 1 + 0

左辺に性質4、右辺に性質3をそれぞれ適用する。

0 + (-1)⋅(-1) = 1

性質6から (-1)⋅(-1) も整数となるので、左辺に性質3を適用する。

(-1)⋅(-1) = 1

となり示された。

終わりに

分かり難かっただろうか。もし、そうならば是非、紙とペンを用意して実際にゆっくりと一つ一つ書き写して言って欲しい。

注意して欲しいこととして、今示されたことは、「(-1)⋅(-1) = 1」が成り立つということだけだ。
「マイナスの整数×マイナスの整数=プラスの整数」となることが示されたわけではない。
これを証明する真にすばらしい方法を思いついたが、これを書くには時間が少なすぎるため省略する。

是非この拡張を目の前に紙とペンを用意して、チャレンジしてみてほしい。
きっと、良い頭の体操になるはずだ。

関連する記事

  • MySQL 月の差分を計算する方法MySQL 月の差分を計算する方法 MySQLで、月の差分を計算する方法をお伝えする。 計算は、PERIOD_DIFF関数を用いれば簡単に求めることができる。 これは、二つの期間の差の月数を返す関数である。 PERIOD_DIFF(P1, […]
  • R スティール(Steel)法R スティール(Steel)法 スティール(Steel)法とは、ダネット(Dunnett)法の多重比較に対応するノンパラメトリックな多重比較である。 スティール法を簡単に言うと、正規分布を仮定しない1つの対照群と2つ以上の処理群間を順位を用いて多重比較で調べる方法である。 Rで、スティール法を使う場合は、「スティール(Steel)の方法による多重比較」のページにソースコードが紹介されている。 […]
  • R データフレームのファクター列を2値に変換する方法 Rのデータフレームにおいて、ファクター列を2値に変換する方法をお伝えいたします。 方法はとても単純で、データフレームの列ごとにファクター型かどうかをチェックし、ファクター型であればファクターごとに2値の列を新たに作成し追加します。 ソースコードは以下のようになります。 convertFactorToBinary <- function(df, sep = […]
  • TensorFlow チュートリアルDeep MNIST for Expertsを試してみるTensorFlow チュートリアルDeep MNIST for Expertsを試してみる TensorFlowのチュートリアルDeep MNIST for Expertsを試してみる。 import tensorflow as tf import input_data # MNISTデータを取得 mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) # […]
  • Ubuntu 日本語形態素解析システムJUMANのインストール方法Ubuntu 日本語形態素解析システムJUMANのインストール方法 buntu14.04で日本語形態素解析システムJUMANのインストール方法をお伝えする。 JUMAN単体では次のコマンドで簡単にインストールできる。 $ sudo apt-get install […]
なぜマイナス×マイナス=プラスとなるのか