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 编程语言中实现查找二次方程根的程序。

更新于: 2022-11-24

783 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告