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.
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++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std;
// Function to print the Maximum and Minimum // values of the quadratic function 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
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 code int main()
{ double a = -1, b = 3, c = -2;
PrintMaxMinValue(a, b, c);
return 0;
} |
Java
// Java implementation of the above approach import 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
# Python3 implementation of the above approach # Function to print the Maximum and Minimum # values of the quadratic function def 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 code if __name__ = = "__main__" :
a = - 1 ; b = 3 ; c = - 2 ;
PrintMaxMinValue(a, b, c);
# This code is contributed by AnkitRai01 |
C#
// C# implementation of the above approach using 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. |
Javascript
<script> // Javascript implementation of the above approach // Function to print the Maximum and Minimum // values of the quadratic function function 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 Code var a = -1, b = 3, c = -2;
PrintMaxMinValue(a, b, c); // This code is contributed by Ankita saini </script> |
Output:
Maxvalue = 0.25 Minvalue = -Infinity
Time Complexity: O(1)
Auxiliary Space: O(1)
Recommended Articles