Kvadratická rovnice
Kvadratická funkce y=x^2 - 4x + 3
Kvadratická funkce y = x2 - 4x + 3

Kvadratická rovnice o jedné neznámé je algebraická rovnice druhého řádu ve tvaru ax^{2} + bx + c, kde a, b, c jsou reálné koeficienty. Kvadratická rovnice má v oboru reálných čísel 0, 1 nebo 2 řešení. Za předpokladu, že je koeficient a nulový, hovoříme o lineární rovnici.

Kvadratická funkce je vždy popsána parabolou. Za předpokladu, že je a kladné, pak je parabola konvexní, v opačném případě je konkávní.

Řešení

Nejprve spočítáme diskriminant, dle vzorce

D = b^{2} - 4ac

Pokud je diskriminant záporný, pak rovnice nemá řešení v oboru reálných čísel.

Pokud je diskriminant nulový, pak má rovnice právě jedno dvojnásobné řešení:

x ={-b \\over {2a}}

Pokud je diskriminant kladný, pak má rovnice dvě různá řešení:


x_{1,2} = \\begin{cases} 
{{-b + \\sqrt D} \\over {2a}} 
\\\\
{{-b - \\sqrt D} \\over {2a}}
\\end{cases}

Příklad

Zjistěte kořeny rovnice x^2 - 4x + 3 = 0.

Nejprve vypočítáme diskriminant:

D = b^{2} - 4ac = 4^2 - 4 \\cdot 1 \\cdot 3 = 16 - 12 = 4

Diskriminant je kladný, rovnice má dvě řešení v oboru reálných čísel.


x_{1,2} = \\begin{cases}
{{{-b + \\sqrt D} \\over {2a}} = {{4 + \\sqrt 4} \\over 2} = 3} \\\\
{{{-b - \\sqrt D} \\over {2a}} = {{4 - \\sqrt 4} \\over 2} = 1}
\\end{cases}

Kód

    /**
     * Resi kvadratickou rovnici o jedne nezname ve tvaru
     * ax^2 + bx + c = 0
     * @param a
     * @param b
     * @param c
     * @return pole realnych korenu, null - pokud nema rovnice reseni v oboru
     * realnych cisel
     */
    public static double[] solveQuadraticEquation(double a, double b, double c) {
        double d = b*b - 4*a*c; //diskriminant
        if(d < 0) {
            return null;
        } else if (d == 0) {
            double[] result = {-b/2*a};
            return result;
        } else {
            double[] result = {(-b + Math.sqrt(d))/(2*a), (-b - Math.sqrt(d))/(2*a)};
            return result;
        }
    }
       /**
         * Resi kvadratickou rovnici o jedne nezname ve tvaru
         * ax^2 + bx + c = 0
         * @param a
         * @param b
         * @param c
         * @return pole realnych korenu, null - pokud nema rovnice reseni v oboru
         * realnych cisel
         */
        public static double[] SolveQuadraticEquation(double a, double b, double c)
        {
            double d = b * b - 4 * a * c; //diskriminant
            if (d < 0)
            {
                return null;
            }
            else if (d == 0)
            {
                double[] result = { -b / 2 * a };
                return result;
            }
            else
            {
                double[] result = { (-b + Math.Sqrt(d)) / (2 * a), (-b - Math.Sqrt(d)) / (2 * a) };
                return result;
            }
        }
        /** Autor: Vaclav Kejr */
        public Complex[] Kvadraticka(double[] polynom)
        {
            try
            {
                // Výpočet kvadratické rovnice.
                Complex koren1 = new Complex();
                Complex koren2 = new Complex();
                Complex[] koreny = new Complex[2];
                double real1 = 0.0;
                double real2 = 0.0;
                double imag1 = 0.0;
                double imag2 = 0.0;
                double disc = 0.0;
                const double epsilon = 1E-14;
                if (Math.Abs(polynom[1]) > epsilon && Math.Abs(polynom[2]) > epsilon)
                {
                    disc = Math.Pow(polynom[1], 2) - 4.0 * polynom[0] * polynom[2];
                    if (disc > 0 && disc > epsilon)
                    {
                        real1 = (-polynom[1] + Math.Sqrt(disc)) / (2.0 * polynom[0]);
                        real2 = (-polynom[1] - Math.Sqrt(disc)) / (2.0 * polynom[0]);
                        imag1 = 0.0;
                        imag2 = imag1;
                        koren1 = new Complex(real1, imag1);
                        koren2 = new Complex(real2, imag2);
                    }
                    else if (disc < 0 && Math.Abs(disc) > epsilon)
                    {
                        // Reálná část komplexně sdruženého kořene.
                        real1 = -polynom[1] / (2.0 * polynom[0]);
                        real2 = -polynom[1] / (2.0 * polynom[0]);
                        // Imaginární část komplexně sdruženého kořene.
                        imag1 = Math.Sqrt(Math.Abs(disc)) / (2.0 * polynom[0]);
                        imag2 = -Math.Sqrt(Math.Abs(disc)) / (2.0 * polynom[0]);
                        koren1 = new Complex(real1, imag1);
                        koren2 = new Complex(real2, imag2);
                    }
                    else if (disc > 0 && disc <= epsilon)
                    {
                        real1 = -polynom[1] / (2.0 * polynom[0]);
                        real2 = real1;
                        imag1 = 0.0;
                        imag2 = imag1;
                        koren1 = new Complex(real1, imag1);
                        koren2 = new Complex(real2, imag2);
                    }
                    else if (disc < 0 && Math.Abs(disc) <= epsilon)
                    {
                        real1 = 0.0;
                        real2 = real1;
                        imag1 = -polynom[1] / (2.0 * polynom[0]);
                        imag2 = imag1;
                        koren1 = new Complex(real1, imag1);
                        koren2 = new Complex(real2, imag2);
                    }
                }
                else
                {
                    throw new ArgumentException("Koeficienty polynomu jsou příliš malé !", polynom[1].ToString());
                }
                koreny[0] = koren1;
                koreny[1] = koren2;
                return koreny;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Complex[] koreny = new Complex[2];
                return koreny;
            }
        }
        
/**
 * Kvadraticka rovnice o jedne nezname ve tvaru ax^2 + bx + c = 0
 * @param $a
 * @param $b
 * @param $c
 * @return pole realnych korenu, NULL - pokud nema rovnice reseni v oboru realnych cisel
 * @author Thomas (www.adamjak.net)
 */
function solve_quadratic_equation($a, $b, $c){
    $d = $b*$b - 4*$a*$c; //diskriminant
    if($d < 0) {
        return NULL;
    } else if ($d == 0){
        $result = (-$b/2*$a);
        return $result;
    } else {
        $result = ((-$b + sqrt($d))/(2*$a) . (-$b - sqrt($d))/(2*$a));
        return $result;
    }
}







Doporučujeme