Valor máximo y mínimo de una función cuadrática

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: 

  1. 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.
  2. 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)

Publicación traducida automáticamente

Artículo escrito por CrazyPro y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *