Výpočet riešenie kvadratickej rovnice
V minulej lekcii, LU rozklad, vlastné čísla a definitnost matíc , sme sa naučili robiť LU rozklad, ukázali si jeho aplikácie a dozvedeli sa, čo sú to vlastné čísla a definitnost matíc.
Budeme riešiť kvadratickú rovnicu tvaru ax 2 + bx + c = 0 v obore reálnych čísel pomocou diskriminant.
Najskôr zadáme z klávesnice koeficienty a (kvadratický člen), b (lineárne člen), c (absolútny člen) a podmienkou ošetríme nasledujúce prípady:
- a = 0, b = 0, c = 0 (všetky koeficienty sú nulové)
- Riešením je každé reálne číslo.
- a! = 0 (kvadratický člen je rôzny od nuly)
Ak sa b alebo c rovná nule, kvadratická rovnica je neúplná, ale možno ju
spočítať. Rovnica má jedno, dve alebo žiadne riešenie. Počet riešenie
vypočítame pomocou diskriminant a zanedbáme, že by to išlo v prípade
nulových koeficientov bac málinko rýchlejšie (už takto je tam tých
podmienok dosť
Keby to
niekomu vadilo, nie je problém upraviť)
d = b 2 - 4ac.
Ak je d> 0, rovnica má 2 riešenia:
- x1 = (-b - sqrt (b 2 - 4ac)) / 2a
- x2 = (-b + sqrt (b 2 - 4ac)) / 2a
Ak je d = 0, rovnica má jedno riešenie:
- x = (-b + sqrt (b 2 - 4ac)) / 2a
V prípade d <0:
- Rovnica nemá v obore reálnych čísel riešenia.
- a = 0 (kvadratický člen je nulový)
Bez kvadratického členovi sa nejedná o kvadratickú rovnicu. Môže ísť buď o rovnicu lineárne alebo to rovnica vôbec nie je.
3a) b! = 0 (b je rôzne od nuly)
Jedná sa o lineárny rovnicu a riešením je: x = -c / b
3b) b = 0 (b je nulové)
Nie je to rovnice, nie je potrebné riešiť.
Vývojový diagram

Zdrojový kód [PASCAL]
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.

David sa informačné technológie naučil na