数学において、ドット積は、長さが等しい2つの数値列(通常は座標ベクトル)を入力として、1つの数値を返す代数演算です。ユークリッド幾何学では、2つのベクトルのスカラー積[注1 ]は、それらのデカルト座標のドット積であり、特定のデカルト座標系の選択に依存しません。デカルト座標系が一度固定されている場合、「ドット積」と「スカラー積」という用語はしばしば同義語として使用されます。スカラー積は特定の内積であるため、「内積」という用語もよく使用されます。
代数的に、内積は2つの数列の対応する要素の積の和です。幾何学的に、2つのベクトルのスカラー積は、それらの長さとそれらの間の角度のコサインの積です。これらの定義は、デカルト座標を使用する場合に等価です。現代幾何学では、ユークリッド空間はしばしばベクトル空間を使用して定義されます。この場合、スカラー積は長さ(ベクトルの長さは、そのベクトル自身とのスカラー積の平方根です)と角度(2つのベクトル間の角度のコサインは、それらのスカラー積とそれらの長さの積の商です)を定義するために使用されます。
「ドット積」という名称は、この演算を表すためによく使われるドット演算子「⋅ 」に由来しています。 [ 1 ]別名「スカラー積」は、結果がベクトルではなくスカラーであることを強調しています( 3次元空間におけるベクトル積のように)。
内積は、代数的にも幾何学的にも定義できる。幾何学的定義は、ベクトルの角度と距離(大きさ)の概念に基づいている。これら二つの定義が等価であることは、ユークリッド空間にデカルト座標系が存在することを前提としている。
現代のユークリッド幾何学では、空間の点はデカルト座標で定義され、ユークリッド空間自体は一般的に実座標空間と同一視される。このような表現では、長さと角度の概念は内積によって定義されます。ベクトルの長さは、そのベクトル自身との内積の平方根として定義され、長さが1の2つのベクトル間の(向きのない)角度の余弦は、それらの内積として定義されます。したがって、内積の2つの定義の等価性は、古典的なユークリッド幾何学と現代的なユークリッド幾何学の定式化の等価性の一部となります。
2つのベクトルの内積そして正規直交基底に関して指定される は、総和表記で次のように定義されます。 [ 2 ]
どこはベクトル空間の次元です。たとえば、3次元空間では、ベクトルの内積はそしては:
同様に、ベクトルのドット積それ自身を含むと次のようになります。
ベクトルを列ベクトルと同一視すると、内積は行列積としても表すことができる。 どこは、の転置を表します。。
上記の例をこのように表現すると、1 × 3 行列(行ベクトル)に 3 × 1 行列(列ベクトル)を乗算して、一意の要素で識別される 1 × 1 行列が得られます。


ユークリッド空間において、ユークリッドベクトルは大きさと方向の両方を持つ幾何学的オブジェクトです。ベクトルは矢印としてイメージできます。大きさはその長さであり、方向はその矢印が指す方向です。ベクトルの大きさはは、2つのユークリッドベクトルの内積そして[ 3 ] [ 4 ] [ 1 ]によって定義される どこ角度はそして。
特に、ベクトルがそしては直交している(つまり、角度はまたは)、 それからこれは、 もう一方の極端な例として、それらが同方向である場合、それらの間の角度はゼロで、そして これは、ベクトルのドット積がそれ自体は これにより ベクトルのユークリッド長 の公式。

ユークリッドベクトルのスカラー射影(またはスカラー成分)ユークリッドベクトルの方向は どこ角度はそして。
内積の幾何学的定義に関して言えば、これは次のように書き換えることができる。 どこは、方向の単位ベクトルです。。

ドット積は、幾何学的には[ 5 ]によって特徴付けられる。 このように定義されたドット積は、各変数のスケーリングに関して同次であり、つまり任意のスカラーに対して、 また、分配法則も満たしている。つまり、
これらの性質は、ドット積が双線形形式であると言って要約できます。さらに、この双線形形式は正定値であり、つまり、は決して負にならない。 は、 の場合のみゼロになる。ゼロベクトル。
もしは標準基底ベクトルですそうすれば、次のように書ける ベクトルこれらは正規直交基底であり、単位長を持ち、互いに直角であることを意味します。これらのベクトルは単位長を持つため、 そして、それらは互いに直角を形成しているので、、 したがって、一般的に言えば、次のことが言える。 どこはクロネッカーデルタです。

また、幾何学的定義により、任意のベクトルに対してそしてベクトル我々は、 どこベクトルの成分ですの方向に等式の最後のステップは図から確認できます。
ここで、内積の幾何バージョンの分配法則を適用すると、 これはまさに内積の代数的定義です。したがって、幾何内積は代数内積と等しくなります。
ドット積は、以下の性質を満たします。、、そしては実ベクトルであり、、、そしてスカラーです。[ 2 ] [ 3 ]

