Maximum and Minimum value of a quadratic function

31 May, 2022
Given a quadratic function ax2 + bx + c. Find the maximum and minimum value of the function possible when x is varied for all real values possible.
Examples:
Input: a = 1, b = -4, c = 4
Output:
Maxvalue = Infinity
Minvalue = 0
Quadratic function given is x2 -4x + 4
At x = 2, value of the function is equal to zero.

Input: a = -1, b = 3, c = -2
Output:
Maxvalue = 0.25
Minvalue = -Infinity
Approach: 
 Q(x)=ax2 + bx + c.
     =a(x + b/(2a))2      +     c-b2/(4a).
       first part             second part
The function is broken into two parts. The first part is a perfect square function. There can be two cases: 
Case 1: If value of a is positive. The maximum value would be equal to Infinity.The minimum value of the function will come when the first part is equal to zero because the minimum value of a square function is zero.Case 2: If value of a is negative. The minimum value would be equal to -Infinity.Since a is negative, the task to maximize the negative square function. Again maximum value of a negative square function would be equal to zero as it would be a negative value for any other value of x.
Case 1: If value of a is positive. The maximum value would be equal to Infinity.The minimum value of the function will come when the first part is equal to zero because the minimum value of a square function is zero.
The maximum value would be equal to Infinity.
The minimum value of the function will come when the first part is equal to zero because the minimum value of a square function is zero.
Case 2: If value of a is negative. The minimum value would be equal to -Infinity.Since a is negative, the task to maximize the negative square function. Again maximum value of a negative square function would be equal to zero as it would be a negative value for any other value of x.
The minimum value would be equal to -Infinity.
Since a is negative, the task to maximize the negative square function. Again maximum value of a negative square function would be equal to zero as it would be a negative value for any other value of x.
The second part is a constant value for a given quadratic function and hence cannot change for any value of x. Hence, it will be added in both cases. Hence, the answer to the problem is:
If a > 0,
    Maxvalue = Infinity
    Minvalue = c - b2 / (4a)
If a < 0,
    Maxvalue = c - b2 / (4a)
    Minvalue = -Infinity
Below is the implementation of the above approach: 
C++
Java
Python3
C#
Javascript
// C++ implementation of the above approach#include <bits/stdc++.h>using namespace std; // Function to print the Maximum and Minimum// values of the quadratic functionvoid PrintMaxMinValue(double a, double b, double c){     // Calculate the value of second part    double secondPart = c * 1.0 - (b * b / (4.0 * a));     // Print the values    if (a > 0) {         // Open upward parabola function        cout << "Maxvalue = "             << "Infinity\n";        cout << "Minvalue = " << secondPart;    }    else if (a < 0) {         // Open downward parabola function        cout << "Maxvalue = " << secondPart << "\n";        cout << "Minvalue = "             << "-Infinity";    }    else {         // If a=0 then it is not a quadratic function        cout << "Not a quadratic function\n";    }} // Driver codeint main(){    double a = -1, b = 3, c = -2;     PrintMaxMinValue(a, b, c);     return 0;}
// Java implementation of the above approachimport java.util.*; class GFG{     // Function to print the Maximum and Minimum    // values of the quadratic function    static void PrintMaxMinValue(double a, double b, double c)    {         // Calculate the value of second part        double secondPart = c * 1.0 - (b * b / (4.0 * a));         // Print the values        if (a > 0)        {             // Open upward parabola function            System.out.print("Maxvalue = "                    + "Infinity\n");            System.out.print("Minvalue = " + secondPart);        }        else if (a < 0)        {             // Open downward parabola function            System.out.print("Maxvalue = " + secondPart + "\n");            System.out.print("Minvalue = "                    + "-Infinity");        }        else        {             // If a=0 then it is not a quadratic function            System.out.print("Not a quadratic function\n");        }    }     // Driver code    public static void main(String[] args)    {        double a = -1, b = 3, c = -2;         PrintMaxMinValue(a, b, c);    }} // This code is contributed by Rajput-Ji
# Python3 implementation of the above approach # Function to print the Maximum and Minimum# values of the quadratic functiondef PrintMaxMinValue(a, b, c) :     # Calculate the value of second part    secondPart = c * 1.0 - (b * b / (4.0 * a));         # Print the values    if (a > 0) :                 # Open upward parabola function        print("Maxvalue =", "Infinity");        print("Minvalue = ", secondPart);             elif (a < 0) :                 # Open downward parabola function        print("Maxvalue = ", secondPart);        print("Minvalue =", "-Infinity");             else :                 # If a=0 then it is not a quadratic function        print("Not a quadratic function"); # Driver codeif __name__ == "__main__" :    a = -1; b = 3; c = -2;     PrintMaxMinValue(a, b, c); # This code is contributed by AnkitRai01
// C# implementation of the above approachusing System; class GFG{         // Function to print the Maximum and Minimum    // values of the quadratic function    static void PrintMaxMinValue(double a, double b, double c)    {         // Calculate the value of second part        double secondPart = c * 1.0 - (b * b / (4.0 * a));         // Print the values        if (a > 0)        {             // Open upward parabola function            Console.Write("Maxvalue = "                    + "Infinity\n");            Console.Write("Minvalue = " + secondPart);        }        else if (a < 0)        {             // Open downward parabola function            Console.Write("Maxvalue = " + secondPart + "\n");            Console.Write("Minvalue = "                    + "-Infinity");        }        else        {             // If a=0 then it is not a quadratic function            Console.Write("Not a quadratic function\n");        }    }     // Driver code    static public void Main ()    {        double a = -1, b = 3, c = -2;        PrintMaxMinValue(a, b, c);    }} // This code is contributed by ajit.
<script> // Javascript implementation of the above approach // Function to print the Maximum and Minimum// values of the quadratic functionfunction PrintMaxMinValue(a, b, c){         // Calculate the value of second part    var secondPart = c * 1.0 -                    (b * b / (4.0 * a));     // Print the values    if (a > 0)    {         // Open upward parabola function        document.write("Maxvalue = " +                       "Infinity" + "<br>");        document.write("Minvalue = " +                       secondPart);    }    else if (a < 0)    {         // Open downward parabola function        document.write("Maxvalue = " +                       secondPart + "<br>");        document.write("Minvalue = " +                       "-Infinity");    }    else    {                 // If a=0 then it is not a quadratic function        document.write("Not a quadratic function\n");    }} // Driver Codevar a = -1, b = 3, c = -2; PrintMaxMinValue(a, b, c); // This code is contributed by Ankita saini </script>
Maxvalue = 0.25
Minvalue = -Infinity
 
Time Complexity: O(1)
Auxiliary Space: O(1)
Rajput-Ji
jit_t
ankthon
Akanksha_Rai
ankita_saini
subhamkumarm348
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Maximum Manhattan distance between a distinct pair from N coordinates
Area of the largest rectangle possible from given coordinates
Total area of two overlapping rectangles
Equation of circle when three points on the circle are given
Maximum distance between two points in coordinate plane using Rotating Caliper's Method
Program for Fibonacci numbers
Set in C++ Standard Template Library (STL)
Write a program to print all permutations of a given string
C++ Data Types
Merge two sorted arrays