あまりうまく表現されていませんが、これは有効な質問だと思います。問題は、風鈴が言及した質問でさえ、うまく表現されておらず、良い回答を得る前に閉じられたことです。
ただし、質問自体は、特に本に含まれていることを示すクローズドな質問にとって興味深いものであるため、より多くの人々を何らかの方向に導く可能性があります.
どちらのアルゴリズムも特に優れているとは思いません。単純な平均では、精度が失われるように見えます。または、いくつかの大きさの差がある数値を平均すると、数値が失われることさえありますが、おそらく他のアルゴリズムでも同じことが発見される可能性があります。入力データのセットが異なるだけです。
したがって、特に既存の本からのものであるため、これは適切な回答を求める完全に有効な質問だと思います。
例を挙げて、2 つのアルゴリズムについて私が考えていることを隠そうとします。ほぼ同じ大きさの 4 つの数値があり、それらを平均したいとします。
素朴な方法では、最初にそれらを次々に合計します。最初の 2 つを合計すると、明らかに下限で 1 ビットの精度が失われます (おそらく、指数が 1 つ大きくなったためです)。最後の数値を追加すると、2 ビットが失われます (このビットは現在、合計の上位部分を表すために使用されています)。しかし、次に 4 で割ります。この場合、本質的には、指数から 2 を引くだけです。
この過程で私たちは何を失いましたか?これで、最初にすべての数値が 2 ビット切り捨てられた場合の答えが簡単になります。この場合、明らかに、結果として得られる平均の端数の最後の 2 ビットはゼロになり、さらに 2 ビット相当のエラーが発生する可能性があります (切り捨てられたすべてのビットがたまたま元の数値の 1 である場合と比較して、ゼロ)。基本的に、ソースが 23 ビットの小数部を持つ単精度浮動小数点数である場合、結果の avg は約 19 ビット相当の精度を持つことになります。
合計された最初の数値はそれほど精度を失うことはありませんでしたが、単純な方法からの実際の結果はより優れています。
各反復の微分法では、適切に重み付けされた差が合計に追加されます。数値が同じ大きさである場合、この差はおそらく 1 桁下のどこかになります。次に、現在のカウントで除算されます。この操作では何も失われませんが、最後の数値 (この例では i=4) の結果の差は、ソース数値よりも約 3 桁小さい場合があります。これを、元の数値とほぼ同じ大きさの移動平均に追加します。
したがって、この例の微分法では、最後の数値を追加すると、約 3 ビットの精度が失われたように見えます。4 つの数値すべてについて、本質的に精度が失われた 5 ビットにまで下がっているように見えることさえあります。方法?
微分法は従うのが難しいです。おそらく、私の仮定に誤りがありました。しかし、それは明らかだと思います。どちらか一方のパフォーマンスが優れていると見なすのは妥当ではないようです。そうであれば、データのレイアウトと大きさの違いに依存している可能性があります。