婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Go語言實現牛頓法求平方根函數的案例

Go語言實現牛頓法求平方根函數的案例

熱門標簽:貴州電話智能外呼系統 400開頭電話怎樣申請 地圖區域圖標注后導出 利用地圖標注位置 江蘇呼叫中心外呼系統有效果嗎 杭州人工智能電銷機器人費用 官渡電銷外呼管理系統怎么收費 赤峰電銷 谷歌美發店地圖標注

牛頓法求平方根

原理

計算機常用循環來計算F的平方根.從某個猜測的x值開始,根據x^2與F的近似度來調整x,產生一個更好的猜測:

x -= (x * x - F) / (2 * x)

重復調整過程,猜測的結果會越來越精確,得到的答案越發的趨近實際的平方根. 我們可以設定精度,控制計算結果與實際結果的偏差.

實現

package main
import (
 "fmt"
 "math"
)
func Sqrt(F float64) float64 {
 x := 1.0
 for math.Abs(x * x - F) > 1e-10 {
 x -= (x * x - F) / (2 * x);
 }
 return x
}
func main() {
 fmt.Println("牛頓法求平方根:Sqrt(10) = ", Sqrt(10))
 fmt.Println("庫函數求平方根:Sqrt(10) = ", math.Sqrt(10))
}

補充知識:X的平方根的golang實現

實現 int sqrt(int x) 函數。

計算并返回 x 的平方根,其中 x 是非負整數。

由于返回類型是整數,結果只保留整數的部分,小數部分將被舍去。

輸入: 4

輸出: 2

輸入: 8

輸出: 2

說明: 8 的平方根是 2.82842...,由于返回類型是整數,小數部分將被舍去。

首先遇到這種題目肯定要想到使用內置得api來解答:

//使用api來求解
func mySqrt(x int) int {
  f := float64(x)
  ff := math.Sqrt(f)
  return int(ff)
}

其次我們可以使用牛頓法求平方根:

牛頓法:(以本題為例子)

計算平方根,其實就是計算

x^2 =n

的解

令f(x)=x2-n,相當于求解f(x)=0的解,如上圖所示。

首先取x0,如果x0不是解,做一個經過(x0,f(x0))這個點的切線,與x軸的交點為x1。

同樣的道理,如果x1不是解,做一個經過(x1,f(x1))這個點的切線,與x軸的交點為x2。

以此類推。

以這樣的方式得到的xi會無限趨近于f(x)=0的解。

判斷xi是否是f(x)=0的解有兩種方法:

一是直接計算f(xi)的值判斷是否為0,二是判斷前后兩個解xi和xi-1是否無限接近。

經過(xi, f(xi))這個點的切線方程為f(x) = f(xi) + f'(xi)(x - xi),其中f'(x)為f(x)的導數,本題中為2x。令切線方程等于0,即可求出xi+1=xi - f(xi) / f'(xi)。

繼續化簡

xi+1=xi - (xi2 - n) / (2xi) = xi - xi / 2 + n / (2xi) = xi / 2 + n / 2xi = (xi + n/xi) / 2

迭代公式就已經出來了

x = (x + n/x) / 2

那么代碼:

//使用牛頓法求平方根
func mySqrt1(x int) int {
  res := x
  //牛頓法求平方根
  for res*res > x {
    res = (res + x/res) / 2
  }
  return res
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • 使用go求冪的幾種方法小結
  • 淺談Go語言中的次方用法
  • Golang 運算符及位運算詳解
  • golang指數運算操作
  • golang切片反序實例

標簽:武漢 松原 保定 鷹潭 宜春 河池 泰安 黔西

巨人網絡通訊聲明:本文標題《Go語言實現牛頓法求平方根函數的案例》,本文關鍵詞  語言,實現,牛頓,法求,平方根,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言實現牛頓法求平方根函數的案例》相關的同類信息!
  • 本頁收集關于Go語言實現牛頓法求平方根函數的案例的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 穆棱市| 克山县| 利川市| 合作市| 布尔津县| 太原市| 尖扎县| 临海市| 益阳市| 塘沽区| 如东县| 高邮市| 惠水县| 大理市| 台山市| 苗栗市| 庄浪县| 康保县| 和政县| 丽江市| 泰州市| 阆中市| 庆元县| 安顺市| 五大连池市| 汨罗市| 乳山市| 大化| 永泰县| 桂林市| 盱眙县| 延安市| 江阴市| 湄潭县| 灵山县| 海原县| 巍山| 丹棱县| 惠来县| 桐城市| 肥西县|