Dada una función cuadrática ax 2 + bx + c . Encuentre el valor máximo y mínimo posible de la función cuando se varía x para todos los valores reales posibles.
Ejemplos:
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
Acercarse:
Q(x)=ax2 + bx + c. =a(x + b/(2a))2 + c-b2/(4a). first part second part
La función se divide en dos partes.
La primera parte es una función cuadrada perfecta. Puede haber dos casos:
- Caso 1: Si el valor de a es positivo.
- El valor máximo sería igual a Infinity.
- El valor mínimo de la función vendrá cuando la primera parte sea igual a cero porque el valor mínimo de una función cuadrada es cero.
- Caso 2: Si el valor de a es negativo.
- El valor mínimo sería igual a -Infinito.
- Dado que a es negativo, la tarea de maximizar la función cuadrada negativa. Nuevamente, el valor máximo de una función cuadrada negativa sería igual a cero, ya que sería un valor negativo para cualquier otro valor de x.
La segunda parte es un valor constante para una función cuadrática dada y, por lo tanto, no puede cambiar para ningún valor de x. Por lo tanto, se agregará en ambos casos. Por lo tanto, la respuesta al problema es:
If a > 0, Maxvalue = Infinity Minvalue = c - b2 / (4a) If a < 0, Maxvalue = c - b2 / (4a) Minvalue = -Infinity
A continuación se muestra la implementación del enfoque anterior:
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>
Producción:
Maxvalue = 0.25 Minvalue = -Infinity
Complejidad de tiempo: O(1)
Espacio Auxiliar: O(1)