算術平均と幾何平均による下記の漸化式は同じ値に収束し、これを算術幾何平均 (AGM, Arithmetic Geometric Mean)と呼ぶ。
an+1 ← (an + bn) / 2 bn+1 ← √(an bn)
a0 > b0 とする。 a1 = (a0 + b0) / 2 < (a0 + a0) / 2 = a0 b1 = √(a0 b0) > √(b0 b0) = b0 a1 - b1 = (a0 + b0) / 2 - √(a0 b0) = 1 / 2 (√a0 - √bb0) > 0
a0 > … > an > an+1 > bn+1 > bn > … > b0
_agm — Arithmetic Geometric Mean (ANSI C / ISO C89)
/* agm: calculate arithmatic geographic mean */
#include <math.h> /* fabs(), sqrt */
#ifndef DBL_EPSILON
#define DBL_EPSILON 2.2204460492503131E-16
#endif
double _agm(double a, double b);
double _agm(double a, double b) {
double t;
while(fabs(a / b - 1.0) > DBL_EPSILON){
t = (a + b) / 2.0;
b = sqrt(a * b);
a = t;
}
return a;
}



© 2000 Takayuki HOSODA.