数学において、空積、またはヌル積、空虚積とは、因数を掛けない結果のことです。慣例として、空積は乗法単位元に等しくなります(問題となる乗算演算に単位元が存在すると仮定した場合。数が暗黙的に示される場合は、1になります)。同様に、空和(数を足さない結果)は慣例として加法単位元(0)に等しくなります。[ 1 ] [ 2 ] [ 3 ] [ 4 ]
空積という用語は、算術演算について議論する際に、上記のような意味で用いられることが最も多い。しかし、集合論的な交差、圏論的な積、コンピュータプログラミングにおける積について議論する際にも、この用語が用いられることがある。
a 1、a 2、a 3、 ... を数列とし、
数列の最初のm個の要素の積とする。
すべてのm = 1, 2, ...に対して、ただし、次の慣例を使用する。つまり、因数がまったくない「積」は1と評価されます。因数がゼロの「積」を許容することで、多くの数式で考慮すべきケースの数を減らすことができます。このような「積」は、帰納法の証明やアルゴリズムにおいて自然な出発点となります。これらの理由から、「空の積は1である」という慣習は、数学やコンピュータプログラミングにおいて一般的に用いられています。
空積の概念が有用な理由は、ゼロや空集合が有用である理由と同じです。それらは一見するとあまり面白くない概念のように思えますが、それらが存在することで、多くの主題をはるかに簡潔な数学的表現で説明することが可能になります。
例えば、空の積 0! = 1 ( 0 の階乗) とx 0 = 1 はテイラー級数表記を簡略化します( x = 0の場合については、 0 の 0 乗を参照してください)。同様に、Mがn × n行列の場合、M 0はn × n単位行列であり、線形写像を0 回適用すると、単位写像を適用するのと同じ効果が得られることを反映しています。
別の例として、算術の基本定理は、1より大きいすべての正の整数は素数の積として一意に表すことができると述べています。しかし、0または1の因数のみを持つ積を許容しない場合、定理(およびその証明)は長くなります。[ 5 ] [ 6 ]
数学における空積の使用例は、二項定理(すべてのxに対してx 0 = 1を仮定し、それを暗示する)、スターリング数、ケーニッヒの定理、二項型、二項級数、差分演算子、ポッホハマー記号などに見られます。
対数は積を和に写像するため、
彼らは空の積を空の和にマッピングする。
逆に、指数関数は和を積に写像します。
そして、空の和を空の積にマッピングする。
デカルト積の一般的な定義を考えてみましょう。
Iが空の場合、そのようなgは空関数のみである。これは、のユニークな部分集合です。それは関数ですすなわち、空のサブセット(唯一のサブセットはもっている):
したがって、どの集合のデカルト積の濃度も1ではない。
おそらくより馴染みのあるnタプル解釈では、
つまり、空のタプルを含む単一要素の集合です。どちらの表現においても、空の積の濃度は1 であることに注意してください。つまり、 0 個の入力から 0 個の出力を生成するすべての方法の数は 1 です。
任意の圏において、空族の積はその圏の終対象である。これは積の極限定義を用いることで証明できる。n重圏積は、 n個の対象を持つ離散圏によって与えられる図式に関する極限として定義できる。空積は、空圏に関する極限によって与えられ、空圏が存在する場合はそれが圏の終対象となる。この定義は、上記のような結果を与えるように特殊化される。例えば、集合の圏では、圏積は通常のデカルト積であり、終対象は単元集合である。群の圏では、圏積は群のデカルト積であり、終対象は1つの要素を持つ自明な群である。空積の通常の算術的定義を得るには、有限集合の圏における空積の非圏化を行う必要がある。
双対的に、空の族の余積は初期対象である。零の圏的積または余積は、特定の圏には存在しない場合がある。例えば、体の圏ではどちらも存在しない。
古典論理では、論理積演算が定義されており、これは述語論理では全称量化に一般化されます。論理積は、真を1、偽を0と直感的に同一視し、通常の乗算器のように振る舞うため、論理乗算として広く知られています。乗算器は任意の数の入力を持つことができます。入力が0の場合は、空論理積となり、これは常に真と等しくなります。
これは論理学における別の概念である「空虚な真理」に関連しており、空の集合のオブジェクトはどのような性質でも持ち得ることを示しています。これは、論理学全般における論理積が1以下の値を扱う方法によって説明できます。つまり、論理積が長くなるほど、0になる確率が高くなります。論理積は単に命題をチェックし、いずれかの命題が偽と評価されるとすぐに0(または偽)を返します。結合する命題の数を減らすと、チェックに合格して1になる可能性が高くなります。特に、チェックするテストやメンバーが0個の場合、どれも失敗することはないので、どの命題やメンバーの性質をテストするかに関わらず、デフォルトで常に成功する必要があります。
Pythonなどの多くのプログラミング言語では、数値のリストを直接表現することができ、任意の数の引数を取ることができる関数も用意されています。そのような言語に、リスト内のすべての数値の積を返す関数がある場合、通常は次のように動作します。
>>> math.prod ([ 2 , 3 , 5 ] ) 30 >>> math.prod ( [ 2 , 3 ] ) 6 >>> math.prod ( [ 2 ] ) 2 >>> math.prod ( [ ] ) 1(注:バージョン3.8より前のモジュールprodでは利用できませんmath。)
この慣例により、「リストの長さが1の場合」や「リストの長さが0の場合」といった特殊なケースをコーディングする必要がなくなります。
乗算は中置演算子であり、したがって二項演算子であるため、空の積の表記が複雑になります。一部のプログラミング言語では、可変引数関数を実装することでこの問題を解決しています。例えば、Lisp言語の完全括弧による前置表記は、引数なし関数の自然な表記を生み出します。
(* 2 2 2) ; 8 と評価される (* 2 2) ; 4 と評価される (* 2) ; 2と評価される (*) ; 1と評価される
Hardy と Wright: "1 を除くすべての正の整数は素数の積である"、Harold M. Stark: "
n
が 1 より大きい整数である場合、
n
は素数であるか、
n
は素数の有限積である"。これらの例 (AJM van Gasteren によるもの) はどちらも空の積を否定しており、最後の例は単一の因数を持つ積も否定している。
しかし、0 も確かに有限であり、0 個の因数の積を 1 に等しいと定義することで、例外をなくすことができます。「
n
が正の整数である場合、
n
は素数の有限積である」。