数値計算

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\) が大きくなると計...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第7回:行列分解の活用:LU分解とコレスキー分解

こんにちは、JS2IIUです。前回の第6回では、連立一次方程式を解くための最も基本的な手法である「ガウス消去法」を学びました。ガウス消去法は非常に強力ですが、一つの大きな弱点があります。それは、係数行列 \(A\) は同じままで、右辺のベクトル \(b\) だけが次々と変わるような状況において、毎回...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第6回:連立一次方程式の直截解法:ガウス消去法とピボット選択

こんにちは、JS2IIUです。数値計算の連載も中盤に差し掛かりました。第5回では、行列の「健康状態」を測るバロメーターである条件数について学び、数値計算がいかに誤差の影響を受けやすいかを理解しました。今回からは、いよいよその行列を用いて「連立一次方程式 \(Ax = b\) を解く」という、数値計算...