• 最优化算法-割线法


    割线法获取极值,参考Edwin《最优化导论》第四版 7.6章节,算法采用go语言实现。

    /*****************************************
     * FileName  : cut_search.go
     * Author    : fredric
     * Date      : 2017.09.01
     * Note      : 割线法算法
     * History   :
    *****************************************/
    package search 
    
    import(
        "fmt"
    )
    
    func _get_func_value(x float64) float64 {
    
        result := x*x*x - 12.2 * x * x + 7.45 * x + 42.0
    
        //fmt.Println(result)
        
        return result
    
    }
    
    
    func DoCutSearch() {
            
        //割线方法与牛顿法的区别主要是避免求解函数的二阶导数,而是用下属替代公式:
        //f'(xk) - f'(xk-1) / xk - xk-1
    
        //此时x k + 1的公式如下:
        //x k + 1 = g(xk)* xk-1 - g(xk-1)*xk / g(xk) - g(xk-1)
    
        //此时我们用割线法求取g(x) = 0的解,在实际应用中g(x)就是f(x)的一阶导数
    
        //求解函数g(x) = x^3 - 12.2*x2 + 7.45 * x + 42 = 0
        // x(-1) = 13
        // x(0)  = 12
    
    
    
        //割线的初始值是如何确定的??
        
        x0 := 13.0
        x1 := 12.0
    
        x2 := (_get_func_value(x1) * x0 - _get_func_value(x0) * x1 )/ (_get_func_value(x1) - _get_func_value(x0))
    
        fmt.Println(x2)
    
    }
  • 相关阅读:
    第九次作业
    第八次作业
    第七次作业
    组合数学—递推关系与母函数
    组合数学—排列组合
    三角函数
    OpenCV初步
    计算机视觉如何入门
    GDB调试技巧:总结篇
    PyQt5之窗口类型
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/7531622.html
Copyright © 2020-2023  润新知