ホーム ] PC技術/システム技術 ] VB.NETプログラミング ] なるほどナレッジ ] インフォメーション ]

上へ
平方根
立方根
整数指数
実数指数(Exp)
実数指数(一般)
対数
正弦/余弦
正接
逆正弦/逆余弦
逆正接
双曲線正弦/余弦
双曲線正接
逆双曲線正弦
階乗評価関数
級数評価関数
演算時間評価関数

数学関数

級数評価関数

最終更新日:2006/06/08

●概要

 標準的な級数の項目について、その収束を評価する。

●原理

 一般的に級数の収束予測は、数学的な逆関数がないので数式からは求められなく、工夫が必要である。

○線形型

 良く現われるのは、例えば、

  Xk / k

である。1/k 部分は、収束に殆ど参加しないので、変数の次数が支配的となる。係数を無視しても評価はできるが、一応考慮する。また、偶数型、奇数型も、項数が大きくなると違いはなくなるが、ここでは、律儀に区別している。

 収束する項数を見積もるだけなら、上式を単純化して、以下の条件式を得る。

  (10M)k / k ≦ 10-P             (P > 0、M < 0)

 両辺の常用対数をとると、

   M * k - Log(k) ≦ -P  

と表せる。この場合も、k については解けないので、以下の方法で解く。この場合、支配的なものは、M * k なので、

  1. 仮の項数 pk を、pk = -P / M とする。このとき、pk は、真値より必ず大きい。
  2. pk を、デクリメントしながら、M * pk - Log(pk) を計算し、M * pk - Log(pk) > -P となる直前の pk を求める。
    実際には、k = a * K + b と一般化し、K を求めている。

・確認

 この関数を用いて、変数のオーダ、精度を変化させ、級数が収束する項数の表を作成した。ユーティリティの機能として用意されている。

 



 ○階乗型

 よく現われる級数の項目は、例えば、

 Xk / k!

である。また、偶数型、奇数型も、項数が大きくなると違いはなくなるが、ここでは、律儀に区別している。収束する項数を見積るだけなら、上式を単純化して、以下の条件式を得る。

 (10M)k / k! ≦ 10-P             (P > 0)

M = 0 なら、FactorialItem にて簡単に項数が求められる。指数のみに注目すれば(対数を取る)、

  M * k - FO(k) ≦ -P    (FO:FactorialOrder関数)

と表せる。これを以下の方法で解く。

  1. 仮の項数 pk を、FI(|P|) で求める。FI は、FactorialItem。
  2. M = 0 なら、pk が解答。
  3. M < 0 なら、pk をデクリメントしながら、M * pk - FO(pk) > -P になる直前のpkを求める。
  4. M > 0 なら、pk をインクリメントしながら、M * pk - FO(pk) < -P になる直前のpkを求める。
    実際には、k = a * K + b と一般化し、K を求めている。

 ・確認

 この関数を用いて、変数のオーダ、精度を変化させ、級数が収束する項数の表を作成した。ユーティリティの機能として用意されている。

○二重階乗型

 この型は、逆関数などの級数展開で現われる定型である。

 ((2k-1)!!/((2k)!!(2k+1)))・X(2k+1)

 
((2k-1)!!/((2k)!!(2k)))・X-(2k)         (X ≫ 1 の場合)

 k が十分に大きければ、上式はほぼ同じとなる。二重階乗で表される係数部分を、ざっくりと省略形にすると、分子の二重階乗と分母の二重階乗はほぼ相殺(約分)され、2k のみ残るので、結局、k が十分大きければ、係数は、

 1 / (2k)2

と評価できる。係数は、徐々に減少はするが、k = 106 でも、精々12桁の精度となる。つまり、二重階乗係数の収束は遅いことになる。変数の次数に期待するタイプと言える。係数を Z と置けば、

  Z * (10M)(2*k+1) ≦ 10-P            (P > 0、M < 0)

が、条件式となるので、常用対数を取れば、

 Log(Z) + M * (2 * k + 1)  ≦ -P  

を得る。支配的な部分は、M * (2 * k + 1) なので、

  1. 仮の項数 pk を、pk = (-P / M - 1 ) / 2 とする。このとき、pk は、真値より必ず大きい。
  2. pk を、デクリメントしながら、M * (2 * pk + 1) + FDO(Z(pk)) を計算し、M * (2 * pk + 1) + FDO(Z(pk)) > -P となる直前の pk を求める。 ここで、FDOは、FactorialDoubleOrder。
    FDO(Z(pk)) = FDO(2* pk - 1) - (FDO(2 * pk) + Log(2 * pk + 1)) で求める。

 ・確認

 この関数を用いて、変数のオーダ、精度を変化させ、級数が収束する項数の表を作成した。ユーティリティの機能として用意されている。