basicホームQiitaブログ雑記ブログリンク集お問い合わせ数値計算の基本について数値計算を行う上での基本的な注意事項等についてまとめていきます。近い数値同士の減算を行ったり、加算の数値が極めて0に近くなる際に発生。有効桁数が小さくなってしまいます。極端に桁数の異なる数値同士の加算、減算を行う際に発生。有効桁数によって桁数の小さい数字が計算に反映されなくなります。有効桁数の大きい数値を、四捨五入や切り捨て、切り上げ等で、有効桁数に丸める際に発生。循環小数や無理数等、無限に続く数値(2進数において無限に続く数値)を有限桁数で打ち切る際に発生。陽解法オイラーの丸め誤差の影響をKahanのアルゴリズムで抑えることを考えます。行う上で計算刻みは重要です。精度を求めるためには計算刻みを細かくしたいところですが、刻みすぎると計算コストが高くなってしまいます。一方で計算速度を上げようと、刻みを粗くしていけば採用する計算手法によっては発散してしまう可能性があります。良いバランスを探す必要がありますが、いくつか目安となる条件があります。以下では陽解法Euler、4次のRunge-Kutta法の安定条件についてまとめます。陽解法Eulerでの計算刻み(Δt)の限界は、系の最小時定数をτminとすると、以下の形で表されます。t$$例えば、以下の二階微分方程式を陽解法Eulerで求め、発散するΔtの条件を調べてみます。$$\frac{d^2y}{dt^2}+7\frac{dy}{dt}+6y=0$$ただし、初期条件をy(0)=2,y'(0)=-7とします。上式の時定数は、τ=1、1/6となります。よって、τmin=1/6となりますので、安定条件はΔt≧2*1/6=1/3となります。Δt=1/3前後の時間挙動を見てみます。計算刻みを1/3よりも大きい数値(0.34)にした途端、計算が発散していっていることが確認できます。Stepの限界値を超えても問題ありません。実は4次のRunge-Kuttaであっても、安定限界の条件があります。2007・また、右のリンクにもう少し詳細な計算を載せています。当サイトに不具合、ご意見等ございましたらCEsolutionにお知らせください。