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

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

给定形式为 ax 2 + bx + c ** 的二次方程,找到它的 **根

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

Examples :

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

输出 : 根是实数且相同

1

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

输出 : 根是实数且不同

-3, -4

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

输出 : 根是复数

-0.5 + i1.73205

-0.5 – i1.73205
以下是几个重要的情况。

如果 b*b < 4*a*c,则根是复数
(不是实数)。
例如,x2 + x + 1的根是
-0.5 + i0.86603和-0.5 – i0.86603

如果 b*b == 4*a*c ,则根是实数
并且两个根是相同的。
例如,x2 – 2x + 1的根是1和1

如果 b*b > 4*a*c,则根是实数
并且不同。
例如,x2 – 7x – 12的根是3和4

以下是上述公式的实现。

// C++ program to find roots of 
// a quadratic equation 
#include <bits/stdc++.h>
using namespace std;
  
// Prints roots of quadratic equation 
// ax*2 + bx + x
void findRoots(int a, int b, int c)
{
    // If a is 0, then equation is 
    // not quadratic, but linear
    if (a == 0) 
    {
        cout << "Invalid";
        return;
    }
  
    int d = b * b - 4 * a * c;
    double sqrt_val = sqrt(abs(d));
  
    if (d > 0) 
    {
        cout << "Roots are real and different ";
        cout << (double)(-b + sqrt_val) / (2 * a) << 
                 "" << (double)(-b - sqrt_val) / (2 * a);
    }
    else if (d == 0) 
    {
        cout << "Roots are real and same ";
        cout << -(double)b / (2 * a);
    }
    else // d < 0
    {
        cout << "Roots are complex ";
        cout << -(double)b / (2 * a) << 
                " + i" << sqrt_val / (2 * a) << 
                "" << -(double)b / (2 * a) << 
                " - i" << sqrt_val / (2 * a) ;
    }
}
  
// Driver code
int main()
{
    int a = 1, b = -7, c = 12;
    
    // Function call
    findRoots(a, b, c);
    return 0;
}  

输出

Roots are real and different 
4.000000
3.000000

时间复杂度: O(log(D)),其中 D 是给定二次方程的鉴别式。

辅助空间: O(1)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

C++ 示例