黄金分割法 golden section search
改訂新版 C言語による標準アルゴリズム事典をSwiftでコーディング
アルゴリズム
黄金分割法 golden section search
実行
Playground
コード
import Foundation func goldsect( a:inout Double, b:inout Double, tolerance:Double, f:((Double) -> Double)) -> Double { let r:Double = 2 / (3 + sqrt(5.0)); if a > b { swap(&a, &b) } let t = r * (b - a) var c = a + t var d = b - t var fc = f(c) var fd = f(d) while(true) { if fc > fd { a = c c = d fc = fd d = b - r * (b - a) if d - c <= tolerance { return c } fd = f(d) } else { b = d d = c fd = fc c = a + r * (b - a) if d - c <= tolerance { return d } fc = f(c) } } } var a = 1.0 var b = 10.0 print("結果 = \(goldsect(a: &a, b: &b, tolerance: 0, f: {$0 * $0 - 2}))")