このリポジトリは、大学の数値計算・データ解析演習課題(課題1〜4)を Google Colab 上で実装した成果をまとめたものです。
Python 3.10 を用いて、数値計算アルゴリズム・統計解析・シミュレーションを実装し、可視化・誤差評価などを行いました。
- 課題1 基礎的な数値計算・関数実装・フーリエ級数
- 課題2 確率・データ処理・統計推定
- 課題3 数値解析(方程式解法・積分・微分方程式・3体問題)
- 課題4 乱数・モンテカルロ・ランダムウォーク・物理シミュレーション
各ノートブックは Google Colab で実行可能です。
基礎的な数値計算課題。Python の基本操作と数値計算の考え方を実装。
- 挨拶文の出力:
print()
の基礎 - 古墳の面積計算:円+台形を組み合わせた図形の面積を計算、小数第2位まで整形出力
- 二次方程式の解:判別式に基づき、解なし/重解/一次方程式の退化ケースまで実装
- 正規分布関数の定義と積分:標準正規分布を自作関数で定義し、数値積分により面積=1を確認
- 無限級数による円周率近似:
$$\sum_{r=1}^{\infty} \frac{1}{r^2} = \frac{\pi^2}{6} を用いて π の近似を行い、誤差評価を可視化$$ - フーリエ級数による矩形波近似:N=1,3,5,10,25,50 で収束の様子を比較
- 数値誤差・収束判定の実装を経験
- フーリエ級数や無限級数の収束を「グラフで体感」できた
確率・データ処理・統計推定に関する課題。
- サイコロの期待値:公平/いかさまサイコロの期待値を計算
- 二項分布:10回試行で奇数が2回出る確率、期待値と分散を算出
- データ処理:
- 与えられた 50 個のデータ列 X, Y の平均・標準偏差
- 相関係数の計算
- 散布図+回帰直線の可視化(
scikit-learn
使用)
- ポアソン分布:平均5の分布の確率分布関数を計算し、棒グラフ表示
- 信頼区間:反応数1000の99%信頼区間を推定
- 放射線源の測定データ分析:
- 100回の測定結果から平均・不偏分散を推定
- 検出効率15%を考慮して強度 I の95%信頼区間を算出
- 別放射線源の「0個検出」ケースから強度の上限値を推定
- 統計的推定(信頼区間)の理解を実装で補強
- データ可視化+回帰直線による「データ解析の実務的フロー」を経験
数値解析アルゴリズムの実装。
- 方程式解法(二分法):(x^x=5) の近似解を収束判定付きで算出
- 数値積分(台形法):
$$I = \int_0^1 \sqrt{1-x^2}\,dx を台形法で求め、解析解 \(\pi/4\) と比較$$ - 減衰振動(常微分方程式):
$$\frac{d^2x}{dt^2} = -kx -2\gamma\frac{dx}{dt} を Euler 法で数値解、時間発展を可視化$$ - 連立方程式の解法:5変数5方程式をガウス消去法で解く
- 3体問題シミュレーション:
- ルンゲクッタ法(RK4)で時間発展
- 質点3つの軌跡をアニメーション表示
- (オマケ)二重振り子:非線形系のラグランジアン記述から数値解法に挑戦
- 数値積分や ODE 解法を「手実装」することでアルゴリズム理解を強化
- 3体問題で「カオス的挙動」を体験
乱数生成・モンテカルロ法・シミュレーションをテーマにした課題。
- 正規分布乱数の生成:
np.random.randn()
と Box–Muller 法を比較- 生成結果のヒストグラム+相関係数で検証
- モンテカルロ積分:単位球体積を乱数点打ちで推定し、N による収束を可視化
- 2D ランダムウォーク:斜め移動を仮定し、1000ステップの軌跡を色分け表示
- 宇宙線ミューオンの角度分布:
-
$$\cos^2\theta 分布に従う乱数を$$
- 2 段検出器を用いた「透過判定」による検出率シミュレーション
- L と検出率/最大角度のトレードオフを可視化
-
- Box–Muller 法や rejection sampling を実装し、乱数生成の仕組みを理解
- 物理的実験系(ミューオン検出)を模したシミュレーションで「実データ解析に近い流れ」を経験
- Google Colaboratory
- Python 3.10
- 主なライブラリ
numpy
scipy
matplotlib
pandas
scikit-learn
- 課題1〜4を通じて:
- 方程式・積分・微分方程式・線形代数・フーリエ級数といった基礎数値計算を実装
- 統計推定やシミュレーションを通じ、データ解析スキルを実践的に習得
- 工夫点:
- 可視化を重視し「数値の意味」を体感できるようにした
- 誤差評価や収束確認など、実務的な視点を意識
- 今後の応用:
- 本演習で学んだ数値計算の基礎を、API開発・データ解析・MLOps 実務へ展開していきたい