C++程序 找到二次方程的根

C++程序 找到二次方程的根

什么是二次方程

二次方程是一个形如下面公式的方程:ax^2 + bx + c = 0,其中 abc 都是常数,x 是未知数。

下面是一个例子:

2x^2 + 5x + 2 = 0

找到二次方程的根

通过解二次方程,我们可以得到方程的两个根。这里只介绍基于公式法和因式分解法求二次方程根的方法。

公式法

根据求根公式,我们可以得到二次方程的根:

x_{1,2} = \frac{-b \pm \sqrt{b^2-4ac}}{2a}

我们可以把上面的公式写成 C ++ 代码,如下所示:

#include <iostream>
#include <cmath>

using namespace std;

int main() {
    double a = 2.0, b = 5.0, c = 2.0;
    double delta = b*b - 4*a*c;
    if(delta < 0) {
        cout << "没有实数解" << endl;
    } else if(delta == 0) {
        double x = -b / (2*a);
        cout << "x=" << x << endl;
    } else {
        double x1 = (-b + sqrt(delta)) / (2*a);
        double x2 = (-b - sqrt(delta)) / (2*a);
        cout << "x1=" << x1 << ", x2=" << x2 << endl;
    }
    return 0;
}

上述代码首先定义了第一、第二个和第三个系数 a、b 和 c 的值,然后计算方程的判别式 delta。

接下来,如果判别式 delta 小于 0,则方程没有实数解;如果判别式 delta 等于 0,则方程有两个相等的实数解;否则,方程有两个不相等的实数解。

因式分解法

如果我们能够因式分解出方程的两个因式,那么方程的两个根也就很容易得到了。

例如,对于上面的例子 2x^2 + 5x + 2 = 0,我们可以首先因式分解得到:

(2x + 1)(x + 2) = 0

从而,我们可以得到方程的两个实数根 x_1 = -\frac{1}{2}x_2 = -2

同样的,我们可以把上面的公式写成 C ++ 代码,如下所示:

#include <iostream>

using namespace std;

int main() {
    double a = 2.0, b = 5.0, c = 2.0;
    double x1, x2;
    // 因式分解法求根
    if(a != 0) {
        if(b*b >= 4*a*c) {
            x1 = (-b + sqrt(b*b-4*a*c)) / (2*a);
            x2 = (-b - sqrt(b*b-4*a*c)) / (2*a);
            cout << "x1=" << x1 << ", x2=" << x2 << endl;
        } else {
            cout << "没有实数解" << endl;
        }
    } else {
        if(b != 0) {
            x1 = x2 = -c / b;
            cout << "x=" << x1 << endl;
        } else {
            cout << "没有实数解" << endl;
        }
    }
    return 0;
}

上述代码中,我们首先检查系数 a 是否为 0。如果 a 不为 0,则我们根据判别式来分别计算方程的两个根。如果其判别式为负数,则方程没有实数根。

如果 a 为 0,但 b 不为 0,则方程还可以化为一元一次方程 bx + c = 0,从而得到解 x = -\frac{c}{b}。如果 ab 都为 0,则方程无意义。

总结

通过公式法和因式分解法,我们可以很容易地找到二次方程的根。无论哪种方法,都需要先计算出方程的判别式,然后根据判别式的值进行判断。在实际编程实践中,我们需要注意精度问题,并考虑用户输入的可能错误情况,如系数全为 0 的情况。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例