The arithmetic-geometric mean M(x, y) of two positive real numbers x and y is defined as follows: we first form the arithmetic mean of x and y and call it a1, i.e. a1 = (x+y) / 2. We then form the geometric mean of x and y and call it g1, i.e. g1 is the square root of xy. Now we can iterate this operation with a1 taking the place of x and g1 taking the place of y. In this way, two sequences (an) and (gn) are defined:
M(x, y) is a number between the geometric and arithmetic mean of x and y; in particular it is between x and y. If r > 0, then M(rx, ry) = r M(x, y).
Implementation
The following example code in the Scheme programming language computes the arithmetic-geometric mean of two positive real numbers:
(define agmean(lambda (a b epsilon) (letrec ((ratio-diff ; determine whether two numbers(lambda (a b) ; are already very close together (abs (/ (- a b) b)))) (loop ; actually do the computation (lambda (a b) ;; if they're already really close together, ;; just return the arithmetic mean (if (< (ratio-diff a b) epsilon) (/ (+ a b) 2) ;; otherwise, do another step (loop (sqrt (* a b)) (/ (+ a b) 2))))));; error checking (if (or (not (real? a))(not (real? b)) (<= a 0) (<= b 0)) (error 'agmean "~s and ~s must both be positive real numbers" a b) (loop a b)))))
One can show that
The geometric harmonic mean can be calculated by an analogous method, using sequences of geometric and harmonic means. The arithmetic harmonic mean is none other than the geometric mean.
See also: generalized mean