行列式を実装してみる #50
自然科学者のための数学とプログラミング概論 ~ Rikemen&Rikejo ~
0:00 / 0:00
行列式を実装してみる #50
52 просмотра · 12 дней назад
自然科学者のための数学とプログラミング概論 ~ Rikemen&Rikejo ~
160 подписчиков
52 просмотра · 12 дней назад
前回 (#49) で「行列式とは何か?」を直感的に理解した続きです。今回はいよいよ **行列式を自分でコードに実装します**。
実装アルゴリズムとして「**余因子展開(Laplace Expansion)**」を使います。
単にコードを書くだけでなく、なぜこのアルゴリズムを選ぶのか?という理由から、数学の定義式がプログラムとどう一致するのかを丁寧に解説しながら進めます。
最大の見どころは、**再帰(Recursion)** の使い方です。
数学における余因子展開の「次元を一つ落とす」という操作が、プログラムの「自分自身を呼び出す」という再帰の構造とそのまま対応することを、ライブコーディングを通じて体験できます。
【今回の実装ステップ】
Step 1:メソッドの骨格と正方行列チェック(数学のルールをコードで表現する)
Step 2:ベースケースの実装(1x1 と 2x2 → 再帰の「終着点」)
Step 3:小行列を取り出す `getSubMatrix()` の実装
Step 4:余因子展開ループ → 再帰呼び出しで完成
【見どころ】
・数式 `det(A) = Σ (-1)^(1+j) · a_1j · det(M_1j)` がコードの `for` ループと `subMatrix.determinant()` に *1対1で対応する* 瞬間
・3x3 行列の計算を例に、コードがどの順番で実行されるかをステップごとに追跡
・4x4 になると再帰が「4x4 → 3x3 → 2x2」と3段階の入れ子になる仕組みの解説
Rikemen Ch.では、数学を公式として覚えるだけでなく、
*「数学とプログラミングの構造が一致する美しい瞬間」* を一緒に体験することを大切にしています。
#数学 #線形代数 #行列式 #余因子展開 #再帰 #JavaScript #大学数学 #Rikemen #LinearAlgebra