亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Go中扎根?

如何在Go中扎根?

Go
Cats萌萌 2021-05-21 18:05:55
我正在使用牛頓方法在Google Go中編寫多維數據集根函數。我想使用math /檢查結果cmplx.Pow(),但是對于我自己的一生,我不知道該怎么做。我該怎么做呢?
查看完整描述

3 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

你試過了myCubicRootOfx = Pow(x, 1.0/3)嗎?

編輯:感謝Jason McCreary評論:
我們不能將其1/3用作第二個參數,Pow因為這是整數除法,因此不會產生預期的1/3值。通過使用1.0/31/3.0等,我們可以有效地產生一個帶有0.333333 ...值的浮點數。


查看完整回答
反對 回復 2021-05-24
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

在Go Tour練習47中,我使用牛頓方法編寫了立方根函數。(Cbrt1和Cbrt)下面的兩個功能可能會有所幫助。


package main


import (

    "fmt"

    "math/cmplx"

)


// Newton's method cube root function that hopes for

//   convergence within 20 iterations

func Cbrt1(x complex128) complex128 {

    var z complex128 = x

    for i:= 0; i < 20; i++ {

        z = z - ((z*z*z - x) / (3.0*z*z))

    }

    return z

}


// Newton's method cube root function that runs until stable

func Cbrt(x complex128) complex128 {

    var z, z0 complex128 = x, x

    for {

        z = z - ((z*z*z - x) / (3.0*z*z))

        if cmplx.Abs(z - z0) < 1e-10 {

            break

        }

        z0 = z

    }

    return z

}


func main() {

    fmt.Println(Cbrt(2.0) , "should match" , cmplx.Pow(2, 1.0/3.0))

}


查看完整回答
反對 回復 2021-05-24
?
忽然笑

TA貢獻1806條經驗 獲得超5個贊

當您使用牛頓法時,我想您是從一個正實數開始的。


因此,您不需要復數。


你可以簡單地做


package main


import (

    "fmt"

    "math"

)


func main() {

    x := 100.0

    root := math.Pow(x, 1.0/3.0)

    fmt.Println(root)

}


查看完整回答
反對 回復 2021-05-24
  • 3 回答
  • 0 關注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號