NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Lekce 11 - Výpočet řešení kvadratické rovnice

V minulé lekci, Výpočet libovolné mocniny, jsme si ukázali algoritmus na výpočet libovolné (n-té) mocniny.

Budeme řešit kvadratickou rovnici tvaru ax2+ bx + c = 0 v oboru reálných čísel pomocí diskriminantu.

Nejdříve zadáme z klávesnice koeficienty a (kvadratický člen), b (lineární člen), c (absolutní člen) a podmínkou ošetříme následující případy:

1.. a = 0, b = 0, c = 0 (všechny koeficienty jsou nulové)

- Řešením je každé reálné číslo.

2.. a != 0 (kvadratický člen je různý od nuly)

Pokud se b nebo c rovná nule, kvadratická rovnice je neúplná, ale lze ji spočítat. Rovnice má jedno, dvě nebo žádné řešení. Počet řešení vypočítáme pomocí diskriminantu a zanedbáme, že by to šlo v případě nulových koeficientů b a c malinko rychleji (už takhle je tam těch podmínek dost :) Kdyby to někomu vadilo, není problém upravit) d = b2 – 4ac

Pokud je d > 0, rovnice má 2 řešení:

  • x1 = (-b - sqrt(b2 – 4ac)) / 2a
  • x2 = (-b + sqrt(b2– 4ac)) / 2a

Pokud je d = 0, rovnice má jedno řešení:

  • x = ( -b + sqrt(b2 – 4ac)) / 2a

V případě d < 0:

  • Rovnice nemá v oboru reálných čísel řešení.

3.. a = 0 (kvadratický člen je nulový)

  • Bez kvadratického členu se nejedná o kvadratickou rovnici. Může jít buď o rovnici lineární nebo to rovnice vůbec není.

3..a) b != 0 (b je různé od nuly)

  • Jedná se o lineární rovnici a řešením je: x = -c / b

3..b) b = 0 (b je nulové)

  • Není to rovnice, není třeba řešit.

Vývojový diagram

Vývojový diagram hledání řešení kvadratické rovnice

Zdrojový kód

Kód v PASCALu:

uses crt;
var a,b,c,x1,x2,d : real;
                          { vyznam promennych : a,b,c . . . koeficienty
                                                x1,x2 . . . koreny rovnice
                                                d . . . . . diskriminant     }

begin
 clrscr;
 { ************************** zadavani koeficientu ************************* }
 writeln('Zadejte prosim koeficienty kvadraticke rovnice: ');
 write('a : ');
 readln(a);
 write('b : ');
 readln(b);
 write('c : ');
 readln(c);
 { *********************** osetreni koeficientu a vypocet ********************* }
 if (a = 0) and (b = 0) and (c = 0) then begin
  writeln('Toto neni kvadraticka rovnice');
  write('Vsechna realna cisla jsou resenim.');
 end else
 if (a = 0) then begin
  if (b <> 0) then
   write('Rovnice je linearni: x = ',-c/b);
    else
     write('Toto neni rovnice!');
 end else
 begin
  d:=sqr(b) - (4 * a * c);
  if (d > 0) then begin
   x1:=(-b - sqrt(sqr(b) -4 * a * c)) / (2 * a);
   x2:=(-b + sqrt(sqr(b) -4 * a * c)) / (2 * a);
   writeln('Rovnice ma dve reseni : x1 = ',x1);
   writeln('                        x2 = ',x2);
  end else
  if (d = 0) then begin
   x1:=(-b - sqrt(sqr(b) -4 * a * c)) / (2 * a);
   writeln('Rovnice ma jedno reseni : x = ',x1);
  end else
  writeln('Rovnice nema reseni v oboru realnych cisel');
 end;
end.

V další lekci, Převod čísel mezi číselnými soustavami, si ukážeme algoritmy pro převod čísel mezi číselnými soustavami.


 

Předchozí článek
Výpočet libovolné mocniny
Všechny články v sekci
Matematické algoritmy
Přeskočit článek
(nedoporučujeme)
Převod čísel mezi číselnými soustavami
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
22 hlasů
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity