最適化アルゴリズム-ニュートン法
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)
}