[STATUS: ONLINE] 当サイトは要約付きのエンジニア向けFeedです。

TechDistill.dev

[DISCLAIMER] 当サイトの要約は正確性を保証しません。気になる記事は必ず原文を確認してください。
cd ..

【要約】単振動の状微分方程式をオイラー法で実装してみた [Zenn_Python] | Summary by TechDistill

> Source: Zenn_Python
Execute Primary Source

// Problem

物理現象をコンピュータ上でシミュレーションする際、連続的な微分方程式を離散的な計算に変換するプロセスが必要となる。筆者は、単振動のモデルを数値的に扱うにあたり、以下の課題を想定している。


  • 微分方程式を直接計算機で扱うことは不可能である。
  • 時間刻み幅 Δt を用いた離散化のプロセスが不可欠である。
  • 近似手法の選択が、計算精度や物理的整合性に決定的な影響を与える。

// Approach

筆者は、単振動の運動方程式を1階の連立微分方程式へと変形し、陽的オイラー法による離散化を試みた。具体的な手順は以下の通りである。


  • 速度 v を導入し、2階微分を1階微分の連立系に書き換える。
  • 前進差分を用いて、時刻 t_i の値から t_{i+1} の値を求める漸化式を導出する。
  • PythonのNumPyとMatplotlibを用い、理論解との比較を行う。
  • 時間刻み幅 dtime = 0.005 を設定し、数値計算を実行する。

// Result

数値計算の結果、位置と速度の挙動は理論解と概ね一致したが、エネルギー保存の観点では課題が残った。


  • 位置・速度のグラフ:理論曲線と数値解が視覚的に一致することを確認した。
  • エネルギーのグラフ:理論値は一定だが、数値解は時間経過とともに増大した。
  • 誤差の蓄積:オイラー法特有の数値誤差が各ステップで蓄積し、エネルギーが発散する挙動が示された。

Senior Engineer Insight

> 陽的オイラー法は実装が極めて容易である。しかし、エネルギーが発散する不安定性は、厳密な物理シミュレーションにおいては致命的だ。実務で物理演算を扱う場合は、エネルギー保存性に優れたシンプレクティック積分法や、高精度なルンゲ=クッタ法を選択すべきである。計算コストと精度のトレードオフを常に意識せよ。

[ RELATED_KERNELS_DETECTED ]

cd ..

> System.About()

TechDistillは、膨大な技術記事から情報の真髄(Kernel)のみを抽出・提示します。