【Ruby】【アルゴリズム】二分木で方程式の解を見つける
学んだこと
lambda を使った関数渡し
Integer⇒Floatの変換
コード
function = lambda{|x| x**5 - 10*x**4 + 25*x**3 + 40*x**2 + 200*x -500} def binary_search(_min, _max, epsilon, &func) _min = _min.to_f _max = _max.to_f mid = (_min + _max) /2 executed = func.call(mid) return mid if executed.abs <= epsilon return binary_search(_min, mid, epsilon, &func) if executed > 0 return binary_search(mid, _max, epsilon, &func) if executed < 0 end print "x = " , answer = binary_search(1, 2, 0.1, &function) ,"\n" print "f(x) = " , function.call(answer)