数値計算の手順
何かを計算して解析しようとしたときに,計算結果を得る必要があります.
そのとき,代数的に解いて解析解を得る方法と,数値計算によって数値解を得る方法の2つがあります.
数式を作ってから代数的に解いて解析解を得ることができれば一番楽です.
しかしながら,数式が複雑すぎで代数的に解けない場合や,制約条件が多くて代数的に解けない場合があります.
そういうときは,プログラムを用いた数値計算で数値解を得るしかありません.
ここでは,そのときの手順について簡単にまとめます.
- モデルを作成する
どういった条件の問題を解きたいのかを想定し,モデル化を行います.
物理現象であれば,どこまでの影響を考慮するのかを決定し,それらの変数として設定してモデルを作成します.
例えば,鉄球を投射して,その軌道を計算する場合,投射する角度や速度,重力加速度を変数として採用すると思います.
それ以外に,空気抵抗を考慮するか,コリオリ力を考慮するか,といった点を検討します.
基本的には,知りたい現象に対して影響力が大きい項目から考慮していくことになります.
他には,自分が必要とする計算精度を達成できるかどうか,といった点も考慮します.
- 数式を作成する
作成したモデルが持つ変数を用いて数式を作成します.
基本的な話ですが,未知数と同数の数式が無いと問題が解けません.
- 数式をプログラム用に書き換える
プログラムで計算する場合には,離散的な計算になります.
その書き換えを行うには,数値計算のテクニックを知っておく必要があります.
例えば,積分操作はそのままでは実行できないので,区分求積法を使って積分を総和に書き換えたりします.
同様に,微分操作もそのままでは実行できないので,2点間の傾きを直接計算する方法に書き換えたりします.
何らかの解を求めるときには,二分法や挟み撃ち法を採用することになります.
この段階については,数値計算に関する書籍が活用できると思います.
- プログラムを書く
実際に何らかのプログラミング言語のプログラムとして書きます.
バグが発生して大体動かないので,書きながら途中の計算結果を確認して,動作確認と計算結果の妥当性確認を行うのが良いです.
計算結果がおかしいときは,モデルがおかしいか,数式がおかしいか,プログラムに書き換えたのがおかしいか,プログラミング言語の仕様が原因か,のどれかです.
プログラミング言語の仕様が原因のときは,インターネット上で色々検索すれば何とかなります.
- 計算結果を確認する
実測値と比較するか,理論解と比較するか,変数を変更したときの数値解の挙動を確認することで,計算結果の妥当性を評価します.
- 計算結果から考察する
モデル化対象の現象と計算結果を比較したり,変数の値を変更した計算結果を使ってたりして,考察を行います.
計算結果には,モデル化したときに考慮した変数以外の影響は含まれていません.
そのため,モデル化したときに考慮した変数で,どのくらいの妥当性が確保できるのか,また,モデル化したときに考慮した変数以外の影響がどのくらいあるのか,などが評価できます.
上記内容と直接関係はないのですが,勉強になることが書いてあるサイトがあったので,リンクを貼っておきます.
現象解析と数値シミュレーション,情報機構
戻る