module VectorCalc #●スカラーの作用 def self.scalar_action(c , array) array.collect{|v| c * v} end #●L2ノルム def self.norm2(array) Math.sqrt(array.inject(0) {|result , v| result + v ** 2}) end #●正規化 def self.normalize(v) self.scalar_action((1 / self.norm2(v)) , v) end #●内積 def self.inner_product(v1 ,v2) sum = 0 v1.each_index do |i| sum += v1[i] * v2[i] end return sum end end