乗法
乗法(じょうほう、multiplication)は、算術の四則演算と呼ばれるものの一つで、整数では、一方の数 (被乗数、ひじょうすう、multiplicand) に対して他方の数 (乗数、じょうすう、multiplier) の回数だけ繰り返し加えていく(これを掛けるまたは乗じるという)ことにより定義できる二項演算である。掛け算(かけざん)、乗算(じょうざん)とも呼ばれる。代数学においは、変数の前の乗数(例えば 3y の 3)は係数(けいすう、coefficient)と呼ばれる。
逆の演算として除法をもつ。乗法の結果を積 (せき、product) と呼ぶ。
乗法は、有理数、実数、複素数に対しても拡張定義される。また、抽象代数学においては、一般に可換とは限らない二項演算に対して、それを乗法、積などと呼称する(演算が可換である場合はしばしば加法、和などと呼ぶ)。
(いずれも 0 でない)自然数 m (被乗数)と n (乗数)に対して、m を n 個分加えた数
\overbrace{m + m + \cdots + m}^{n {\text{個}}
m × n, m · n, mn
などのように書いて m に n を掛けた数や m に n を乗じた数や m と n の積、m 掛ける n などという。言語によってはその自然な語順から、同じく m を n 個分加えた数を
n × m, n · m, nm
などのように上と逆順に記す場合もある(たとえば英語では n × m を普通 n times m すなわち n 回の m と読む。n multiplied by m、すなわち、m を乗じた n と読むこともある。)。
カメラのレンズ倍率やCDの倍速表示などは、英語のtimes表記である。言語の表記の都合による、こういった順序であるが、数値の乗算においては、この演算について交換法則が成り立つ(後述)という性質によって、どちらも同一視する。
n = 0 のときは、n × m = 0 × m は 0 であると約束する。
さらに整数同士の乗法は、負の整数を掛けるという事を以下のように定める: 整数 m と自然数 n に対して
m × (−n) := (−m) × n
すなわち、「負の整数 −n を掛ける」ということを、「対応する正の整数 n の数だけ符号を反転した整数(ここでは −m)を加える」という演算として定義する。
算術において、乗法はしばしば、記号 "×" を項の間に用いることで書かれる。すなわち、中置記法である。例えば、
2\times 3 = 6 (2かける3は6、2かける3いこーる6、にさんがろく、等と読む)
3\times 4 = 12
2\times 3\times 5 = 6\times  5 = 30
2\times 2\times 2\times 2\times 2 = 32
この記号は Unicode で D7 でエンコードされている。
乗法には他の数学的表記もある。
乗法はドット記号によっても表される。通常位置は真ん中であるが、ピリオドとすることもある。
5 \cdot 2 \quad\text{or}\quad 5\,.\,2
ミドルドットの記法は、Unicode では 22C5 としてエンコードされていて、日本やアメリカ、イギリスでは標準的であり、ピリオドが小数点として用いられるその他の国々でも標準的である。ドット演算子の文字が利用可能でない時は、中黒 (·) が用いられる。小数点としてコンマを用いるフランス等の国々では、ピリオドもミドルドットも乗法に用いられるAugust 2011。
代数学において、変数を含む乗法はしばしば並置として書かれる(例えば、x 掛ける y の意味で xy や、5 掛ける x の意味で 5x など)。この表記はかっこで囲まれた量に対して用いることもできる(例えば、5 掛ける 2 の意味で、5(2) あるいは (5)(2) など)。乗法の記号を省略することは、その部分の変数が他の変数の名前と一致してしまうときや、かっこの前の変数名が関数名と混同されるとき、あるいは演算の優先順位の正しい決定において、曖昧さを引き起こすことがある。
行列の乗法ベクトル?においては、クロス記号とドット記号の間には明確な違いがある。クロス記号は一般に2つのベクトルのクロス積を表し、その演算結果はベクトルであるが、ドット記号は、2つのベクトルのドット積を表し、演算結果はスカラーである。
コンピュータープログラミングにおいては、(5*2 のように)アスタリスクを用いて書くのが最も一般的である。これは歴史的事情によるもので、多くのコンピュータは(ASCII や EBCDIC のように)文字集合が小さく制限されていて(• や × のような)乗法記号を持っておらず、しかしアスタリスクはすべてのキーボードに存在した。この使用法の起源はFORTRANプログラミング言語である。
(有限あるいは無限)数列の積は、ギリシャ文字パイの大文字Πを用いて書かれる。詳細は総乗を参照。
n と m が自然数であるとき、n を m 個加えたものと m を n 個加えたものは同じ数である。すなわち
交換法則: n × m = m × n
が成り立つ。また、回帰的に複数回の乗法を行ったものは積をとる順序によらない。すなわち
結合法則: (n × m) × l = n × (m × l)
が成り立つ。3 つの数の積は
n × m × l := (n × m) × l = n × (m × l)
とする(4 つ以上の数の積も同様である)。ただし無限個の数の積についてはこの限りではない(詳細は総乗の項を参照されたい)。
積と和の間には次の法則が成り立つ:
分配法則: n × (m + l) = n × m + n × l
この性質は、乗法の一般化において重要な手がかりとなる。
掛け算は割り算を統合する。すなわち、「q で割る」という除法の計算を「q の逆数 1/q を掛ける」という操作とみなす。
x × (p / q) := (x × p) ÷ q.
\frac{p}{q}\times\frac{r}{s}:= \frac{p\times r}{q\times s}
この定義は、割合の計算を考えることにより意味づけすることができる。
分配法則が成り立つものとして多項式同士の積が定義できる。
自然数や整数における上記の積の定義を再考すれば、加えられる対象である m は自然数や整数に限らずともよいことがわかる。実際、x として有理数や実数など和が定義できるものを考えれば、x を繰り返し加えることとして自然数を掛けることができる。また整数を掛けるためには、数 x は加法的逆元(マイナスの数)が定義できるものであれば何でも良い。すなわち x をあるアーベル群の元とするとき、n が整数であれば
nx = \begin{cases}
\overbrace{x + x + \cdots + x}^{n {\rm\ times} & n > 0 \\
0 & n = 0 \\
\underbrace{(-x) + (-x) + \cdots + (-x)}_〔n| {\rm\ times} & n < 0
\end{cases}
として n を掛ける操作を定義できる。このことを「整数全体の集合はアーベル群に自然に作用する」と言い表す。
紀元前2700年から紀元前2300年にかけてのシュメールでアバカスが使われ、楔形文字で記された粘土板の乗算表が発見されている。紀元前2世紀には算盤が中国に伝えられた。算盤には乗法を素早く計算する技法が発達していた。
日本の記録では『日本風土記』(1570年代)に「そおはん」という呼称で出てくるのが初出である。珠算における乗法では、古くは頭乗法、尾乗法、中乗法などの方法が使われ、現在の標準的な方法は新頭乗法と両落としとなっている。
ジョン・ネイピアは、科学で必要な計算を簡単にするべく計算技術として対数の概念を導入し、対数表(1598年)を発表した。古くからAB=\mathrm{e}^{\log{}A+\log{}B} という等式を利用する乗算の方法が知られており、対数表によって積の計算を和の計算に置き換えて近似値を求めることが出来るようになった。対数の導入によって、ヨハネス・ケプラーの天体軌道計算などの科学計算が可能となり、科学の急激な発展をもたらした。
エドマンド・ガンターが対数尺(1620年)を、ウィリアム・オートレッドが2つの対数尺を組み合わせた計算尺(1632年)を発明し、電卓が普及する1980年代まで使用された。
科学の急激な発展と共に、より精度の高い対数表に対する需要が大きくなった。
マルティン・ヴィーベリは、1875年に対数表を作成することが出来る階差機関に似た機構を持つ機械を発明した。
アナログ乗算器でも対数を用いたAB=\mathrm{e}^{\log{}A+\log{}B} という等式を利用する方法が用いられていた。
ENIACの開発において、アーサー・バークスが初めてデジタル乗算器を開発した。
デジタル乗算器では、ブースの乗算アルゴリズムと呼ばれる方法が開発された。加算よりも高速なビット演算の算術シフトを使って高速化している。
カラツバ法(1960年)
Toom–Cook multiplication(1963年)カラツバ法はToom-3の特別な場合である。
ショーンハーゲ・ストラッセン法(1971年)1965年に高速フーリエ変換/離散フーリエ変換のCooley-Tukey型FFTアルゴリズムが発見され、FFTを使う方法が開発された。ショーンハーゲ・ストラッセン法は、カラツバ法やToom-3より高速なアルゴリズムである。
Fürer's algorithm(2007年)Schönhage–Strassenより高速。
シュトラッセンのアルゴリズム(1969年)
九九の表では、一般に0の段・列は省略される。