Algorytm numerycznie stabilny

Algorytm numerycznie stabilny – algorytm, który dla nieco zaburzonych danych zwraca nieco zaburzone wyniki.

Schematycznie można przedstawić to tak:

     Dane wejściowe : 
  
    
      
        
          a
          
            1
          
        
      
    
    {\displaystyle a_{1}}
  

     Rzeczywista reprezentacja danych - 
  
    
      
        r
        d
        (
        
          a
          
            1
          
        
        )
      
    
    {\displaystyle rd(a_{1})}
  

     Obliczanie danych pośrednich:
     
  
    
      
        
          f
          
            1
          
        
        (
        r
        d
        (
        a
        )
        )
        =
        
          a
          
            2
          
        
      
    
    {\displaystyle f_{1}(rd(a))=a_{2}}
  

     Rzeczywista reprezentacja: 
  
    
      
        
          a
          
            2
          
        
        =
        r
        d
        (
        
          a
          
            2
          
        
        )
      
    
    {\displaystyle a_{2}=rd(a_{2})}
  

     
  
    
      
        
          f
          
            2
          
        
        (
        r
        d
        (
        a
        )
        )
        =
        
          a
          
            3
          
        
      
    
    {\displaystyle f_{2}(rd(a))=a_{3}}
  

           Rzeczywista reprezentacja: 
  
    
      
        
          a
          
            3
          
        
        =
        r
        d
        (
        
          a
          
            3
          
        
        )
      
    
    {\displaystyle a_{3}=rd(a_{3})}
  

            ...
                
  
    
      
        
          f
          
            n
          
        
        (
        r
        d
        (
        a
        )
        )
        =
        
          a
          
            n
          
        
      
    
    {\displaystyle f_{n}(rd(a))=a_{n}}
  

                Rzeczywista reprezentacja wyniku ostatecznego: 
  
    
      
        
          a
          
            n
          
        
        =
        r
        d
        (
        
          a
          
            n
          
        
        )
      
    
    {\displaystyle a_{n}=rd(a_{n})}
  


Zatem na każdym poziomie obliczeń tracimy (potencjalnie) dokładność. Algorytm stabilny numerycznie to taki, który nie dopuszcza do sytuacji, kiedy w wyniku kumulacji poszczególnych błędów możemy uzyskać wysoce przekłamany wynik (często zupełnie niemający cech prawidłowego rozwiązania). Może to być spowodowane np. przez utratę cyfr znaczących.

Mamy więc wynik "lekko zaburzony", tj. ich błąd jest spowodowany wyłącznie ułomną reprezentacją danych w komputerze.

Zobacz też

  • liczba zmiennoprzecinkowa