Metoda Riddersa

Cztery pierwsze iteracje algorytmu, niebieska pozioma linia oznacza funkcję x = x d {\displaystyle x=x_{d}}

Metoda Riddersa – iteracyjna metoda numeryczna, służąca do rozwiązywania równań nieliniowych z jedną niewiadomą.

Metoda Riddersa jest to jedna z odmian metody fałszywych przybliżeń (łac. regula falsi). Opiera się ona na aproksymacji równania za pomocą funkcji eksponencjalnej. Algorytm ten gwarantuje, że punkt wyznaczony w kolejnej iteracji, będzie zawierał się w założonym przedziale. Wykorzystanie funkcji eksponenty do aproksymacji powoduje osłabienie niekorzystnego wpływu wypukłości funkcji aproksymowanej. Metoda ta jest prostsza w implementacji niż podobnie działające metody Brenta i Mullera, a jej zbieżność w porównaniu z analogicznymi metodami jest duża. Dokładność wartości rozwiązania metody zwiększa się dwukrotnie po dwóch iteracjach. Konieczność wyznaczenia dwóch wartości w każdej iteracji powoduje, że rząd zbieżności metody wynosi 2 . {\displaystyle {\sqrt {2}}.}

Z racji tego, że jest to rodzaj reguly falsi spełnione muszą być następujące założenia: w przedziale ( x a ; x b ) {\displaystyle (x_{a};x_{b})} istnieje jedno miejsce zerowe (pierwiastek), oraz że funkcja f ( x ) {\displaystyle f(x)} jest ciągła w przedziale < x a ; x b > . {\displaystyle <x_{a};x_{b}>.}

Przebieg algorytmu
  • Wyznaczamy środek przedziału:
x c = ( x a + x b ) 2 {\displaystyle x_{c}={\frac {(x_{a}+x_{b})}{2}}}
  • Szukamy e Q {\displaystyle e^{Q}} spełniającego równanie:
f ( x a ) 2 f ( x c ) e Q + f ( x b ) e 2 Q = 0 {\displaystyle f(x_{a})-2f(x_{c})e^{Q}+f(x_{b})e^{2Q}=0}
  • Otrzymujemy:
