牛顿迭代法求平方根

package main

import (
    "fmt"
)

func abs(f float64) float64 {
    var a float64

    if f >= 0 {
        a = f
    } else {
        a = -f
    }

    return a
}

func Sqrt(x float64) float64 {
    const p = 1e-6

    // 初始猜测的平方根
    r := 1.0

    for abs(r * r - x) > p {
        // 根据牛顿迭代公式 Xn+1 = Xn - F(Xn) / F'(Xn)不断迭代
        r = (r + x / r ) / 2
    }

    return r
}

func main() {
    fmt.Println(Sqrt(2))
}

参考:
https://blog.csdn.net/wumuzi520/article/details/7026808

欢迎补充指正!

猜你喜欢

转载自blog.csdn.net/butterfly5211314/article/details/80247679