• 最优化算法-二分法搜索


    二分法搜索,参考Edwin《最优化导论》第四版,算法采用go语言实现。

    /*****************************************
     * FileName  : binary_search.go
     * Author    : fredric
     * Date      : 2017.09.01
     * Note      : 二分搜索算法
     * History   :
    *****************************************/
    package search
    
    import(
        "fmt"
    )
    
    
    func _get_differential(x float64) float64 {
        //取测试函数(x - 0.7) * (x - 0.7)
        //其导数为 2 * (x - 0.7)
        return 2 * (x - 0.7)    
    }
    
    /*
    *    二分查找的前提条件要求函数处处可导
    *   对于取值范围[a0, b0] ,而言每次取(a0 + b0)/2 处的导数
    *   若导数大于0,则取范围左侧;导数小于0则取右侧;=0则代表是极值
    */
    func DoBinarySearch(){
    
        a0 := 0.0
        b0 := 2.0
    
        delta := 0.05
    
        for b0 - a0 >= delta{
    
            mid := (b0 + a0)/2.0
    
            diff := _get_differential(mid)
    
            if diff > 0{
                b0 = mid
            }else if diff < 0 {
                a0 = mid
            }else{
                break;
            }    
        }
    
        fmt.Printf("a0=%f, b0=%f
    ", a0, b0)
    }
  • 相关阅读:
    SpringBoot定制修改Servlet容器
    springboot配置i18n
    idea properties编码问题
    多线程分页查询
    浏览器 私有属性&内核
    css添加样式的四种方式
    html、css、js注释
    JS中的 变量提升
    ECMAScript
    NOSCRIPT标签的用处
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/7531610.html
Copyright © 2020-2023  润新知