指数関数などの値を級数展開で求めるときの誤差の見積もり
指数関数などの値を級数展開で求めるときの誤差の見積もり。
まず指数関数。
- ex = x0/0! + x1/1! + x2/2! + x3/3! + …
簡単のため x の絶対値は 1 以下とする。この公式で ex の値を小数第 n 位まで求めるとき、級数の第 m 項まで計算する必要がある、とすると、おおよそ m! ≒ 10n という関係が成り立つ。スターリングの近似公式 ln(m!) ≒ m ln m - m より、 m ln m - m ≒ n ln10。これを m について解くと……って、解けねぇよ! orz
しょうがないのでもう少し妥協する。n が十分大きいとき n! > 10n なので、n 項目まで級数を計算すれば十分である。級数を一項計算するごとに最大 1 ulp (= 10-n) の誤差が出るので、最終的な誤差の絶対値は n ulp 以下である。よって、本来必要な桁数よりも log10n + 1 桁多めに計算すれば、必要な精度を確保できる。
指数関数と同じ形式の級数を使っている正弦関数や余弦関数も指数関数と同じように誤差を見積もることができる。
続いて逆双曲線正接関数。
- tanh-1(x) = x1/1 + x3/3 + x5/5 + x7/7 + …
ただし x の絶対値は非常に小さいものとする。この公式で tanh-1(x) の値を小数第 n 位まで求めるとき、級数の第 m 項まで計算する必要がある、とすると、おおよそ x2m ≒ 10-n という関係が成り立つ。これを m について解くと、m ≒ -n / (2 log10|x|) を得る。指数関数と同様に考えて、log10(-n / (2 log10|x|)) + 1 桁多めに計算すればいいことがわかる。
| 固定リンク

コメント