zoukankan      html  css  js  c++  java
  • 最优化算法-割线法

    割线法获取极值,参考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)
    
    }
  • 相关阅读:
    Hive学习笔记记录
    Hadoop学习笔记记录
    python学习笔记记录
    2018高级软件工程——助教总结
    Week3 第二次结对编程
    Week2 第一次结对编程
    Week1 博客作业
    最后一周总结
    阅读和提问3
    个人项目 案例分析
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/7531622.html
Copyright © 2011-2022 走看看