1

p私は任意に設定された精度(MPFR 浮動小数点仮数の 2 進数での長さ)に評価したいすべての項が負でないベキ級数を持っています。結果は忠実に丸められる必要があります。問題は、結果変数への項の追加をいつ停止する必要があるのか​​ わからないことです。つまりp + 32、シリーズの正確な合計ビットがすでにあることをいつ知ることができますか? は、 2 進数32へのより正確な丸めを容易にすることを目的とした、任意に選択された小さな自然数です。p

私のオリジナルシリーズです

0 <= h <= 1
series_orig(h) := sum(n = 0, +inf, a(n) * h^n)

しかし、実際には、上記の系列の任意の導関数を計算する必要があります (mは導関数の次数です)。

series(h, m) := sum(n = m, +inf, a(n) * (n - m + 1) * ... * n * h^(n - m))

有理数列aは次のように定義されます。

a(n) := binomial(1/2, n)^2
      = (((2*n)!/(n!)) / (n! * 4^n * (2*n - 1)))^2

では、 の項を合計するのをやめるべき時期をどのように知ることができseriesますか?

以下はおそらく良い戦略ですか?

  1. で計算しp * 4ます (これは より大きいと想定されますp + 32)。
  2. 各ポイントで、現在の部分和と前の部分和を思い出すことができます。
  3. precision に丸められた場合、前と現在の部分和が等しくなったときにループを停止しp + 32ます。
  4. 精度pに丸めて返します。

明確化

これは、MPFR の区間演算アドオンである MPFI を使用して行っています。したがって、[mpfi] タグです。

関連する公式と方程式を取得しようとする

コメントでエリックに導かれて、必要な作業精度の式と、合計の級数の必要な項数の式を導き出すことができました。

ただし、問題は、必要な項数の適切な式を作成できないことです。

より数学的に有能な人は、代わりに有用な上限の式を達成できるかもしれませんが、要求されたすべての可能な結果の精度とm(導関数の次数) のすべての可能な値に対してそれを行うのは非常に難しいようです。数式は簡単に計算できる必要があることに注意してください。これにより、シリーズの計算を開始する前に準備が整います。

hもう 1 つの問題は、 ( )の最悪のケースを想定してh = 1適切な式が得られる可能性があるように思われることですが、 がh最悪のケースからかけ離れている場合、つまり がhゼロに近い場合、これは無駄です。

4

0 に答える 0