Haskell 程序查找二次方程的所有根
在本教程中,我们将讨论编写一个程序,以在 Haskell 编程语言中找到三个数字中最大的那个。二次方程是二阶代数方程。
示例 - 二次方程的形式为 ax^2 + bx + c,其中 a、b 和 c 是常数,x 是变量。二次方程有两个根。
算法步骤
将二次方程作为输入。
实现计算根的编程逻辑。
显示根。
算法逻辑
获取输入或初始化 a、b 和 c 的值。因为可以用这些值构建二次表达式 (ax^2 + bx + c)。
计算判别式D,它等于 b^2 - 4*a*c。
如果判别式 D 大于或等于零,则根为
root1 = (-b + sqrt(D))/2*a
root2 = (-b - sqrt(D))/2*a
我们将打印根。
如果判别式D小于零,则根为虚数,我们打印根为虚数
注意 - 如果判别式 D 为零,则根为 -b/2*a 和 -b/2*a。
示例
查找二次方程所有根的程序
-- function declaration for function printRoots printRoots :: Float->Float->Float->IO() -- function definition for function printRoots printRoots a b c = do print("a,b,c values =",a,b,c) let d = b^2 - 4*a*c -- let d = 1 if (d < 0) then do print ("This quadratic equation has imaginary roots") else do let root1 = (-(b) + sqrt (d))/2 * (a) let root2 = (-(b) - sqrt (d))/2 * (a) print ("The roots for this quadratic are:") print (root1) print (root2) main :: IO() main = do -- declaring and initializing constants in quadratic equation let a = 1 let b = 4 let c = 2 -- invoking the printRoots function printRoots (a) (b) (c)
输出
("a,b,c values =",1.0,4.0,2.0) "The roots for this quadratic are:" -0.58578646 -3.4142137
在上面的程序中,我们声明了一个函数 printRoots,它接受三个浮点数作为参数并返回一个 IO 操作。在其函数定义中,我们正在获取三个参数 a、b 和 c。我们根据公式 b^2 - 4*a*c 计算判别式,并将判别式加载到变量 d 中。我们正在检查判别式是否小于零,如果小于零,我们将打印语句“根为虚数”,因为我们知道如果二次方程的判别式小于零,则根为虚数。如果判别式大于零,我们将使用公式 (-b +/- sqrt(d))/2*a 计算根。我们将根加载到变量 root1 和 root2 中。最后,我们在函数中打印了根。在主函数中,我们声明并初始化了变量 a、b 和 c。最后,我们使用这三个数字作为参数调用了函数printRoots。
结论
在本教程中,我们讨论了在 Haskell 编程语言中实现查找二次方程根的程序。
广告