class LagrangeAlgorithm
Public Instance Methods
call(point)
click to toggle source
# File lib/polynomial_ruby/lagrange_algorithm.rb, line 2 def call(point) basis_polynomials(point).zip(values) .map { |p, v| p * v } .reduce(:+) end
Private Instance Methods
basis_polynomials(point)
click to toggle source
# File lib/polynomial_ruby/lagrange_algorithm.rb, line 10 def basis_polynomials(point) Array.new(points.size) { |j| numerator = BigDecimal(1) denominator = BigDecimal(1) points.each_with_index { |el, m| numerator *= (point - points[m]) unless(j == m) } points.each_with_index { |el, m| denominator *= (points[j] - points[m]) unless(j == m) } numerator / denominator } end