R.A. Epigonos et al.

[perl] 丸め込み誤差、コーシー判定で発散することが自明の数列も計算精度で収束する

もちろんコーシー判定の結果が正しいのである。しかし、16桁の精度しか出ないので収束してしまう。例えば、一般項が1/iの数列(a_i=1/i)の無限級数はコーシー判定より正の無限大に発散する。ただし、第n部分和をコンピュータで単純にn回足し算を行って求めるとおかしなことが起こる。次の状態を考える。i=10^{16}=>a_i=10^{-16}このとき第n部分和の正確な値はわからない、しかし、少なくとも1以上の値である。なぜなら、数列の初項が1であり、各項は正の値のみを取るから。第10^{16}-1部分和で取られるであろう最大の精度はコンピュータの計算精度と同じ16桁、言い換えれば、小数点以下15桁目までが出力される。これに第10^{16}項目が足されるわけだが、第10^{16}項目は小数点以下16桁目に始めて0で無い数字が現れる。したがって、足し算しても第10^{16}部分和に影響を及ぼさない。したがって第10^{16}部分和と第10^{16}-1部分和は等しいとして出力される。ゆえに、第10^{16}-1部分和以降の部分和はいつまでたっても第10^{16}-1部分和と同じ値となる。したがってコンピューターで第n部分和を計算させるとその値は収束してしまう。

  | 1/3                   => 0.333333333333333
+ | 1/10^{16}             => 0.0000000000000001
  +---------------------------------------------
    (3+10^{16})/3*10^{16} => 0.333333333333333
> perl -wle "while(1){$S+=(++$i)**-1; print join qq#\t#,($i,$S,log($i),(times)[0]) if $i%10**6==0;}"
1000000 14.392726722865 13.8155105579643        6.15
2000000 15.085873653425 14.5086577385242        15.71
3000000 15.4913386781999        14.9141228466324        22.03
4000000 15.7790207089847        15.2018049190842        29.99
5000000 16.0021642352986        15.4249484703984        38.61
6000000 16.1844857754261        15.6072700271923        47.13
7000000 16.3386364433484        15.7614207070196        57.12
8000000 16.4721678270444        15.8949520996441        68.71
9000000 16.5899508557555        16.0127351353005        75.36
10000000        16.6953113658573        16.1180956509583        85.74
11000000        16.7906215411161        16.2134058307626        93.43
12000000        16.8776329143183        16.3004172077523        103.64
13000000        16.9576756187865        16.3804599154258        111.61
14000000        17.0317835881946        16.4545678875795        119.02
15000000        17.1007764573005        16.5235607590665        127.15
16000000        17.1653149763541        16.5880992802041        139.46
17000000        17.2259395963306        16.6487239020205        147.09
18000000        17.2830980085365        16.7058823158604        152.8
19000000        17.3371652283451        16.7599495371307        161.87
20000000        17.3884585214171        16.8112428315183        167.8
Terminating on signal SIGINT(2)
>

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2007-09-05T07:08:26+09:00
  2. Modified: 2007-09-05T04:08:35+09:00
  3. Generated: 2024-11-18T23:09:11+09:00