算術幾何平均(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 - √b0) > 0 

帰納的に 

a0 > … > an > an+1 > bn+1 > bn > … > b0 

より数列 {an}, {bn} は単調数列となり同じ値に収束する。 

[プログラム例]
#include 

#ifndef DBL_EPSILON
#define DBL_EPSILON     2.2204460492503131E-16
#endif

double
_agm(a, b)
    double a;
    double b;
{
    double t;
    while(fabs(a / b - 1.0) > DBL_EPSILON){
        t = (a + b) * 0.5;
        b = sqrt(a * b);
        a = t;
    }
    return(a);
}

REFERENCE
SEE ALSO
www.finetune.co.jp [Mail] © 2000 Takayuki HOSODA.