Programowanie i algorytmy

Pierwiastki równania kwadratowego

Zad. 2. Napisz program, który wyznaczy pierwiastki równania kwadratowego. W przypadku, gdy tych pierwiastków nie ma program powinien wyświetlić komunikat: "Brak pierwiastków".

Rozwiązanie

Rozpatrujemy następujące równanie:

{tex}ax^2+bx+c=0,\:gdzie\:a \neq 0{/tex}

Współczynnik a musi być różny od 0 ponieważ dla a = 0 otrzymujemy równanie liniowe.

Pierwiastkami równania kwadratowego (inaczej miejscami zerowymi lub rozwiązaniami równania) nazywamy takie miejsca na osi X, gdzie przecina się wykres funkcji. Inaczej mówiąc wartość y jest równa zero. Przy obliczaniu pierwiastków mamy trzy opcje.

Wszystko zależy od wyróżnika równania kwadratowego zwanego deltą. Wzór na deltę wygląda następująco:

{tex}\Delta = b^2-4ac{/tex}

Dla {tex}\Delta > 0{/tex} otrzymujemy dwa miejsca zerowe, które wyliczamy według wzorów:

{tex}x_1=\frac{-b-\sqrt{\Delta}}{2a}{/tex}

{tex}x_2=\frac{-b+\sqrt{\Delta}}{2a}{/tex}

Dla przykładu rozpatrzmy równanie:

{tex}x^2+x-2=0{/tex}

Współczynniki są równe:

{tex}a=1, b=1, c=-2{/tex},

a więc

{tex}\Delta=1^2-4 \cdot 1 \cdot (-2)=9{/tex}

{tex}x_1=\frac{-1-\sqrt{9}}{2 \cdot 1}=-2{/tex}

{tex}x_2=\frac{-1+\sqrt{9}}{2 \cdot 1}=1{/tex}

Wynika stąd, że wykres funkcji przetnie oś X w punktach: -2 i 1. Dodatkowo

{tex}a>0{/tex}

co sprawia, że ramiona paraboli będą skierowane do góry. Wykres tej funkcji wygląda następująco:

Wykres funkcji kwadratowej

Drugi przypadek mamy gdy {tex}\Delta=0{/tex}. Mamy wtedy jedno miejsce zerowe wyznaczane według wzoru:

{tex}x_0=\frac{-b}{2a}{/tex}

Rozpatrzmy równanie:

{tex}-2x^2+4x-2=0{/tex}

{tex}\Delta=4^2-4\cdot(-2)\cdot (-2)=0{/tex}

{tex}x_0=\frac{-4}{2\cdot (-2)}= 1{/tex}

Skoro

{tex}a<0{/tex}

więc ramiona paraboli skierowane są do domu i wykres ma tylko jeden punkt wspólny z osią OX.

Wykres danej funkcji wygląda następująco:

Wykres funkcji kwadratowej

Ostatni przypadek mamy w sytuacji gdy {tex}\Delta<0{/tex}.

Rozpatrzmy równanie:

{tex}x^2+x+1=0{/tex}

{tex}\Delta = 1^2 - 4\cdot1\cdot1 = -3 < 0{/tex}

Wynika stąd, że równanie nie posiada pierwiastków. Wykres wygląda następująco:

Wykres funkcji kwadratowej

 

Rozwiązanie problemu w języku C++:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
 
int main()
{
  double a, b, c, x1, x2, x0, delta;
 
  cout<<"Podaj współczynniki a, b i c: ";
  cin>>a>>b>>c;
 
  delta = b*b - 4*a*c;
 
  if(delta>0) //jeśli delta jest większa od 0 to mamy dwa miejsca zerowe
  {
    delta = sqrt(delta); //wyznaczamy pieriwastek z delty
    x1 = (-b - delta)/(2*a);
    x2 = (-b + delta)/(2*a);
    cout<<"Są dwa pierwiastki równania: "<<fixed<<setprecision(2)<<x1<<" "<<x2;  
  }
  else
    if(delta==0)
    {
      x0 = -b/(2*a);
      cout<<"Jest jeden pierwiastek: "<<fixed<<setprecision(2)<<x0;  
    }
    else
      cout<<"Brak pierwiastków";
  return 0;
}
 
 
 

powrót