1. KvadratickaRovnice

1.1. Analýza a návrh řešení

Obecný předpis kvadratické rovnice je: 

  a \cdot x ^2+b \cdot x+c=0

Uživatel bude v průběhu programu zadávat jednotlivé koeficienty v kvadratické rovnici - viz Obrázek 1:

  • Koeficient  a , který představuje koeficient v kvadratickém členu
  • Koeficient  b , který představuje koeficient v lineárním členu
  • Konstanta  c , která představuje absolutní člen

Ve vývojovém diagramu nejsou zaznamenány výjimky, které mohou být vyvolány chybnou konverzí zadaného textu na reálné číslo, představující jednotlivé koeficienty kvadratické rovnice. Konverzi na reálné číslo lze také ve Flowgorithm provést pomocí příkazu (zavolání funkce) ToReal (standardně však konverzi do příslušného datového typu provádí Flowgorithm sám). Tato funkce přijímá textový řetězec. Pokud nastane chyba při konverzi, aplikace sama vyvolá výjimku, ve které bude uživatele informovat o nastalém problému. 

Pokud uživatel zadal  a=0 , pak se jedná o lineární rovnici:

  b \cdot x+c=0

Bude tedy volán podprogram (procedura) LinearniRovnice, kterému budou předány parametry b a c. Pokud je  a \neq 0  , potom musí být vypočten diskriminant:

  d= b^2-4 \cdot a \cdot c  

Na základě hodnoty diskriminantu se bude rozhodovat, který podprogram bude volán. Při splnění podmínky  D  0 jsou volány následující podprogramy:

  • Pokud  D > 0   je volána procedura pro výpočet reálných kořenů  RealneKoreny  
  • Pokud  D < 0   je volána procedura pro výpočet komplexních kořenů KomplexniKoreny

V případu kdy  D = 0 je volána procedura pro výpočet dvojitého kořenu kvadratické rovnice DvojityKoren 

Pokud uživatel zadá  a=0 , pak se jedná o lineární rovnici.  V tomto případě bude volán podprogram LinearniRovnice.

Hlavní program KvadratickaRovnice pro výpočet kořenů kvadratické, nebo lineární rovnice

Obrázek 1: Hlavní program KvadratickaRovnice pro výpočet kořenů kvadratické, nebo lineární rovnice

Pokud koeficient kvadratického členu je roven nule  a = 0 , potom je volán podprogram (procedura) LinearniRovnice, který vypočítá kořeny na základě předaných parametrů. Formální parametry jsme pro přehlednost pojmenovali stejnými identifikátory, jakými jsou pojmenovány skutečné parametry v hlavním programu. Máme tedy tři možnosti při výpočtu kořenů lineární rovnice:

  • Pro  b  0 je řešením  x=-\frac{c}{b}
  • Pro  b = 0 a  c = 0 je řešením každé  x
  • Pro  b = 0   a  c  0 není řešením žádné  x

Na základě předchozích výpočtů vidíme, že výpočet kořenu závisí na hodnotách obou parametrů, tj. zda jsou rovny nule. Použitím dvou bloků rozhodování můžeme sestavit vývojový diagram podprogramu LinearniRovnice - viz Obrázek 2. 

Podprogram LinearniRovnice - výpočet kořenů lineární rovnice

Obrázek 2: Podprogram LinearniRovnice - výpočet kořenů lineární rovnice

Pokud platí, že  a  0 je vypočten diskriminant. Pokud diskriminant není roven nule a zároveň je větší než 0, je proveden výpočet reálných kořenů kvadratické rovnice na základě vzorce:

  x_1,_2 = \frac{-b \pm \sqrt{b^2 - 4 \cdot a \cdot c} }{2 \cdot a}

Ve vzorci pod odmocninou je použit výpočet diskriminantu, ale poněvadž jsme si již diskriminant vypočítali v hlavním programu, je jednodušší diskriminant předat podprogramu, který jeho hodnotu ve svém výpočtu využije - viz Obrázek 3. 

Podprogram RealneKoreny - výpočet reálných kořenů kvadratické rovnice

Obrázek 3: Podprogram RealneKoreny - výpočet reálných kořenů kvadratické rovnice

Pro případ, že je  D < 0 ,  je volána procedura pro výpočet komplexních kořenů KomplexniKoreny, které jsou předány stejné parametry jako v případě předchozí procedury RealneKoreny.  Komplexně sdružené kořeny se skládají z reálné a imaginární části:

  x_1,_2 = \frac{-b \pm i \sqrt[]{-D} }{2 \cdot a }

Následující vývojový diagram popisuje podstatu výpočtu a zobrazení jednotlivých kořenů - viz Obrázek 4.

Podprogram KomplexniKoreny - výpočet komplexně sdružených kořenů kvadratické rovnice

Obrázek 4: Podprogram KomplexniKoreny - výpočet komplexně sdružených kořenů kvadratické rovnice

Poslední volanou procedurou je podprogram DvojityKoren a to za podmínky, že  D = 0 . V tomto podprogramu je vypočten a vypsán dvojitý reálný kořen kvadratické rovnice:

 x = \frac{-b}{2 \cdot a }

Následující vývojový diagram zachycuje podstatu řešení - viz Obrázek 5.

Podprogram DvojityKoren - výpočet dvojitého kořene kvadratické rovnice

Obrázek 5: Podprogram DvojityKoren - výpočet dvojitého kořene kvadratické rovnice