Haskell程序 计算给定数的立方根
这篇Haskell文章将帮助我们计算给定数字的立方根。一个数字的立方根是一个值,当它乘以自己的三倍时,等于原来的数字。例如,8的立方根是2,因为2 x 2 x 2 = 8。
在数学上,数字x的立方根表示为∛x。
算法
- 第1步 – 定义一个用户定义的函数,并将其命名为cubeRoot
-
第2步 – 程序的执行将从主函数开始。main()函数拥有整个程序的控制权。它被写成main = do。它接收一个要计算立方根的整数。然后,它将通过传递一个数字来测试cubeRoot函数并打印结果。
-
第3步 – 名为 “num “的变量正在被初始化。它将保存一个要计算立方根的整数。
-
第4步 – 在调用cubeRoot函数时,使用’print’函数将结果的立方根打印到控制台。
例子1
在这个例子中,cubeRoot函数接收一个双数(十进制数字)作为参数,并返回其立方根。
import Data.Fixed
cubeRoot :: Double -> Double
cubeRoot x = (cuberoot x) / 1
where cuberoot = (** (1/3))
main :: IO ()
main = do
let num = 8
print (cubeRoot num)
输出
2.0
例2
在这个例子中,exp函数被用来计算立方根,方法是对输入的数字取自然对数,除以3,然后取指数。
import Data.Fixed
import Text.Printf
cubeRoot :: Double -> Double
cubeRoot x = exp (log x / 3)
main :: IO ()
main = do
let num = 8
printf "Cuberoot of %f is " num
print (cubeRoot num)
输出
Cuberoot of 8.0 is 2.0
例3
在这个例子中,我们将看到如何用牛顿-拉弗森法计算给定数字的立方根。
cubeRoot :: Double -> Double
cubeRoot x = cubeRootNewtonRaphson x 1
cubeRootNewtonRaphson :: Double -> Double -> Double
cubeRootNewtonRaphson x guess =
if abs (guess^3 - x) < 0.00001
then guess
else cubeRootNewtonRaphson x (guess - (guess^3 - x) / (3 * guess^2))
main :: IO ()
main = do
let num = 8
print (cubeRoot num)
输出
2.0000000000120624
结论
在Haskell中,一个数字的立方根可以通过使用cuberoot函数、exp函数或Newton-Raphson方法来计算。