最適化アルゴリズム-ニュートン法

1954 ワード

ニュートンの検索アルゴリズムは、Edwinの「最適化導論」7.5章を参照して、アルゴリズムはgo言語で実現されます.
/*****************************************
 * FileName  : newton_search.go
 * Author    : fredric
 * Date      : 2017.09.01
 * Note      :       
 * History   :
*****************************************/
package search

import(
    "fmt"
    "math"
)



/*
*       , f(x) x0       , (        )
* f(x) = f(x0) + f'(x0)(x - x0) + 1/2 * f''(x0) * (x - x0)
*                            0
*  x = x0 - f'(x0)/f''(x0)
*    x,x0    ,  xk+1 - xk      

*      :
*         xk     ,             x    ,  xk + 1
*               ,                    x k + 1
*                0
*                  
*/
func DoNewtonSearch() {
    //  f(x) = 1/2 * x^2 + sinx
    //f'(x) = x -cosx
    //f''(x) = 1 + sinx

    x0 := 0.5
    x1 := 1.0
    delta := 0.000005

    for math.Abs(x1 - x0) > delta {

        x0 = x1

        x1 = x0 - (x0 - math.Cos(x0))/(1 + math.Sin(x0))
    }

    fmt.Printf("x0 = %f, x1 = %f
", x0, x1) }