Rýchle zhrnutie referátu

Článok popisuje metódu sečníc na hľadanie koreňov polynomických rovníc, ktorá je výkonnejšia ako binárne hľadanie. Táto metóda umožňuje hľadanie koreňov v intervaloch, ktoré nemusia byť monotónne, a zaručuje presné nájdenie koreňov pomocou spojitého charakteru polynomickej funkcie.

  • Metóda sečníc je výkonnejšia ako binárne hľadanie.
  • Nezávislosť na monotónnosti intervalu polynomickej rovnice.
  • Existencia koreňa je podmienená vzťahom f(a) * f(b) < 0.
  • Sečnica spája body [a, f(a)] a [b, f(b)].
  • Opakovaním krokov hľadáme presný koreň až do splnenia podmienky f(c) = 0.

V predchádzajúcom článku je opísané hľadanie koreňov polynomických rovníc pomocou takzvaného binárneho hľadania, pričom predpokladáme monotónnosť intervalu. V dnešnom článku si opíšeme oveľa výkonnejšiu metódu - metódu sečníc.

Hľadanie koreňov metódou sečníc má mnoho výhod oproti predchádzajúcej metóde. Snáď najväčšou výhodou je predpoklad, že skúmaný interval polynomickej rovnice nemusí byť monotónny. Vďaka tomu metódu možno využiť na vyhľadávanie koreňov v širokých intervaloch, nie len v aproximáciách.

O čo vlastne ide ? Metóda sečníc nehladá aproximácie koreňov, ale presné korene. Využíva pritom spojitý charakter polynomickej rovnice. Podobne, ako v prípade prvej metódy, aj v tomto prípade treba zadať interval < a , b >, v ktorom sa koreň zaručené nachádza.

Existencia koreňa je podmienená vzťahom f(a) . f(b) < 0, kde f je polynomická funkcia a čísla a, b sú hranice skúmaného intervalu riešení.

sloh/slohovy-postup/" class="wiki-link" title="Viac o: postup">Postup hľadania koreňa na intervale < a , b >:

  • 1. krok: Vytvorenie takzvanej "sečnice". Sečnica je úsečka, ktorá spája bod [a , f(a)] a bod [b , f(b)]. Oba body sú na funkcií definované. Sečnica je na obrázku znázornená zelenou farbou.

  • 2. krok: Další významný bod sečnice je bod, v ktorom sa sečnica pretína s osou x. Označme si x-ovú súradnicu tohto bodu ako c. Potom platí y = f(c) = 0, čiže bod na x-ovej súradnici leží. Pre výpočet tohto bodu si naprogramujme funkciu float sec (float x1, y1, x2, y2), kde [x1,y1] [x2,y2] sú body, ktoré definujú sečnicu:

float sec (float x1, float y1, float x2, float y2) { float c; c = x1 - y1 * (x2 - x1) / (y2 - y1); return c; }

# 3. krok: V predchádzajúcom kroru sme našli, kde sa sečnice pretne s x-ovou osou (bod [c,0]). Poďme teda zmenšiť interval : Ak sečnica preťala os v intervale a,b, presuňme bod a intervalu do bodu c # Ak c leží mimo , presuň b do bodu c

(c < a || c > b) ? b = c : a = c ;

Kroky 1., 2., 3. opakujeme dovtedy, pokiaľ funkcia f(c) = 0, prípadne f(c) eps);

printf("koren: %10.10f\n",c); return true; } }

int main() { // Stupen polynom. funkcie int stupen = 2; // Koeficient 0, 1, 2 stupna // pre rovnicu x^2 + 3x -460 float koef[] = {-460,3,2}; // interval float a = 0; float b = 100; // tolerancia float eps = 0.0001;

if (!polynom (stupen, koef, a, b, eps)) cout

🤔 Najčastejšie otázky k téme

Aké sú výhody metódy sečníc oproti binárnemu hľadaniu?

Metóda sečníc umožňuje hľadanie koreňov v intervaloch, ktoré nemusia byť monotónne, a poskytuje presné korene, nie len aproximácie.

Aký je základný predpoklad pre existenciu koreňa v intervale?

Existencia koreňa je podmienená vzťahom f(a) * f(b) < 0, kde f je polynomická funkcia a a, b sú hranice skúmaného intervalu.

Aký je postup pri hľadaní koreňa pomocou metódy sečníc?

Postup zahŕňa vytvorenie sečnice, nájdenie bodu, kde sa sečnica pretína s osou x, a následné zmenšovanie intervalu na základe hodnoty f(c), kým sa nedosiahne požadovaná presnosť.