class SDeviation attr_reader :sum,:sumatory,:data,:average,:stddeviation,:strprocedure,:stddeviation_sqrt,:error,:error_size def initialize(data,error) @sum = 0 @sumatory = 0 @data = data @error = error @error_size = @error.to_s.split('.')[1].size @average = 0 @stddeviation = 0 @strprocedure = '' end def setError(v) d = v-v.to_i r = (d*10**(@error_size-1)-(d*10**(@error_size-1)).to_i)*10**-(@error_size-1) rounded = ((r*(10**(@error_size-1))).round)*10**-(@error_size-1) return v-r+rounded end def Average @strprocedure = "$\\overline{x}=\\frac{\\sum_{i=1}^n x_i}{n}$\\\\\n" @strprocedure += "$\\overline{x}=\\frac{\\sum_{i=1}^{#{@data.size}} x_i}{#{@data.size}}$\\\\\n" @strprocedure += "$\\overline{x}=\\frac{" @data.each do |e| @sum += e @strprocedure += "#{e}+" end @strprocedure = @strprocedure[0..-2] @average = setError(@sum / @data.size.to_f) @strprocedure += "}{#{@data.size}}$\\\\\n" end def Sumatory @strprocedure += "$\\sum_{i=1}^n (x_i-\\overline{x})^2$\\\\\n" @strprocedure += "$\\sum_{i=1}^{#{@data.size}} (x_i-\\overline{x})^2=$\\\\\n" @strprocedure += "$" @data.each do |e| @sumatory += setError((e-@average)**2) @strprocedure += "(#{e}-#{@average})^2+" end @strprocedure = @strprocedure[0..-2] @strprocedure += "$\\\\\n" @strprocedure += "$=#{@sumatory}$\\\\\n" end def StdDeviation @stddeviation = setError(@sumatory / (@data.size.to_f - 1)) @stddeviation_sqrt = setError(Math::sqrt(@stddeviation)) @strprocedure += "$\\sigma^2 = \\frac{\\sum_{i=1}^n (x_i-\\overline{x})^2}{n-1}$\\\\\n" @strprocedure += "$\\sigma^2 = \\frac{\\sum_{i=1}^{#{@data.size}} (x_i-\\overline{x})^2}{#{@data.size}-1}$\\\\\n" @strprocedure += "$\\sigma^2 = \\frac{#{@sumatory}}{#{@data.size-1}}$\\\\\n" @strprocedure += "$\\sigma^2 = #{@stddeviation}$\\\\\n" @strprocedure += "$\\sigma = #{@stddeviation_sqrt}$\\\\\n" end end