数値計算

Python

Pythonで攻略する流体力学の数値計算 第4回:粘性流体とナビエ・ストークス方程式

こんにちは、JS2IIUです。。Pythonで攻略する流体力学シミュレーション連載の第4回です。前回は、摩擦のない理想的な「完全流体」を扱い、オイラーの運動方程式やポテンシャル流れの美しさを学びました。しかし、最後に触れた「ダランベールのパラドックス」が示す通り、理想化しすぎたモデルでは現実の空気抵...
Python

Pythonで攻略する流体力学の数値計算 第3回:理想流体の世界 ― オイラー方程式とポテンシャル流

こんにちは、JS2IIUです。Pythonで流体シミュレーションを攻略する連載の第3回です。第1回では質量の保存(連続の式)を、第2回では運動量とエネルギーの保存を学びました。これらはいわば流体の「憲法」であり、あらゆる流体現象が従わなければならない絶対的なルールです。しかし、現実の流体は非常に複雑...
Python

Pythonで攻略する流体力学の数値計算 第2回:流体の記述と保存則(2) ― 運動量とエネルギーの保存

こんにちは、JS2IIUです。前回の第1回では、流体力学の最も基本的なルールである「質量保存則」と、それを数式化した「連続の式」について学びました。流体がいかに形を変えようとも、その質量が勝手に消えたり増えたりすることはない、という当たり前ながらも強力な制約を、コントロールボリューム(固定された領域...
Python

Pythonで攻略する流体力学の数値計算 第1回:流体の記述と保存則(1) ― 質量保存と連続の式

こんにちは、JS2IIUです。プログラミングと物理シミュレーションの世界へようこそ。本連載では、Pythonを武器に、複雑で美しい流体の動きを解き明かす「数値流体力学(CFD: Computational Fluid Dynamics)」の世界を覗いてみます。近年、AI技術、特にディープラーニングの...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第13回:空間の熱と振動を解く:偏微分方程式の差分近似と反復解法

こんにちは、JS2IIUです。全13回にわたる「Pythonで学ぶ数値計算のアルゴリズムと実装」の連載も、ついに最終回を迎えました。第1回で多項式計算の基礎から始まり、積分、線形代数、非線形方程式、そして前回の常微分方程式(ODE)へと進んできた私たちの旅は、最も応用範囲が広く、かつ計算負荷の高い「...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第12回:現象の変化を追う:ルンゲ・クッタ法による常微分方程式の解法

こんにちは、JS2IIUです。数値計算連載の第12回となる今回は、シミュレーション技術の核心であり、現代のAI技術、特に「Neural ODE(神経常微分方程式)」などの基盤ともなっている「常微分方程式(Ordinary Differential Equations, ODE)」の数値解法を扱います...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第11回:行列の本質を捉える:固有値問題の数値解法

こんにちは、JS2IIUです。数値計算連載の第11回目となる今回は、線形代数の華とも言える「固有値問題(Eigenvalue Problem)」の数値解法に焦点を当てます。機械学習を学ぶ中で「主成分分析(PCA)」や「スペクトラルクラスタリング」、あるいは「GoogleのPageRankアルゴリズム...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第10回:非線形方程式の探索:2分法からニュートン法まで

こんにちは、JS2IIUです。数値計算連載の第10回目となる今回は、これまでの「線形(まっすぐ)」な世界から一歩踏み出し、より複雑な「非線形(曲がった)」な方程式を解くアルゴリズムを探求します。これまでの回では \(Ax = b\) のような連立一次方程式を扱ってきましたが、現実の科学やエンジニアリ...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第9回:最小二乗法とQR分解:ハウスホルダー変換による安定化

こんにちは、JS2IIUです。数値計算連載の第9回となる今回は、機械学習や統計学のバックボーンとも言える「最小二乗法」を取り上げます。私たちはこれまで、連立一次方程式 \(Ax = b\) を解く方法を学んできました。しかし、現実のデータ分析では、未知数の数よりも観測データの数の方が圧倒的に多い、い...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第8回:スパース性を活かす:帯行列の高速計算アルゴリズム

こんにちは、JS2IIUです。数値計算の連載も後半戦に入りました。前回までの記事では、密行列(要素のほとんどが0ではない行列)を対象としたLU分解やコレスキー分解を扱ってきました。これらは非常に汎用性が高い手法ですが、計算量が \(O(n^3)\) であり、行列のサイズ \(n\) が大きくなると計...