Haskell程序 计算给定数的平方根

Haskell程序 计算给定数的平方根

在Haskell中,有不同的技术来计算一个数字的平方根。一个数字的平方根是一个值,当它与自己相乘时,等于原来的数字。例如,9的平方根是3,因为3 x 3 = 9。

计算方法

  • 第1步 – 定义了平方根函数

  • 第2步 – 程序的执行将从主函数开始。main()函数拥有整个程序的控制权。它被写成main = do。它接收一个要计算平方根的整数。

  • 第3步 – 名为 “num “的变量正在被初始化。它将保存一个要计算平方根的整数。

  • 第4步 – 使用’show’函数和’putStrLn’语句在调用squareRoot函数时将结果的平方根打印到控制台。

例子1

在这个例子中,sqrt函数被用来计算数字的平方根,并将结果存储在结果变量中。最后,它将计算出的平方根打印到控制台。

squareRoot :: Double -> Double
squareRoot x = sqrt x

main :: IO()
main = do
   let num = 144
   let result = squareRoot num
   putStrLn ("The square root of " ++ show num ++ " is " ++ show result)

输出

The square root of 144.0 is 12.0

例2

在这个例子中,**运算符被用来将数字提升到0.5的幂,从而得到数字的平方根,并将结果存储在结果变量中。最后,它打印出了计算出的平方根。

squareRoot :: Double -> Double
squareRoot x = x ** 0.5

main :: IO()
main = do
   let num = 169
   let result = squareRoot num
   putStrLn ("The square root of " ++ show num ++ " is " ++ show result)

输出

The square root of 169.0 is 13.0

例3

在这个例子中,Newton-Raphson方法被用来寻找数字的平方根。Newton-Raphson方法需要一个函数,它的导数,一个初始猜测和一个公差值。在本例中,函数为y*y-x,其导数为2*y,初始猜测值为1,它将迭代到猜测值的平方与输入数的差值小于公差值(eps)为止。

squareRoot :: Double -> Double
squareRoot x = newtonRaphson x (\y -> y*y - x) (\y -> 2*y) 1

newtonRaphson :: Double -> (Double -> Double) -> (Double -> Double) -> Double -> Double
newtonRaphson x f f' guess = if abs (f guess) < eps then guess else newtonRaphson x f f' (guess - f guess / f' guess)
  where eps = 0.00001
main :: IO()
main = do
   let num = 169
   let result = squareRoot num
   putStrLn ("The square root of " ++ show num ++ " is " ++ show result)

输出

The square root of 169.0 is 13.000000070110696

结论

在Haskell中,一个数字的平方根可以通过使用sqrt函数,使用**运算符或使用Newton-Raphson方法来计算。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程