Task[edit]
Compute all three of the Pythagorean means of the set of integers 1 through 10 (inclusive).

Show that 



A
(

x

1


,
…
,

x

n


)
≥
G
(

x

1


,
…
,

x

n


)
≥
H
(

x

1


,
…
,

x

n


)


{\displaystyle A(x_{1},\ldots ,x_{n})\geq G(x_{1},\ldots ,x_{n})\geq H(x_{1},\ldots ,x_{n})}

 for this set of positive integers.

 The most common of the three means, the arithmetic mean, is the sum of the list divided by its length:
 



A
(

x

1


,
…
,

x

n


)
=




x

1


+
⋯
+

x

n



n




{\displaystyle A(x_{1},\ldots ,x_{n})={\frac {x_{1}+\cdots +x_{n}}{n}}}


 The geometric mean is the 



n


{\displaystyle n}

th root of the product of the list:
 



G
(

x

1


,
…
,

x

n


)
=




x

1


⋯

x

n




n





{\displaystyle G(x_{1},\ldots ,x_{n})={\sqrt[{n}]{x_{1}\cdots x_{n}}}}


 The harmonic mean is 



n


{\displaystyle n}

 divided by the sum of the reciprocal of each item in the list:
 



H
(

x

1


,
…
,

x

n


)
=


n



1

x

1




+
⋯
+


1

x

n









{\displaystyle H(x_{1},\ldots ,x_{n})={\frac {n}{{\frac {1}{x_{1}}}+\cdots +{\frac {1}{x_{n}}}}}}




See also
Tasks for calculating statistical measures



in one go
moving (sliding window)
moving (cumulative)

Mean
Arithmetic

Statistics/Basic
Averages/Arithmetic mean
Averages/Pythagorean means


Averages/Simple moving average




Geometric

Averages/Pythagorean means




Harmonic

Averages/Pythagorean means




Quadratic

Averages/Root mean square




Circular

Averages/Mean angle
Averages/Mean time of day




Median

Averages/Median




Mode

Averages/Mode




Standard deviation

Statistics/Basic



Cumulative standard deviation






INCLUDE "D2:REAL.ACT" ;from the Action! Tool Kit
 
PROC InverseI(INT a,result)
  REAL one,x
 
  IntToReal(1,one)
  IntToReal(a,x)
  RealDiv(one,x,result)
RETURN
 
PROC ArithmeticMean(INT ARRAY a INT count REAL POINTER result)
  INT i
  REAL x,sum,tmp
 
  IntToReal(0,sum)
  FOR i=0 TO count-1
  DO
    IntToReal(a(i),x)
    RealAdd(sum,x,tmp)
    RealAssign(tmp,sum)
  OD
  IntToReal(count,tmp)
  RealDiv(sum,tmp,result)
RETURN
 
PROC GeometricMean(INT ARRAY a INT count REAL POINTER result)
  INT i
  REAL x,prod,tmp
 
  IntToReal(1,prod)
  FOR i=0 TO count-1
  DO
    IntToReal(a(i),x)
    RealMult(prod,x,tmp)
    RealAssign(tmp,prod)
  OD
  InverseI(count,tmp)
  Power(prod,tmp,result)
RETURN
 
PROC HarmonicMean(INT ARRAY a INT count REAL POINTER result)
  INT i
  REAL x,sum,tmp
 
  IntToReal(0,sum)
  FOR i=0 TO count-1
  DO
    InverseI(a(i),x)
    RealAdd(sum,x,tmp)
    RealAssign(tmp,sum)
  OD
  IntToReal(count,tmp)
  RealDiv(tmp,sum,result)
RETURN
 
PROC Main()
  BYTE i
  INT ARRAY a=[1 2 3 4 5 6 7 8 9 10]
  REAL result
 
  Put(125) PutE() ;clear screen
 
  ArithmeticMean(a,10,result)
  Print("Arithmetic mean=") PrintRE(result)
  GeometricMean(a,10,result)
  Print(" Geometric mean=") PrintRE(result)
  HarmonicMean(a,10,result)
  Print("  Harmonic mean=") PrintRE(result)
RETURN