All pastes #402887 Raw Edit

Someone

public ruby v1 · immutable
·published 2007-03-20 01:37 UTC
rendered paste body
#!/usr/bin/env rubyclass 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	endclass LSquares		attr_reader :EXi,:EXi2,:EYi,:EXiYi,:m,:b,:EXiEYi,:strprocedure,:data_size				def initialize(data)				@data = data				@data_size = @data.size				@strprocedure = ''				@EXi = 0				@EXi2 = 0				@EYi = 0				@EXiYi = 0				@EXiEYi = 0				@m = 0				@b = 0		end				def Sums				@strprocedure += "$m=\\frac{n\\sum_{i=1}^{n} x_{i}^{2}-\\sum_{i=0}^{n} x_iy_i}{n\\sum_{i=1}^{n} x_{i}^{2}-\\sum_{i=1}^{n} x_i \\sum{i=1}^{n} x_i}$\\\\\n"				@strprocedure += "$m=\\frac{n\\sum_{i=1}^{#{@data_size}} x_{i}^{2}-\\sum_{i=0}^{#{@data_size}} x_iy_i}{n\\sum_{i=1}^{#{@data_size}} x_{i}^{2}-\\sum_{i=1}^{#{@data_size}} x_i \\sum_{i=1}^{#{@data_size}} x_i}$\\\\\n"				@strprocedure += "$b=\\frac{\\sum_{i=1}^{n} y_{i}-m\\sum_{i=0}^{n} x_i}{n}$\\\\\n"				@strprocedure += "$b=\\frac{\\sum_{i=1}^{#{@data_size}} y_{i}-m\\sum_{i=0}^{#{@data_size}} x_i}{n}$\\\\\n"				@data.each do |e|						e.collect!{|a| a.to_f}						@EXi += e[0]						@EXi2 += e[0]**2						@EYi += e[1]						@EXiYi += e[0]*e[1]				end				@EXiEYi = @EXi * @EYi		end				def MB				@m = (@data_size*@EXiYi-@EXi*@EYi)/(@data_size*@EXi2-@EXi*@EXi)				@b = (@EYi-@m*@EXi)/(@data_size)				@strprocedure += "$m=\\frac{#{@data_size}*#{@EXiYi}-#{@EXi}*#{@EYi}}{#{@data_size}*#{@EXi2}-#{@EXi}*#{@EXi}}$\\\\\n"				@strprocedure += "$m=#{@m}$\\\\\n"				@strprocedure += "$b=\\frac{#{@EYi}-#{@m}*#{@EXi}}{#{@data_size}}$\\\\\n"				@strprocedure += "$b=#{@b}$\\\\\n"		endendprint "Datos: "input = gets.split(';').collect{|e| e.split(',').collect{|a| a.to_f}}print "Error: "error = gets.to_f s = LSquares.new(input)s.Sumss.MBputs s.strprocedurec = SDeviation.new(input.collect{|e| e[1]},error)c.Averagec.Sumatoryc.StdDeviationputs c.strprocedure=beginclass ParseData		attr_reader :initiald,:tmpd,:parsedd		def initialize(data)		@initiald = data		@tmpd = []		@parsedd = []	end		def RemoveSp		@initiald.each do |e|			@tmpd << e.gsub(/\s/,"")		end	end		def ParseLines		@initiald.each do |e|			@tmpd << e.strip.to_f if e.gsub(/\s/,"") != ""		end	end		def ParseSep(sep=",")		@initiald.each do |e|			@tmpd << e.strip.to_f if true		end	endend=end