おさらい
総和
let result = 0
for (let i = 0; i < 10; i++) {
result += i
}
console.log(result) // 45プログラミングにおける総和は for 文でループさせて合計値を求めるものもあれば、最近ではイテレータの集約メソッドとして用意されていることもある。数学や素朴な実装では左結合で足し合わされていくが、効率化のためのパイプライン処理というインチキを働くと計算順序がでたらめになり、結果としてオーバーフローが発生することがある。
実ベクトル
1.1によれば、実ベクトルとは 個の実数 を縦に並べたものであり、実数体 上の 次元数ベクトルとも呼ぶ。高校数学までは高々2次元または3次元までしか扱わないが、大学以上の数学では次元数を考えないことが多いようだ。
プログラミングではベクトルではなくベクタと呼ぶことが多い。実装やメモリマップと同じかどうかの差異はあれど、配列、リストやリンクトリストもベクトル同様に値を保持できるようになっている。しばしば可変長で任意の型を混在させて扱うことができるといった数学にはない特徴も見られる。
実数体
実数の集合は で表現する。プログラミング言語では double や f64 と表現される。実数には整数とは違ったいくつかの性質があり、面白いところでは隣の数がないというものがある。これは がいくらでも求まることからも直感的にわかりやすい。
数学では = 演算子は反射律を満たすが、IEEE 754では NaN の存在により反射律を満たさない。NaN NaN であるためRustでは Eq トレイトは付いておらず、PartialEq トレイトとなる。JavaScriptで isNaN() または Number.isNaN() で判定すべき理由にもなっている。
同じベクトルの内積
複素共役は に対して のこと。
であるから、
となり、これは非負の実数である。すなわちノルム も計算可能となる。
ノルムの意味するところは 次元に拡張された直線距離であり、理解のために2次元ベクトル
を考えてみる。原点 から 軸方向に4進んだ点を指すベクトルが であり、そこから 軸方向に3進んだベクトルが である。 と の直線距離(ユークリッド距離)は三平方の定理で学んだように5だが、 も同様に5である。
プログラミングではベクトルの内積が dot_product() のような名前で提供されることが多い。