3 回答

TA貢獻1798條經驗 獲得超3個贊
你試過了myCubicRootOfx = Pow(x, 1.0/3)
嗎?
編輯:感謝Jason McCreary
評論:
我們不能將其1/3
用作第二個參數,Pow
因為這是整數除法,因此不會產生預期的1/3值。通過使用1.0/3
或1/3.0
等,我們可以有效地產生一個帶有0.333333 ...值的浮點數。

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))
}

TA貢獻1806條經驗 獲得超5個贊
當您使用牛頓法時,我想您是從一個正實數開始的。
因此,您不需要復數。
你可以簡單地做
package main
import (
"fmt"
"math"
)
func main() {
x := 100.0
root := math.Pow(x, 1.0/3.0)
fmt.Println(root)
}
- 3 回答
- 0 關注
- 221 瀏覽
添加回答
舉報