求解一元二次方程根的程序

给定一个形如 ax² + bx + c一元二次方程(仅提供 a、b 和 c 的值),我们需要求出它的根。如果该方程有实根,则按降序打印每个根的向下取整值;如果根是虚数,则打印 Imaginary。

!一元二次方程

示例:

> 输入: a = 1, b = -2, c = 1

> 输出: [ 1, 1]

> 解释: 对于 a = 1, b = -2, c = 1,判别式为 0,因此该一元二次方程有一个重复的实根:x =−b2 a=1 x = \frac{-b}{2a} = 1。

>

> 输入: a = 1, b = 7, c = 12

> 输出: [ -3, -4]

> 解释: 对于 a = 1, b = 7, c = 12,判别式为 49 – 48 = 1,因此根是实数且不相同的:即根为 -3 和 -4。

>

> 输入: a = 1, b = 1, c = 1

> 输出: Roots are Imaginary

> 解释: 对于输入 a = 1, b = 1, c = 1,判别式 D=b²−4ac=1−4(1)(1)=−3,为负数,因此根是虚数(无实根)。

Try it on GfG Practice<img src="https://www.geeksforgeeks.org/problems/java-operatorsarithmetic-set-12417/1" alt="redirect icon" />

我们可以使用下面的公式来找到根(这也被称为 Sridharacharya 公式):

x=\frac{-b\pm \sqrt{b^2-4ac}}{2a}

根的值取决于项 (b² – 4ac),这被称为 判别式 (D)

> 如果 D > 0:

> => 这发生在 b² > 4ac 时。

> => 根是实数且不相等的。

> => 根为 {-b + \sqrt(b² – 4ac)}/2a{-b – \sqrt(b² – 4ac)}/2a

>

> 如果 D = 0:

> => 这发生在 b² = 4ac 时。

> => 根是实数且相等的。

> => 根为 (-b/2a)

>

> 如果 D < 0:

> => 这发生在 b² < 4ac 时。

> => 根是虚数且不相等的。

> => 判别式可以写成 (-1 * -D)。

> => 由于 D 是负数,-D 将是正数。

> => 根为 {-b ± \sqrt(-1*-D)} / 2a = {-b ± i\sqrt(-D)} / 2a = {-b ± i\sqrt-(b² – 4ac)}/2a,其中 i = \sqrt-1

让我们使用以下伪算法来找到方程的根:

伪算法:

> 开始

> 读取 a, b, c 的值

> 如果 a == 0

> 打印 "imaginary" // 不是一元二次方程

> 退出

> 计算 d = b² – 4ac // 判别式

> 如果 d > 0

> root1 = floor((-b + √d) / (2a))

> root2 = floor((-b – √d) / (2a))

> 按降序打印 root1 和 root2

> 否则 如果 d == 0

> root1 = root2 = floor(-b / (2a))

> 打印 root1 和 root2

> 否则

> 打印 "imaginary" // 复根

> 结束

下面是上述公式的具体实现。

C++


CODEBLOCK_096f6d48

C


CODEBLOCK_7de95949

Java

`

import java.util.*;

public class Main {
    st
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/20254.html
点赞
0.00 平均评分 (0% 分数) - 0