色々試してみたところ、
① sqrt(n) * (2n+1) / 3
がなかなかいい近似値になりました。
相対誤差はn=18の時点で1%を切ります。
n | 厳密値 | 近似値 | 相対誤差(%) |
5 | 8.382332347 | 8.198915917 | 2.188131207 |
8 | 16.30600053 | 16.02775371 | 1.70640752 |
10 | 22.46827819 | 22.13594362 | 1.479127872 |
20 | 61.66597781 | 61.11919138 | 0.886690596 |
25 | 85.63378028 | 85 | 0.74010545 |
50 | 239.0358006 | 238.059283 | 0.408523577 |
100 | 671.4629471 | 670 | 0.217874584 |
nが平方数ならば、近似値を使うとルートの計算すら無しで求められますね。
ちなみに、n≧7以上であるなら、こちらを使うのもいいかもしれない。
n=47の時点で相対誤差が0.1%を切ります。
② (n * sqrt(n) + (n+1) * sqrt(n+1)) / 3
なお最初の近似式はこの式のsqrt(n+1) ≒ sqrt(n) としたものです。
さらにさらに、もう少し厳密にしたいならこちらのほうがいいかも。
相対誤差が、n=6で1%, n=30で0.1%, n=146で0.01% を切ります。
まあその分、式も面倒ですけどね。
③ [(n+1)*sqrt(n+1) + n*sqrt(n) -1] /3
------
まあ近似式の所以は積分近似です。
③が一番求めるのは簡単だと思います。
えーっと、スターリン近似の導出と似たようなもんです!(書くの面倒ぽよ~
※有効数字云々ですが、いずれの場合もn≧20であれば2桁取っていいと思います。
③ならばn=10から2桁とれるとおもいます。3桁はn=30からかな?
③ならばn=10から2桁とれるとおもいます。3桁はn=30からかな?
0 件のコメント:
コメントを投稿