go言語で今まで学習したif文やループ処理を使い平方根を求めてみましょう。
【具体例】
package main
import (
"fmt"
"math"
)
func Sqrt(x float64) float64 {
z := 1.0
bestZ := 1.0
bestDistance := x
for i := 0; i < 10; i++ {
z -= (z*z - x) / (2 * z)
if distance := x - 2*z
math.Abs (distance) < math.Abs(bestDistance) {
bestZ = z
bestDistance = distance
}
}
return bestZ
}
func main() {
fmt.Println(Sqrt(4))
fmt.Println(math.Sqrt(4))
}
2
2
【解説】
平方根を求めるには
import (
"math"
)
math.Sqrt(平方根を計算する数値)
で可能です。
mathパッケージを呼び出します。
func Sqrt(x float64) float64 {
z := 1.0
bestZ := 1.0
bestDistance := x
zとbestZに1.0を入れます。
次にfor分で繰り返し処理します。
for 初期化式(1.値を初期化) ; 条件式(2.条件) ; 増減式(3.値を更新) {
繰り返される箇所
}
for i := 0; i < 10; i++ {
z -= (z*z - x) / (2 * z)
if distance := x - 2*z
math.Abs (distance) < math.Abs(bestDistance) {
bestZ = z
bestDistance = distance
でiが0で{}を計算を10回繰り返します。
if distance := x - 2*z
math.Abs (distance) < math.Abs(bestDistance) {
if 条件A {
// 条件Aが true の時のみ実行される
}
によりbestDistanceが大きければ値が出力しまいます。
math.AbsのmathパッケージのAbs関数を使い絶対値にします。
そして、math.Sqrtにより平方根の数を返し2となります。
取材やお仕事紹介などはこちらからお気軽にご連絡下さい。
ysa7825@gmail.com