FGALEL 2 誤差の話 桁落ちや丸め、情報落ちなどと言う言葉は、遠い遠い昔に聞いたことがある ような・・・ 打切り、というのもあったような・・・ 次のような式の値を計算するプログラムを作ろうとしました。               a^n              −−−−−                n!  −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−       a    a^2   a^3         a^n   1 + −−− + −−− + −−− + ・・・ + −−−        1!    2!    3!          n!  (aは正の実数) で、素直に次のようなプログラムにしてみました。 long double a,項,分母; a と n の入力; 項 = 1;分母 = 1; for(i=1;i<=n;i++){ 項 = 項 * a / i; 分母 = 分母 + 項; } printf("%Lf",項 / 分母); ところが、これだと n が大きくなるとどうしても誤差が大きくなってしまい ます。 何か、誤差の大きくならない、できれば演算速度の速くなるうまい方法はない でしょうか? 昔、円周率の計算の演習で、多倍長計算なんてのをやりましたが、そんなに桁 数はいりませんから(せいぜい、小数点以下20桁)演算精度がもっと高くな るアルゴリズムなり、数式の変形のしかたなど教えていただけるとありがたい です。 としき