読者です 読者をやめる 読者になる 読者になる

golangでニュートン法を使ってsqrtを実装

チュートリアルの内容。http://go-tour-jp.appspot.com/#24 計算機科学の初期の内容なので、学んだのは10年前くらい。理解に時間がかかった・・・

package main
 
import (
    "fmt"
)
 
func Sqrt(v float64) float64 {
    n  := 100
    
    //init value (that is near around v)
    xn := 0.0
    for ; xn * xn < v; xn++ {
    }
    
    for i := 0; i < n; i++ {
      xn = (xn*xn + v) / (2*xn)
    }
    
    return xn
}
 
func main() {
    fmt.Println(Sqrt(5))
    
    var answer = 2.2360679775
    fmt.Println(answer)
}

結果

2.23606797749979
2.2360679775