Wstęp teoretyczny
Metoda Newtona – jest jedną z opcji szukana miejsc zerowych funkcji. Opiera się na jej linearyzacji, tj. zastąpieniu funkcji bazowej przez szereg funkcji liniowych, stycznych do jej wykresu. Metoda ta jest szybkozbieżna, p=2 lecz nie zawsze. W każdym przypadku jest zbieżna dla funkcji kwadratowych.
Wzór na linearyzację w punkcie c:
Rozwiązaniem w omawianej metodzie jest miejsce zerowe funkcji liniowej. Jego wyznaczenie wymaga wyznaczenia pochodnej funkcji. Wzór obliczeniowy dla Metody Newtona zamieszczono poniżej.
Warunki stosowalności metody Newtona:
funkcja f(x) jest określona,
funkcja f(x) jest ciągła,
funkcja f(x) na krańcach przedziału <a,b> przyjmuje różne znaki,
w przedziale <a,b> pierwsza pochodna f'(x) jest różna od zera,
Rysunek 1. Interpretacja graficzna metody Newtona
Aby wyeliminować konieczność liczenia pochodnych zamiast metody Newtona używa się metody siecznych.
Metoda siecznych - w tej metodzie szukania miejsc zerowych zamiast pochodnej pojawia się iloraz różnicowy. Metoda wolniej zbieżna niż Newtona, p=1,618 jednak pewniejsza. Dokładnego przybliżenia nie uzyskamy jedynie wówczas gdy początkowe przybliżenia znajdują się zbyt daleko rzeczywistego pierwiastka.
Warunki stosowalności metody siecznych:
f(x) jest określona - dla każdej wartości argumentu x z przedziału <a,b> potrafimy policzyć wartość funkcji,
f(x) jest ciągła - Funkcja przebiega przez wszystkie wartości pośrednie - nie istnieją zatem przerwy w kolejnych wartościach funkcji ani gwałtowne skoki jej wartości,
funkcja f(x) na krańcach przedziału <a,b> przyjmuje różne znaki (nie obowiązuje to punktów x1 i x2),
na przedziale <a,b> pierwsza pochodna f '(x) jest różna od zera. Nie istnieje zatem minimum lub maksimum lokalne (gwarant nierównoległości siecznej do OX, co uniemożliwiłoby wyznaczenie punktu przecięcia siecznej z osią).
Wzór obliczeniowy dla metody siecznych:
$$\alpha = x_{n + 1} = x_{n} - \frac{f(x_{n})(x_{n} - x_{n - 1})}{f\left( x_{n} \right) - f(x_{n - 1})}$$
Rysunek 2. Interpretacja graficzna metody siecznych
Kod źródłowy programu MatLAB
%Zadanie 3.11 Miejsca zerowe
clc; clear all; close all; format long
f=inline('x.^2-6*x+9');
df=inline('2.*x-6');
a=2; b=4; x=linspace(a,b);
plot(x,f(x))
grid on
% metoda Newtona
xp=3.2; eps0=0.001; mx=30;
[fp,it] = newton(a,b,f,df,xp,eps0,mx,1)
%Obliczenia metodą siecznych
x0=3.2; x1=3.4; delta=0.001; tol=10^-6; max1=30;
[P, it] = sieczne(f, x0, x1, delta, tol, max1)
Zastosowano do obliczeń następujące funkcje:
function [fp,it] = newton(a,b,f,df,xp,eps0,mx,rysuj)
% INPUT
% f - zadana funkcja
% df- zadana pochodna funkcji
% xp - startowy punkt iteracji
% eps - dokladnosc z jaka wyznaczony bedzie punkt staly
% mx - maksymalna liczba iteracji
% OUTPUT
% fp - kolejne przyblizenia pierwiastka
% it - ilosc iteracji do uzyskania zadanej dokladnosci "eps"
xn=xp;
x=linspace(a,b,250);
f=vectorize(f);
df=vectorize(df);
fs=inline('fxn-dfxn*(xn-x)'); fs=vectorize(fs);
r=1;
it=0;
% wymagana liczba iteracji
function [P, it] = sieczne(f, x0, x1, delta, tol, max1)
% INPUT
% f - iterowana funkcja
% x0 - pierwszy punkt startowy
% x1 - drugi punkt startowy
% delta - dokładnosc wyznaczenia miejsca zerowego
% tol - dokladnosc iteracji wartości funkcji
% max1 - maksymalna liczba iteracji
% OUTPUT
% P - wektor kolejnych wartości punktow {pk}
% it - wartosc funkcji g(x) w kolejnych przyblizeniach
r=1; it=0; zero=1;
P(1)=x0;P(2)=x1;
while zero>tol
it=it+1;
x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
r=abs(x2-x1);
zero=abs(f(x2));
x0=x1;
x1=x2;
P(it+2)=x2;
if r<tol
break
elseif it==max1
disp('przekroczono maksymalna ilosc iteracji')
break
end
end
P=P';
Rozwiązanie z programu MatLAB
Dla metody Newtona:
fp =
3.100000000000002
3.050000000000014
3.025000000000008
it =
3
Dla metody siecznych:
P =
3.200000000000000
3.400000000000000
3.133333333333336
3.099999999999997
3.057142857142881
3.036363636363634
3.022222222222235
3.013793103448303
3.008510638297902
3.005263157894588
3.003252032520224
3.002010050251690
3.001242236025163
3.000767754317898
it =
12
Ponadto dla metody Newtona wygenerowano wykres. Zamieszczony został on poniżej.
Rysunek 3. Wykres funkcji f(x)=(x-3)^2
Obliczenie ręczne
Zamieszczono na ostatniej stronie sprawozdania.
Wnioski
Badana funkcja ma jedno miejsce zerowe,
dla wykonanych założeń wykonując obliczenia metodą Newtona dostatecznie duże przybliżenie uzyskuje się już po 3 iteracjach,
warunek metody zbieżności metody Newtona został potwierdzony,
metoda siecznych jest również zbieżna, ale wielokrotnie wolniej od metody Newtona. Na uzyskanie dostatecznej dokładności potrzebne było 12 iteracji,
rezultaty obliczeń ręcznych i komputerowych metody Newtona są identyczne.