In this program the practical definition of a geometric mean is used.
The definition is : The average of the logarithmic values of a data set, converted back to a base 10 number.
I have found that base 10 is not required.
I have used base 2 and as far as I know, anything can be used.
The program has comments and since it’s a fairly simple program , its self explanatory
#This is the program to calculate geometric mean of a sequence.
#The sequence will be passed as an array as argument to the function
class Geometric
#this is the method to return the geometric mean of the sequence
def mean_calculate(x)
tmp=0
y=Array.new #This array will be used to store logarithms of the numbers of the sequence
#this loop is used to find logs of numbers in sequence and sum them up in a variable called tmp
for i in 0..x.length-1
y[i]=Math.log(x[i])
tmp=tmp+y[i]
end
#end of i for loop
#this is to find average of the sum of logs taken.
avg_log=tmp/x.length
#This is to convert logs back to original form
gm=Math.exp(avg_log)
#Finally display the result !!
puts “Geometric mean is : “+gm.to_s
end
#end of mean_calculate method
end
#end of class
x=Array.[](6,50,9,1200)
Geometric.new.mean_calculate(x)
In this code, I have used a very simple sequence.
You may test it with a larger sequence.