module GoldenSectionSearch
Constants
- GOLDEN_RATIO
- VERSION
Public Class Methods
find_maximum(function, left_value, right_value, tolerance = 1.0e-5)
click to toggle source
# File lib/golden_section_search.rb, line 22 def self.find_maximum(function, left_value, right_value, tolerance = 1.0e-5) middle_left_value = right_value - (right_value - left_value) / GOLDEN_RATIO middle_right_value = left_value + (right_value - left_value) / GOLDEN_RATIO while (right_value - left_value).abs > tolerance if function.call(middle_left_value) > function.call(middle_right_value) right_value = middle_right_value else left_value = middle_left_value end middle_left_value = right_value - (right_value - left_value) / GOLDEN_RATIO middle_right_value = left_value + (right_value - left_value) / GOLDEN_RATIO end (left_value + right_value) / 2 end
find_minimum(function, left_value, right_value, tolerance = 1.0e-5)
click to toggle source
# File lib/golden_section_search.rb, line 6 def self.find_minimum(function, left_value, right_value, tolerance = 1.0e-5) middle_left_value = right_value - (right_value - left_value) / GOLDEN_RATIO middle_right_value = left_value + (right_value - left_value) / GOLDEN_RATIO while (right_value - left_value).abs > tolerance if function.call(middle_left_value) < function.call(middle_right_value) right_value = middle_right_value else left_value = middle_left_value end middle_left_value = right_value - (right_value - left_value) / GOLDEN_RATIO middle_right_value = left_value + (right_value - left_value) / GOLDEN_RATIO end (left_value + right_value) / 2 end