Metoda sečen

Metoda sečen je iterační numerická metoda užívaná v numerické matematice k hledání kořene funkce jedné reálné proměnné (tj. hledání nějakého řešení rovnice f ( x ) = 0 {\displaystyle f(x)=0} ). K nalezení řešení je obvykle potřeba méně iterací než u metody půlení intervalů. Jako u jiných numerických metod, ani metoda sečen není univerzální a může nastat případ, kdy nekonverguje ke správnému řešení. V těchto případech je nutné použít jinou numerickou metodu.

Popis algoritmu

Jak funguje metoda sečen

Na začátku je zapotřebí určit dvě počáteční hodnoty x 0 {\displaystyle x_{0}} a x 1 {\displaystyle x_{1}} , které by měly být co nejblíže řešení rovnice f ( x ) = 0 {\displaystyle f(x)=0} . Tento kořen nemusí ležet mezi hodnotami x 0 {\displaystyle x_{0}} a x 1 {\displaystyle x_{1}} . Pokud však je funkce f {\displaystyle f} spojitá a její funkční hodnoty v bodech x 0 {\displaystyle x_{0}} a x 1 {\displaystyle x_{1}} mají opačná znaménka, nachází se v intervalu ( x 0 , x 1 ) {\displaystyle (x_{0},x_{1})} alespoň jeden kořen. Sečna je v tomto případě lineární interpolací funkce f {\displaystyle f} . Nejsou-li tyto podmínky splněny, výpočet metodou sečen může selhat (a funkce ani nemusí mít reálný kořen).

Pomocí bodů x 0 {\displaystyle x_{0}} a x 1 {\displaystyle x_{1}} je dána rovnice sečny ke grafu funkce f ( x ) = 0 {\displaystyle f(x)=0} v bodech P 0 = [ x 0 , f ( x 0 ) ] {\displaystyle P_{0}=[x_{0},f(x_{0})]} a P 1 = [ x 1 , f ( x 1 ) ] {\displaystyle P_{1}=[x_{1},f(x_{1})]} ve tvaru:

y = f ( x 1 ) + f ( x 1 ) f ( x 0 ) x 1 x 0 ( x x 1 ) {\displaystyle y=f(x_{1})+{\frac {f(x_{1})-f(x_{0})}{x_{1}-x_{0}}}(x-x_{1})} .

V druhé iteraci musíme určit hodnotu x 2 {\displaystyle x_{2}} . Hodnota x 2 {\displaystyle x_{2}} je průsečíkem sečny dané body x 0 {\displaystyle x_{0}} a x 1 {\displaystyle x_{1}} a osy x. Stačí do rovnice sečny dosadit y = 0 {\displaystyle y=0} a vyjádřit x {\displaystyle x} . Dostaneme rovnici:

x = x 1 f ( x 1 ) ( x 1 x 0 ) f ( x 1 ) f ( x 0 ) {\displaystyle x=x_{1}-{\frac {f(x_{1})(x_{1}-x_{0})}{f(x_{1})-f(x_{0})}}} ,

jejímž řešením je hledaná hodnota x 2 {\displaystyle x_{2}} . Dále pokračujeme v algoritmu, kde pro n > 0 {\displaystyle n>0} se hodnota x n + 1 {\displaystyle x_{n+1}} vypočítá z hodnot x n {\displaystyle x_{n}} a x n 1 {\displaystyle x_{n-1}} pomocí vztahu:

x n + 1 = x n f ( x n ) ( x n x n 1 ) f ( x n ) f ( x n 1 ) {\displaystyle x_{n+1}=x_{n}-{\frac {f(x_{n})(x_{n}-x_{n-1})}{f(x_{n})-f(x_{n-1})}}} .

V algoritmu se pokračuje, dokud není splněna jedna z ukončujících podmínek.

Ukončení výpočtu

Metoda sečen je přibližná metoda. Výpočet se obvykle ukončuje, pokud absolutní hodnota rozdílu hodnot x n {\displaystyle x_{n}} a x n 1 {\displaystyle x_{n-1}} je menší než požadovaná přesnost výsledku p > 0 {\displaystyle p>0} tedy | x n x n 1 | < p . {\displaystyle |x_{n}-x_{n-1}|<p.}

Pokud nejsou splněny podmínky konvergence metody, může se stát, že by výpočet nikdy neskončil. Proto by měl algoritmus obsahovat omezení počtu iterací, jehož dosažení se interpretuje jako selhání metody.

Příklad

Zadání

Najděte kořen rovnice 
  
    
      
        
          x
          
            3
          
        
        
        4
        
          x
          
            2
          
        
        +
        6
        x
        
        24
        =
        0
      
    
    {\displaystyle x^{3}-4x^{2}+6x-24=0}
  
 v intervalu 
  
    
      
        
        3
        ,
        5
        
      
    
    {\displaystyle \langle 3,5\rangle }
  
 a přesností 
  
    
      
        p
        =
        0
        
          ,
        
        01
      
    
    {\displaystyle p=0{,}01}
  
.

Řešení

Za počáteční hodnoty zvolíme 
  
    
      
        
          x
          
            0
          
        
        =
        3
      
    
    {\displaystyle x_{0}=3}
  
 a 
  
    
      
        
          x
          
            1
          
        
        =
        5
      
    
    {\displaystyle x_{1}=5}
  
. Počítáme dosazováním do vzorce: 

x 2 = x 1 f ( x 1 ) ( x 1 x 0 ) f ( x 1 ) f ( x 0 ) = 5 31 ( 5 3 ) 31 ( 15 ) = 3,652 174 {\displaystyle x_{2}=x_{1}-{\frac {f(x_{1})(x_{1}-x_{0})}{f(x_{1})-f(x_{0})}}=5-{\frac {31(5-3)}{31-(-15)}}=3{,}652174} .

Další iterace jsou znázorněny v tabulce:

n {\displaystyle n} x n {\displaystyle x_{n}} f ( x n ) {\displaystyle f(x_{n})} p {\displaystyle p}
2 3,652174 -6,726391 1,347826
3 3,892483 -2,274132 0,240309
4 4,015229 0,336894 0,122746
5 3,999391 -0,013388 0,015838
6 3,999997 -0,000074 0,000605

Z tabulky je patrné, že u šesté iterace je p < 0 , 01 {\displaystyle p<0{,}01} a hledaný kořen rovnice x 3 4 x 2 + 6 x 24 = 0 {\displaystyle x^{3}-4x^{2}+6x-24=0} v intervalu 3 , 5 {\displaystyle \langle 3,5\rangle } a přesností p = 0 , 01 {\displaystyle p=0{,}01} je x = 4 {\displaystyle x=4} .
(V tabulce je kořen 3,999997, ale s zaokrouhlením na setiny dostáváme 4)

Výhody a nevýhody

Mezi výhody této metody patří malý počet iterací pro nalezení kořene a snadné naprogramování algoritmu v programovacím jazyce. Naopak mezi nevýhody patří, že ne vždy dojde v této metodě ke konvergenci.

Odkazy

Související články

Literatura

CHAPRA, Steven C. Numerical Methods for Engineers 6 edition. 1. vyd. [s.l.]: McGraw-Hill, 2009. ISBN 9780073401065. 

VITÁSEK, Emil. Numerické metody. 1. vyd. Praha: SNTL, 1987. 512 s.