2つのベクトルが与えられた場合そして角度で区切られた(上の画像を参照)それらは3辺目を持つ三角形を形成する。 させて、そして長さを表す、、 そしてそれぞれ。それ自身を含むと次のようになります。 これは余弦定理です。
内積と外積を含む 2 つの三項演算があります。
3つのベクトルのスカラー三重積は次のように定義さ れる。 その値は、3つのベクトルのデカルト座標を列とする行列の行列式です。それは、3つのベクトルによって定義される平行六面体の符号付き体積であり、 3つのベクトルの外積の3次元特殊ケースと同型です。
ベクトル三重積は[ 2 ] [ 3 ]で定義される。 この公式はラグランジュの公式としても知られており、どのベクトルがドットで結ばれているかを覚えておけば、「ACBマイナスABC」と覚えておくと良いでしょう。この公式は、物理学におけるベクトル計算を簡略化する際に応用されます。
物理学では、ドット積は2つのベクトルを受け取り、スカラー量を返します。これは「スカラー積」とも呼ばれます。2つのベクトルのドット積は、2つのベクトルの大きさと2つのベクトル間の角度のコサインの積として定義できます。したがって、あるいは、それは最初のベクトルを2番目のベクトルに射影したものと、2番目のベクトルの大きさの積として定義される。
複素数成分を持つベクトルの場合、与えられた内積の定義を用いると、全く異なる性質が生じる。例えば、ベクトルとそれ自身との内積は、そのベクトルが零ベクトルでなくてもゼロになる可能性がある(例えば、ベクトルの場合)。これは、長さや角度といった概念にも影響を及ぼすだろう。正定値ノルムなどの特性は、代替定義[ 12 ] [ 2 ]によって、ドット積の対称性と双線形性を放棄する代償を払って救済することができる。 どこは、ベクトルが列ベクトルで表される場合、内積は共役転置を含む行列積として表すことができ、上付き文字Hで示される。
実数成分を持つベクトルの場合、この定義は実数の場合と同じです。任意のベクトルとそれ自身との内積は非負の実数であり、ゼロベクトルを除いてゼロではありません。ただし、複素内積は双線形ではなく半双線形です。これは、共役線形であって線形ではないためです。ドット積は対称ではない。 2つの複素ベクトル間の角度は次のように表される。
複素内積は、エルミート形式や一般内積空間の概念につながり、これらは数学や物理学で広く用いられている。
複素ベクトルの自己ドット積行ベクトルの共役転置を含む、ノルムの二乗としても知られています。ユークリッドノルムに次ぐもので、複素スカラーの絶対値の二乗のベクトル一般化です(参照:二乗ユークリッド距離)。
内積はドット積をスカラー体上の抽象ベクトル空間に一般化したもので、スカラー体は実数体である。または複素数体通常は山括弧を使用して次のように表されます。。
複素数体上の2つのベクトルの内積は、一般に複素数であり、双線形ではなく半双線形です。内積空間はノルム付きベクトル空間であり、ベクトルとそれ自身との内積は実数かつ正定値です。
ドット積は、有限個のエントリを持つベクトルに対して定義されます。したがって、これらのベクトルは離散関数とみなすことができます。長さ-ベクターは、定義域を持つ関数である。、 そしては、関数/ベクトルによって。
この概念は二乗可積分関数にも一般化できる。ベクトルの内積が対応する成分の和を用いるのと同様に、関数の内積はある測度空間上の積分として定義される。: [ 2 ]
例えば、そしてコンパクト部分集合上の連続関数であるの標準ルベーグ測度を用いると、上記の定義は次のようになる。
さらに、複雑な連続関数に一般化する。そして上記の複素内積との類推により、以下が得られる。
内積には重み関数(つまり、内積の各項に値を割り当てる関数)を持つことができます。具体的には、関数の内積はそして重み関数に関しては
行列の二重ドット積はフロベニウス内積であり、これはベクトルのドット積に類似しています。これは、2つの行列の対応する成分の積の和として定義されます。そして同じサイズのもの: :\mathbf {B} =\sum _{i}\sum _{j}A_{ij}{\overline {B_{ij}}}=\operatorname {tr} (\mathbf {B} ^{\mathsf {H}}\mathbf {A} )=\operatorname {tr} (\mathbf {A} \mathbf {B} ^{\mathsf {H}}).} また、実数行列の場合、 :\mathbf {B} =\sum _{i}\sum _{j}A_{ij}B_{ij}=\operatorname {tr} (\mathbf {B} ^{\mathsf {T}}\mathbf {A} )=\operatorname {tr} (\mathbf {A} \mathbf {B} ^{\mathsf {T}})=\operatorname {tr} (\mathbf {A} ^{\mathsf {T}}\mathbf {B} )=\operatorname {tr} (\mathbf {B} \mathbf {A} ^{\mathsf {T}}).}
行列をダイアディックとして記述すると、異なる二重ドット積を定義できます(ダイアディック§ ダイアディックとダイアディックの積を参照)。ただし、これは内積ではありません。
次数テンソル間の(単一)ドット積そして次数 のテンソルは次数 のテンソルです(より一般的には、各ドットは次数を2減らします。)詳細はテンソル縮約を参照してください。
ベクトルの浮動小数点内積を計算する単純なアルゴリズムでは、致命的な打ち消しが発生する可能性がある。これを回避するため、カハン和アルゴリズムなどの手法が用いられる。
ドット積関数は以下に含まれる:
SDOT、DDOT複素数CDOTU、、、ZDOTU = X^T * YCDOTCZDOTC = X^H * Ydot_product(A,B)またはsum(conjg(A) * B)A' * Bdot(A, B)sum(A * B)、ベクトルの場合、またはより一般的には行列の場合、A %*% BA' * B conj(transpose(A)) * B sum(conj(A) .* B) dot(A, B)np.dot(A, B) np.inner(A, B)sum(conj(X) .* Y, dim)dot = sub(x)'*sub(y); 複素数 p?dotcdotc = conjg(sub(x)')*sub(y)