niedziela, 13 stycznia 2013

1.5.3 Metoda Eulera(siecznych)

Metoda siecznych (interpolacji liniowej) polega na przyjęciu, że funkcja na dostatecznie małym odcinku w przybliżeniu zmienia się w sposób liniowy. Możemy wtedy na odcinku krzywą y=f(x) zastąpić sieczną. Za przybliżoną wartość pierwiastka przyjmujemy punkt przecięcia siecznej z osią odciętych OX.

Ogólny opis metody siecznych (i metody reguła falsi)

Metoda siecznych wymaga od użytkownika podania dwóch przybliżeń xo i x1, dla których wartości funkcji mogą, ale nie muszą leżeć po przeciwnych stronach osi x (jak w metodzie bisekcji i w metodzie reguła falsi). Jeśli jednak te pierwsze, podane przez użytkownika przybliżenia, będą jednocześnie końcami przedziału, w którym funkcja ma miejsce zerowe, to konwergencja metody będzie wówczas wysoka. Przez te podane dwa punkty (użytkownik podaje wartości xo i x1, program oblicza wartości funkcji), prowadzona jest prosta, miejsce przecięcia tej prostej z osią x jest przybliżonym wynikiem szukanego miejsca zerowego, o ile bezwzględna wartość funkcji w tym punkcie jest mniejsza od założonej dokładności.
Uwaga, niektórzy autorzy utożsamiają metodę siecznych z metodą reguła falsi, gdyż obliczenia w obu wypadkach przeprowadza się w ten sam sposób i według tego samego wzoru, jedyna różnica polega właśnie na warunku jaki spełnia wybrany do szukania miejsca zerowego przedział: w metodzie siecznych te dwa przybliżenia podane przez użytkownika są przedziałem w którym może znajdować się pierwiastek równania (lub w pobliżu tego przedziału), zaś w metodzie reguła falsi musi leżeć w nim ten pierwiastek, czyli należy sprawdzić, że f(x0) * f(x1) < 0. Porównaj [2] str. 173 i 176

Specyfikacja

Dane:

  • funkcja f(x) ciągła w przedziale domkniętym [x0,x1] i spełniająca f(x0) * f(x1) < 0 (ten drugi warunek oznacza, że tak naprawdę przyjmujemy założenia do metody reguła falsi, dla metody siecznej ważne jest, aby wartość f(x0) <> f(x1), by to były różne punkty startowe);
  • epsilon - przyjęta dokładność obliczeń (epsilon>0)
Wyniki:

  • x2 przybliżenie miejsca zerowego funkcji f, spełniające warunki: |f(x2)| <= epsilon; wartość funkcji f powinna być liczona ze znacząco większą dokładnością liczb rzeczywistych niż epsilon.
Uwaga 1 na podstawie [3] str. 125 - "...niestety zdarzają się przypadki, gdy może ona (m. siecznych) nie być zbieżna, np. gdy początkowe przybliżenia nie leżą dostatecznie blisko pierwiastka. W metodzie tej istotne znaczenie ma maksymalna graniczna dokładność (wynikająca z przyjętej arytmetyki). Gdy bowiem różnica xn+1 - xn jest tego samego rzędu co oszacowanie błędu, jakim jest obarczona, następne przybliżenie może już być całkowicie błędne. Dlatego też za dodatkowe kryterium przerwania iteracji należy przyjmować wartości |f(xn)|, tak aby tworzyły one ciąg malejący (w końcowej fazie obliczeń). ... jeśli różnica między kolejnymi przybliżeniami zamiast maleć zaczyna szybko wzrastać. W takim przypadku należy przeprowadzić powtórną lokalizację pierwiastka.."
Uwaga 2 na podstawie [3] str. 126 - "Przy stosowaniu metody siecznych jest niezbędne, aby pierwsza iteracja zaczynała się z punktów, w których funkcja ma różne znaki, w przeciwnym razie możemy wykryć nieistniejący pierwiastek, co jest szczególnie niebezpieczne przy obliczeniach prowadzonych na maszynach cyfrowych"
Algorytm:

  1. Pobierz wartości dwóch pierwszych przybliżeń [x0,x1]. Sprawdź czy f(x0) * f(1) < 0, jeśli nie pobierz inne przybliżenia. Sprawdzanie, czy podawane przez użytkownika dwa pierwsze przybliżenia są jednocześnie końcami przedziału, w którym znajduje się miejsce zerowe funkcji, następuje na początku algorytmu.
  2. Oblicz* x2 = x1 - f (x1) * (x1 - x0) / (f(x1) - f(x0)) .
  3. Policz f(x2).
  4. Jeśli |f(x2)| <= epsilon zakończ obliczenia - x2 jest szukanym miejscem zerowym funkcji, wpp podstaw jako nowe x0 = x1 i nowe x1 = x2. Wróć do polecenia 2 - to w metodzie siecznych; w metodzie reguła falsi należy podobnie jak w metodzie bisekcji wybrać przedział, w którym znajduje się szukany pierwiastek funkcji.
* Wyprowadzenie wzoru na x2


  • x0 i x1 - dwa kolejne przybliżenia miejsca zerowego funkcji, zarazem końce przedziału, w którym to miejsce się znajduje,
  • przez te dwa punkty prowadzimy sieczną o wzorze w(x) = a * x + b,
  • wartości funkcji i siecznej są w tych punktach te same, czyli
    w(x0) = f(x0) oraz
    w(x1) = f(x1), zatem
    f(x0) = a * x0 + b oraz
    f(x1) = a * x1 + b
  • mając te dwa równania można wyliczyć a i b (odjąć stronami i obliczyć a, następnie z jednego z równań policzyć b) - reszta jest dana,

  • x2 jest to miejsce przecięcia siecznej z osią x, czyli
    0 = a * x2 + b (a i b wcześniej policzone), stąd można wyliczyć x2,
  • x2 = x1 - f (x1) * (x1 - x0) / (f(x1) - f(x0))

Brak komentarzy:

Prześlij komentarz