Metoda Riddersa

Z testwiki
Przejdź do nawigacji Przejdź do wyszukiwania
Cztery pierwsze iteracje algorytmu, niebieska pozioma linia oznacza funkcję x=xd

Metoda Riddersaiteracyjna 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.

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

Przebieg algorytmu
  • Wyznaczamy środek przedziału:
xc=(xa+xb)2
  • Szukamy eQ spełniającego równanie:
f(xa)2f(xc)eQ+f(xb)e2Q=0
  • Otrzymujemy:
eQ=f(xc)+sign[f(xb)](f(xc)2f(xa)f(xb)f(xb)
  • Stosujemy regule falsi, lecz nie do wartości f(xa), f(xb) i f(xc), ale dla: f(xa),f(xc)eQ i f(xb)e2Q znajdując przy ich pomocy nowe xd.
xd=xc+(xcxa)sign[f(xa)f(xb)]f(xc)(f(xc)2f(xa)f(xb)
  • Sprawdzamy wartość f(xd) jeżeli jest ona wystarczająco bliska 0 to algorytm kończy pracę, w innym wypadku koniec przedziału zostaje zastąpiony przez xd, 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)=x311x2+14x+80

Animacja przedstawia cztery pierwsze iteracje algorytmu

Iteracja nr 1

xa=6, f(xa)=616,
xb=10, f(xb)=120,
xc=8, f(xc)=72,
eQ=2,9438,
xd=0,048, f(xd)=79,303.

Iteracja nr 2

xa=6, f(xa)=616,
xb=0,048, f(xb)=79,303,
xc=3,024, f(xc)=90,577,
eQ=1,8698,
xd=1,8955, f(xd)=7,1331.

Iteracja nr 3

xa=6, f(xa)=616,
xb=1,8955, f(xb)=7,1331,
xc=3,9477, f(xc)=208,223,
eQ=1,4435,
xd=1,922, f(xd)=0,5475.

Iteracja nr 4

xa=6, f(xa)=616,
xb=1,922, f(xb)=0,5475,
xc=3,9961, f(xc)=215,4126,
eQ=1,4272,
xd=1,9994, f(xd)=0,0415.

Szablon:Clear

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