RosettaCodeData/Task/Roots-of-a-function/Ruby/roots-of-a-function-1.rb
2023-07-01 13:44:08 -04:00

19 lines
371 B
Ruby

def sign(x)
x <=> 0
end
def find_roots(f, range, step=0.001)
sign = sign(f[range.begin])
range.step(step) do |x|
value = f[x]
if value == 0
puts "Root found at #{x}"
elsif sign(value) == -sign
puts "Root found between #{x-step} and #{x}"
end
sign = sign(value)
end
end
f = lambda { |x| x**3 - 3*x**2 + 2*x }
find_roots(f, -1..3)