Výpočet řešení kvadratické rovnice
Algoritmy Matematické Výpočet řešení kvadratické rovnice


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í.
3a) b != 0 (b je různé od nuly)
Jedná se o lineární rovnici a řešením je : x = -c / b
3b) b = 0 (b je nulové)
Není to rovnice, není třeba řešit.
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.
Komentáře


Zobrazeno 10 zpráv z 10.