Python

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\) を解く」という、数値計算...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第5回:計算の「正しさ」を評価する:ノルムと条件数

こんにちは、JS2IIUです。連載の前半では、関数の近似や数値積分といった、主に解析学的なアプローチによる数値計算を学んできました。第5回となる今回からは、数値計算のもう一つの巨大な柱である「線形代数」の領域へと足を踏み入れていきます。機械学習やディープラーニングの世界において、行列やベクトルの演算...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第4回:高度な数値積分:二重指数型(DE)公式と広義積分

こんにちは、JS2IIUです。前回の第3回では、数値積分の基本である中点則、台形則、そしてシンプソン則について学びました。これらは「関数が十分に滑らかで、有限の範囲で定義されている」場合には非常に強力な手法です。しかし、実世界のデータ解析や物理シミュレーション、あるいは統計モデルの計算においては、標...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第3回:積分の基礎:中点則、台形則からシンプソン則まで

こんにちは、JS2IIUです。連載の第1回、第2回を通して、私たちは多項式を用いた関数の近似や、離散的な点から未知の値を推定する補間技術について学んできました。第3回となる今回は、これらの知識を応用して、数値計算の大きな柱の一つである「数値積分(Numerical Integration)」に挑戦し...
Python

Pythonで学ぶ数値計算のアルゴリズムと実装 第2回:多項式補間とチェビシェフ補間の戦略

こんにちは、JS2IIUです。前回の記事では、既知の複雑な関数を扱いやすい多項式に変換する「テイラー展開」について学びました。しかし、実世界のデータ解析やAI開発においては、元となる関数の形が最初から分かっていることは稀です。多くの場合、私たちが手にしているのは「いくつかの離散的な観測データ(点)」...