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

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.


David se informační technologie naučil na