e Q = f ( x c ) + s i g n [ f ( x b ) ] ( f ( x c ) 2 f ( x a ) f ( x b ) f ( x b ) {\displaystyle e^{Q}={\frac {f(x_{c})+sign[f(x_{b})]{\sqrt {(f(x_{c})^{2}-f(x_{a})f(x_{b})}}}{f(x_{b})}}}
  • Stosujemy regule falsi, lecz nie do wartości f ( x a ) , {\displaystyle f(x_{a}),} f ( x b ) {\displaystyle f(x_{b})} i f ( x c ) , {\displaystyle f(x_{c}),} ale dla: f ( x a ) , {\displaystyle f(x_{a}),} f ( x c ) e Q {\displaystyle f(x_{c})e^{Q}} i f ( x b ) e 2 Q {\displaystyle f(x_{b})e^{2Q}} znajdując przy ich pomocy nowe x d . {\displaystyle x_{d}.}
x d = x c + ( x c x a ) s i g n [ f ( x a ) f ( x b ) ] f ( x c ) ( f ( x c ) 2 f ( x a ) f ( x b ) {\displaystyle x_{d}=x_{c}+(x_{c}-x_{a}){\frac {sign[f(x_{a})-f(x_{b})]f(x_{c})}{\sqrt {(f(x_{c})^{2}-f(x_{a})f(x_{b})}}}}
  • Sprawdzamy wartość f ( x d ) {\displaystyle f(x_{d})} jeżeli jest ona wystarczająco bliska 0 to algorytm kończy pracę, w innym wypadku koniec przedziału zostaje zastąpiony przez x d , {\displaystyle x_{d},} następuje ponowne przejście do punktu pierwszego. Iteracje powtarzamy, aż do uzyskania wartości satysfakcjonującej.

Przykładowe rozwiązanie

Pierwsze 4 iteracje na przykładzie funkcji: f ( x ) = x 3 11 x 2 + 14 x + 80 {\displaystyle f(x)=x^{3}-11x^{2}+14x+80}

Animacja przedstawia cztery pierwsze iteracje algorytmu

Iteracja nr 1


  
    
      
        
          x
          
            a
          
        
        =
        
        6
        ,
      
    
    {\displaystyle x_{a}=-6,}
  
 
  
    
      
        f
        (
        
          x
          
            a
          
        
        )
        =
        
        616
        ,
      
    
    {\displaystyle f(x_{a})=-616,}
  


  
    
      
        
          x
          
            b
          
        
        =
        10
        ,
      
    
    {\displaystyle x_{b}=10,}
  
 
  
    
      
        f
        (
        
          x
          
            b
          
        
        )
        =
        120
        ,
      
    
    {\displaystyle f(x_{b})=120,}
  


  
    
      
        
          x
          
            c
          
        
        =
        8
        ,
      
    
    {\displaystyle x_{c}=8,}
  
 
  
    
      
        f
        (
        
          x
          
            c
          
        
        )
        =
        72
        ,
      
    
    {\displaystyle f(x_{c})=72,}
  


  
    
      
        
          e
          
            Q
          
        
        =
        2,943
        8
        ,
      
    
    {\displaystyle e^{Q}=2{,}9438,}
  


  
    
      
        
          x
          
            d
          
        
        =
        
        0,048
        ,
      
    
    {\displaystyle x_{d}=-0{,}048,}
  
 
  
    
      
        f
        (
        
          x
          
            d
          
        
        )
        =
        79,303.
      
    
    {\displaystyle f(x_{d})=79{,}303.}
  

Iteracja nr 2


  
    
      
        
          x
          
            a
          
        
        =
        
        6
        ,
      
    
    {\displaystyle x_{a}=-6,}
  
 
  
    
      
        f
        (
        
          x
          
            a
          
        
        )
        =
        
        616
        ,
      
    
    {\displaystyle f(x_{a})=-616,}
  


  
    
      
        
          x
          
            b
          
        
        =
        
        0,048
        ,
      
    
    {\displaystyle x_{b}=-0{,}048,}
  
 
  
    
      
        f
        (
        
          x
          
            b
          
        
        )
        =
        79,303
        ,
      
    
    {\displaystyle f(x_{b})=79{,}303,}
  


  
    
      
        
          x
          
            c
          
        
        =
        
        3,024
        ,
      
    
    {\displaystyle x_{c}=-3{,}024,}
  
 
  
    
      
        f
        (
        
          x
          
            c
          
        
        )
        =
        
        90,577
        ,
      
    
    {\displaystyle f(x_{c})=-90{,}577,}
  


  
    
      
        
          e
          
            Q
          
        
        =
        1,869
        8
        ,
      
    
    {\displaystyle e^{Q}=1{,}8698,}
  


  
    
      
        
          x
          
            d
          
        
        =
        
        1,895
        5
        ,
      
    
    {\displaystyle x_{d}=-1{,}8955,}
  
 
  
    
      
        f
        (
        
          x
          
            d
          
        
        )
        =
        7,133
        1.
      
    
    {\displaystyle f(x_{d})=7{,}1331.}
  

Iteracja nr 3


  
    
      
        
          x
          
            a
          
        
        =
        
        6
        ,
      
    
    {\displaystyle x_{a}=-6,}
  
 
  
    
      
        f
        (
        
          x
          
            a
          
        
        )
        =
        
        616
        ,
      
    
    {\displaystyle f(x_{a})=-616,}
  


  
    
      
        
          x
          
            b
          
        
        =
        
        1,895
        5
        ,
      
    
    {\displaystyle x_{b}=-1{,}8955,}
  
 
  
    
      
        f
        (
        
          x
          
            b
          
        
        )
        =
        7,133
        1
        ,
      
    
    {\displaystyle f(x_{b})=7{,}1331,}
  


  
    
      
        
          x
          
            c
          
        
        =
        
        3,947
        7
        ,
      
    
    {\displaystyle x_{c}=-3{,}9477,}
  
 
  
    
      
        f
        (
        
          x
          
            c
          
        
        )
        =
        
        208,223
        ,
      
    
    {\displaystyle f(x_{c})=-208{,}223,}
  


  
    
      
        
          e
          
            Q
          
        
        =
        1,443
        5
        ,
      
    
    {\displaystyle e^{Q}=1{,}4435,}
  


  
    
      
        
          x
          
            d
          
        
        =
        
        1,922
        ,
      
    
    {\displaystyle x_{d}=-1{,}922,}
  
 
  
    
      
        f
        (
        
          x
          
            d
          
        
        )
        =
        0,547
        5.
      
    
    {\displaystyle f(x_{d})=0{,}5475.}
  

Iteracja nr 4


  
    
      
        
          x
          
            a
          
        
        =
        
        6
        ,
      
    
    {\displaystyle x_{a}=-6,}
  
 
  
    
      
        f
        (
        
          x
          
            a
          
        
        )
        =
        
        616
        ,
      
    
    {\displaystyle f(x_{a})=-616,}
  


  
    
      
        
          x
          
            b
          
        
        =
        
        1,922
        ,
      
    
    {\displaystyle x_{b}=-1{,}922,}
  
 
  
    
      
        f
        (
        
          x
          
            b
          
        
        )
        =
        0,547
        5
        ,
      
    
    {\displaystyle f(x_{b})=0{,}5475,}
  


  
    
      
        
          x
          
            c
          
        
        =
        
        3,996
        1
        ,
      
    
    {\displaystyle x_{c}=-3{,}9961,}
  
 
  
    
      
        f
        (
        
          x
          
            c
          
        
        )
        =
        
        215,412
        6
        ,
      
    
    {\displaystyle f(x_{c})=-215{,}4126,}
  


  
    
      
        
          e
          
            Q
          
        
        =
        1,427
        2
        ,
      
    
    {\displaystyle e^{Q}=1{,}4272,}
  


  
    
      
        
          x
          
            d
          
        
        =
        
        1,999
        4
        ,
      
    
    {\displaystyle x_{d}=-1{,}9994,}
  
 
  
    
      
        f
        (
        
          x
          
            d
          
        
        )
        =
        0,041
        5.
      
    
    {\displaystyle f(x_{d})=0{,}0415.}
  


Jeżeli uznamy, że wynik 0,0415 jest wystarczającym przybliżeniem wartości 0 to algorytm kończy działanie, w przeciwnym wypadku kontynuujemy iteracje do uzyskania wartości satysfakcjonującej.

Bibliografia

  • Ridders, C. (1979). „A new algorithm for computing a single root of a real continuous function”. IEEE Transactions on Circuits and Systems 26: 979–980.
  • Press, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). „Section 9.2.1. Ridders’ Method”. Numerical Recipes: The Art of Scientific Computing (3rd ed.). New York: Cambridge University Press.