and
Both of these sequences converge to the same number, which we call the arithmetic-geometric mean M(x, y) of x and y.
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).
(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
where K(x) is the complete elliptic integral of the first kind.
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