Skip to content

nls-coding/numerical_programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

数値計算・データ解析演習レポート集

このリポジトリは、大学の数値計算・データ解析演習課題(課題1〜4)を Google Colab 上で実装した成果をまとめたものです。
Python 3.10 を用いて、数値計算アルゴリズム・統計解析・シミュレーションを実装し、可視化・誤差評価などを行いました。


🔹 課題一覧

  • 課題1 基礎的な数値計算・関数実装・フーリエ級数
  • 課題2 確率・データ処理・統計推定
  • 課題3 数値解析(方程式解法・積分・微分方程式・3体問題)
  • 課題4 乱数・モンテカルロ・ランダムウォーク・物理シミュレーション

実行環境(Colab)

各ノートブックは Google Colab で実行可能です。


課題1

基礎的な数値計算課題。Python の基本操作と数値計算の考え方を実装。

内容

  • 挨拶文の出力print() の基礎
  • 古墳の面積計算:円+台形を組み合わせた図形の面積を計算、小数第2位まで整形出力
  • 二次方程式の解:判別式に基づき、解なし/重解/一次方程式の退化ケースまで実装
  • 正規分布関数の定義と積分:標準正規分布を自作関数で定義し、数値積分により面積=1を確認
  • 無限級数による円周率近似$$\sum_{r=1}^{\infty} \frac{1}{r^2} = \frac{\pi^2}{6} を用いて π の近似を行い、誤差評価を可視化$$
  • フーリエ級数による矩形波近似:N=1,3,5,10,25,50 で収束の様子を比較

学び

  • 数値誤差・収束判定の実装を経験
  • フーリエ級数や無限級数の収束を「グラフで体感」できた

課題2

確率・データ処理・統計推定に関する課題。

内容

  • サイコロの期待値:公平/いかさまサイコロの期待値を計算
  • 二項分布:10回試行で奇数が2回出る確率、期待値と分散を算出
  • データ処理
    • 与えられた 50 個のデータ列 X, Y の平均・標準偏差
    • 相関係数の計算
    • 散布図+回帰直線の可視化(scikit-learn 使用)
  • ポアソン分布:平均5の分布の確率分布関数を計算し、棒グラフ表示
  • 信頼区間:反応数1000の99%信頼区間を推定
  • 放射線源の測定データ分析
    • 100回の測定結果から平均・不偏分散を推定
    • 検出効率15%を考慮して強度 I の95%信頼区間を算出
    • 別放射線源の「0個検出」ケースから強度の上限値を推定

学び

  • 統計的推定(信頼区間)の理解を実装で補強
  • データ可視化+回帰直線による「データ解析の実務的フロー」を経験

課題3

数値解析アルゴリズムの実装。

内容

  • 方程式解法(二分法):(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体問題で「カオス的挙動」を体験

課題4

乱数生成・モンテカルロ法・シミュレーションをテーマにした課題。

内容

  • 正規分布乱数の生成
    • np.random.randn() と Box–Muller 法を比較
    • 生成結果のヒストグラム+相関係数で検証
  • モンテカルロ積分:単位球体積を乱数点打ちで推定し、N による収束を可視化
  • 2D ランダムウォーク:斜め移動を仮定し、1000ステップの軌跡を色分け表示
  • 宇宙線ミューオンの角度分布
    • $$\cos^2\theta 分布に従う乱数を$$
    rejection sampling で生成
    • 2 段検出器を用いた「透過判定」による検出率シミュレーション
    • L と検出率/最大角度のトレードオフを可視化

学び

  • Box–Muller 法や rejection sampling を実装し、乱数生成の仕組みを理解
  • 物理的実験系(ミューオン検出)を模したシミュレーションで「実データ解析に近い流れ」を経験

環境

  • Google Colaboratory
  • Python 3.10
  • 主なライブラリ
    • numpy
    • scipy
    • matplotlib
    • pandas
    • scikit-learn

総括

  • 課題1〜4を通じて
    • 方程式・積分・微分方程式・線形代数・フーリエ級数といった基礎数値計算を実装
    • 統計推定やシミュレーションを通じ、データ解析スキルを実践的に習得
  • 工夫点
    • 可視化を重視し「数値の意味」を体感できるようにした
    • 誤差評価や収束確認など、実務的な視点を意識
  • 今後の応用
    • 本演習で学んだ数値計算の基礎を、API開発・データ解析・MLOps 実務へ展開していきたい

About

大学で受講した数値計算についてまとめたものです。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published