Tutorialspoint.dev

Program to find the Roots of Quadratic equation

Given a quadratic equation in the form ax2 + bx + c, find roots of it.

Examples :

Input  :  a = 1, b = -2, c = 1
Output :  Roots are real and same
          1

Input  :  a = 1, b = 7, c = 12
Output :  Roots are real and different
          -3, -4

Input  :  a = 1, b = 1, c = 1
Output :  Roots are complex 
          -0.5 + i1.73205
          -0.5 - i1.73205  

Below is direct formula for finding roots of quadratic equation.

x=frac{-bpm sqrt{b^2-4ac}}{2a}
There are following important cases.

If b*b < 4*a*c, then roots are complex
(not real).
For example roots of x2 + x + 1, roots are
-0.5 + i1.73205 and -0.5 - i1.73205

If b*b == 4*a*c, then roots are real 
and both roots are same.
For example, roots of x2 - 2x + 1 are 1 and 1

If b*b > 4*a*c, then roots are real 
and different.
For example, roots of x2 - 7x - 12 are 3 and 4

Below is the implementation of above formula.

C

/* C program to find roots of a quadratic equation */
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
  
  
// 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)
    {
        printf("Invalid");
        return;
    }
  
    int d = b*b - 4*a*c;
    double sqrt_val = sqrt(abs(d));
  
    if (d > 0)
    {
        printf("Roots are real and different ");
        printf("%f %f",(double)(-b + sqrt_val)/(2*a)
            , (double)(-b - sqrt_val)/(2*a));
    }
    else if (d == 0)
    {
        printf("Roots are real and same ");
        printf("%f",-(double)b / (2*a));
    }
    else // d < 0
    {
        printf("Roots are complex ");
        printf("%f + i%f %f - i%f", -(double)b / (2*a),sqrt_val
            ,-(double)b / (2*a), sqrt_val);
    }
}
  
// Driver code
int main()
{
    int a = 1, b = -7, c = 12;
    findRoots(a, b, c);
    return 0;
}

C++

/* 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
              << " "  << -(double)b / (2*a) << " - i"
              << sqrt_val;
     }
}
  
// Driver code
int main()
{
    int a = 1, b = -7, c = 12;
    findRoots(a, b, c);
    return 0;
}

Java

// Java program to find roots 
//of a quadratic equation 
  
import java.io.*;
import static java.lang.Math.*;
class Quadratic
{
  
    // 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)
     {
        System.out.println("Invalid");
        return;
     }
   
     int d  = b*b - 4*a*c;
     double sqrt_val = sqrt(abs(d));
   
     if (d > 0)
     {
        System.out.println("Roots are real and different ");
  
        System.out.println((double)(-b + sqrt_val) / (2 * a) + " " 
                            + (double)(-b - sqrt_val) / (2 * a));
     }
     else // d < 0
     {
        System.out.println("Roots are complex ");
  
        System.out.println( -(double)b / ( 2 * a ) + " + i" 
                          + sqrt_val + " "  + -(double)b / ( 2 * a )
                          + " - i" + sqrt_val);
     }
    }
   
 // Driver code
 public static void main(String args[])
    {
       Quadratic obj = new Quadratic();
       int a = 1, b = -7, c = 12;
       obj.findRoots(a, b, c);
    }
}
  
//This code is contributed by Anshika Goyal.

/div>

Python3

# Python program to find roots
# of a quadratic equation
import math
  
# Prints roots of quadratic equation 
# ax*2 + bx + x
def findRoots( a, b, c):
  
    # If a is 0, then equation is 
    # not quadratic, but linear
    if a == 0:
        print("Invalid")
        return -1
    d = b * b - 4 * a * c
    sqrt_val = math.sqrt(abs(d))
      
    if d > 0:
        print("Roots are real and different ")
        print((-b + sqrt_val)/(2 * a))
        print((-b - sqrt_val)/(2 * a))
    elif d == 0:
        print("Roots are real and same")
        print(-b / (2*a))
    else: #d<0
        print("Roots are complex")
        print(- b / (2*a) , " + i", sqrt_val)
        print(- b / (2*a) , " - i", sqrt_val)
  
# Driver Program
a = 1
b = -7
c = 12
findRoots(a, b, c)
  
# This code is contributed by Sharad Bhardwaj.

C#

// C# program to find roots 
// of a quadratic equation 
using System;
  
class Quadratic {
  
// 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)
    {
        Console.Write("Invalid");
        return;
    }
  
    int d = b*b - 4*a*c;
    double sqrt_val = Math.Abs(d);
  
    if (d > 0)
    {
    Console.Write("Roots are real and different ");
  
        Console.Write((double)(-b + sqrt_val) / 
                      (2 * a) + " "    + (double)
                      (-b - sqrt_val) / (2 * a));
    }
      
    // d < 0
    else 
    {
        Console.Write("Roots are complex ");
  
        Console.Write( -(double)b / ( 2 * a ) + 
                    " + i" + sqrt_val + " " 
                       -(double)b / ( 2 * a ) + 
                            " - i" + sqrt_val);
    }
    }
  
// Driver code
public static void Main()
{
    Quadratic obj = new Quadratic();
    int a = 1, b = -7, c = 12;
    obj.findRoots(a, b, c);
}
}
  
// This code is contributed by nitin mittal.

PHP

<?php
// PHP program to find roots
// of a quadratic equation
  
// Prints roots of quadratic 
// equation ax*2 + bx + x
function findRoots($a, $b, $c)
{
    // If a is 0, then equation is 
    // not quadratic, but linear
    if ($a == 0)
    {
        echo "Invalid";
        return;
    }
  
    $d = $b * $b - 4 * $a * $c;
    $sqrt_val = sqrt(abs($d));
  
    if ($d > 0)
    {
        echo "Roots are real and "
                    "different ";
        echo (-$b + $sqrt_val) / (2 * $a) , " "
             (-$b - $sqrt_val) / (2 * $a);
    }
    else if ($d == 0)
    {
        echo "Roots are real and same ";
        echo -$b / (2 * $a);
    }
      
    // d < 0
    else 
    {
        echo "Roots are complex ";
        echo -$b / (2 * $a) , " + i"
              $sqrt_val, " " , -$b / (2 * $a), 
                             " - i", $sqrt_val;
    }
}
  
// Driver code
$a = 1; $b = -7 ;$c = 12;
findRoots($a, $b, $c);
  
// This code is contributed
// by nitin mittal.
?>


Output :

Roots are real and different 
4
3


This article is attributed to GeeksforGeeks.org

You Might Also Like

leave a comment

code

0 Comments

load comments

Subscribe to Our Newsletter