Kvadratická rovnice

13. 1. 2014 00:00

Kvadratická rovnice - jeden z nejčastějších příkladů při učení se programování. 

Obecný zápis kvadratické rovnice: a*x2 + b*x + c = 0
Podívejme se však na problém z matematického hlediska, jejího řešení -> při řešení kvadratické rovnice nejprve určíme diskriminant -> D = b2 - 4*a*c 
Dalším krokem je již samotné zjištění kořenů, tedy rozložení rovnice do závorek -> (x - k1)*(x - k2) = 0 = a*x2 + b*x + c = 0
Kořeny určíme podle vzorce -> k1 = (-b + sqrt(D)) / 2ac; 
k2 = (-b - sqrt(D)) / 2ac

Už víme, jak matematicky, nyní jak naprogramovat. 

  1. Nejprve si načteme čísla a, b a c
  2. Vypočítáme diskriminant
  3. Zjistíme, zda je diskriminant menší jak nula -> pokud ano, řešení lze najít jen v komplexních číslech a program skončí
  4. Vypočítáme kořeny rovnice
  5. Zobrazíme kořeny a výsledný vzorec
Postup máme a jako poslední věc nám zbývá kód:
Program kvadrov;
 
Uses CRT;
Var a, b, c:integer;
    k1, k2, dis: real;
 
begin
 
clrscr;
 
write('Zadejte 1. cislo (ax^2): ');
readln(a);
write('Zadejte 2. cislo (bx): ');
readln(b);
write('Zadejte 3. cislo (c): ');
readln(c);
 
dis:=(b*b) - 4*a*c;
if (dis < 0)
   then
   writeln('Rovnici lze resit jenom v komplex. cislech. A TO JA ZATIM NEDOKAZU :( !!!. ')
   else
   begin
      k1:= (-b + sqrt(dis)) / 2*a;
      k2:= (-b - sqrt(dis)) / 2*a;
 
   writeln(k1:5:5);
   writeln(k2:5:5);
   writeln('Vysledny vzorec: (x+', -k1:5:5, ')*(x+', -k2:5:5,')');
 
   readln;
   end;
 
end.                     

Dalším příkladem bude komplexní kvadratická rovnice, která nám rozšíří obor možných řešení rovnic. Výsledkem těchto matematických úloh bude program, který bude mít vlastní menu a uživatel si bude vybírat, co bude počítat.