data 28.05.2012 godzina 14:15
rok akademicki: 2011/2012 semestr: IV
grupa: 4D6 (D) - X2
SPRAWOZDANIE Z LABORATORIUM
METOD NUMERYCZNYCH
ĆWICZENIE NR 6
TEMAT: Iteracyjnie rozwiązywanie równań i układów równań nieliniowych
Krzysztof Filipek - 164333
Kamil Turkowski - 164478
Listingi M-Funkcji:
Pliki liczące wartość funkcji:
fun1.m:
function [wyj] = fun1(we)
wyj = (we-3)*(we^2+3*we+4);
fun2.m:
function [wyj] = fun2(we)
wyj = ((we-2)^2)*(we^2+3*we+4);
fun3.m:
function [wyj] = fun3(we)
wyj = ((we+1)^3)*(2*we^2-we+2);
M-pliki z wartościami pochodnych:
fun1poch.m:
function [wyj] = fun1poch(we)
wyj = 3*we^2-5;
fun2poch.m:
function [wyj] = fun2poch(we)
wyj = 4*we^3-3*we^2-8*we-4;
fun3poch.m:
function [wyj] = fun3poch(we)
wyj = 10*we^4+20*we^3+15*we^2+10*we+5;
Metoda bisekcji:
Uwaga: W kolejnych m-plikach ciąg znaków NR odpowiada liczbie określającej plik z funkcją używany do wyliczenia wartości funkcji (1, 2 lub 3).
function [x] = bisekcjaNR(przedzial,eps)
x = zeros(1);
temp = 0;
if funNR(przedzial(1))*funNR(przedzial(2))<0
while temp<100
temp=temp+1;
x = (przedzial(1)+przedzial(2))/2;
if abs(funNR(x)) < eps
break;
end
if funNR(x)*funNR(przedzial(2))<0
przedzial(1)=x;
else if funNR(przedzial(1))*funNR(x)<0
przedzial(2)=x;
end
end
end
end
x(2) = temp;
Metoda siecznych:
function [x] = siecznychNR(przedzial,eps)
x = zeros(2);
temp = 0;
%x = przedzial(2)
if funNR(przedzial(1))*funNR(przedzial(2))<0
while abs(przedzial(1)-przedzial(2))>eps
temp=temp+1;
x = przedzial(2)-funNR(przedzial(2))*(przedzial(2)-przedzial(1))/((funNR(przedzial(2))-funNR(przedzial(1))));
przedzial(1)=przedzial(2);
przedzial(2)=x;
end
end
x(2) = temp;
Metoda Newtona:
function [x_akt] = newtonNR(x_pop,eps)
x_akt = zeros(1);
temp = 0;
if x_pop~=0
while temp<100 && abs(funNR(x_pop)) > eps
temp=temp+1;
x_pop = x_akt;
h = funNR(x_pop)/funNRpoch(x_pop);
x_akt = x_pop - h;
end
end
x_akt(2) = temp;
Uwagi dodatkowe:
M-pliki zwracają jako wynik macierz dwuelementową na którą składa się obliczone miejsce zerowe oraz wykonana ilość iteracji.
Tabelaryczne zestawienie otrzymanych wyników:
Przedział dla:
Punkt startowy dla metody Newtona: xpocz=7.37
Funkcja 1 x=3 |
Metoda bisekcji |
Metoda siecznych |
Metoda Newtona |
|||
|
Przybliżenie |
Ilość iteracji |
Przybliżenie |
Ilość iteracji |
Przybliżenie |
Ilość iteracji |
0.001 |
2.999958801269531 |
16 |
2.999993127636541 |
11 |
3.000000000000031 |
19 |
0.00001 |
3.000000357627869 |
22 |
3.000000002565115 |
12 |
3.000000000000031 |
19 |
0.0000001 |
3.000000002048910 |
29 |
2.999999999999993 |
13 |
3.000000000000000 |
20 |
0.000000001 |
2.999999999995635 |
36 |
3.000000000000000 |
14 |
3.000000000000000 |
21 |
Funkcja 2 x=2 (podwójny) |
Metoda bisekcji |
Metoda siecznych |
Metoda Newtona |
|||
|
Przybliżenie |
Ilość iteracji |
Przybliżenie |
Ilość iteracji |
Przybliżenie |
Ilość iteracji |
0.001 |
|
|
|
|
2.004059772560051 |
11 |
0.00001 |
|
|
|
|
2.000254218576056 |
15 |
0.0000001 |
|
|
|
|
2.000031780856213 |
18 |
0.000000001 |
|
|
|
|
2.000003972662262 |
21 |
Funkcja 3 x=-1 (potrójny) |
Metoda bisekcji |
Metoda siecznych |
Metoda Newtona |
|||
|
Przybliżenie |
Ilość iteracji |
Przybliżenie |
Ilość iteracji |
Przybliżenie |
Ilość iteracji |
0.001 |
-1.017187500000000 |
6 |
-1.002990744696247 |
26 |
-0.973910617708497 |
8 |
0.00001 |
-1.000976562500000 |
9 |
-1.000025137656639 |
43 |
-0.992341122310248 |
11 |
0.0000001 |
-1.000976562500000 |
9 |
-1.000000279483011 |
59 |
-0.998491787897286 |
15 |
0.000000001 |
-0.999963378906250 |
13 |
-1.000000002345618 |
76 |
-0.999702261871961 |
19 |
Wykresy zbieżności poszczególnych metod dla dokładności:
Metoda bisekcji:
Metoda siecznych:
Metoda Newtona:
Wnioski:
Wykonując ćwiczenie porównaliśmy przydatności metody bisekcji, siecznych oraz Newtona do wyznaczania zer funkcji. Metoda Newtona okazała się najbardziej wartościowa ze względu na małą ilość iteracji w stosunku do pozostałych. Ponadto metody bisekcji i siecznych muszą posiadać wartości o przeciwnych znakach na końcach przedziałów co skutkuje brakiem możliwości użycia ich dla funkcji z pierwiastkami parzystych stopni. Natomiast metodę Newtona możemy stosować wtedy i tylko wtedy gdy
.