Uniwersytet Warmińsko – Mazurski w Olsztynie
II rok, studia stacjonarne
Mechatronika
Algorytmy i metody numeryczne
Temat: ROZWIĄZYWANIE NIELINIOWYCH RÓWNAŃ ALGEBRAICZNYCH
Adrian Mańka
Grupa 3
Cel ćwiczenia
Zad 7. Równanie ma pierwiastki . Stosując metodę połowienia, obliczyć dodatni pierwiastek tego równania zaczynając od przedziału . Ile iteracji należy wykonać, aby obliczyć pierwiastek z dokładnością do czterech miejsc dziesiętnych? Jaki jest maksymalny błąd po tej liczbie iteracji?
KOD
function f=f51(z) Zdefiniowanie funkcji f51, która będzie użyta w dalszej części.
f=z*z-2;
x_dokl=2;
a=-2; b=-1;
dokladnosc=1e-15;
deltax=(b-a)/2;
iter=0;
while deltax>dokladnosc
iter=iter+1;
x=(a+b)/2;
if (f51(a)*f51(x)>0)
a=x;
else b=x;
end
deltax=b-a;
dx_bis(iter)=abs(x_dokl-x)/x_dokl;
end
iter
x
deltax
WYNIK
>> zadanie7
iter =
50
x =
-1.4142
deltax =
8.8818e-16
Zad 8. Równanie ma tylko jeden pierwiastek rzeczywisty. Znaleźć ten pierwiastek metodą połowienia.
KOD
function f=f53(z) Zdefiniowanie funkcji f53, która będzie użyta w dalszej części.
f=z*z*z-z+1;
x_dokl=2;
a=-10; b=10;
dokladnosc=1e-15;
deltax=(b-a)/2;
iter=0;
while deltax>dokladnosc
iter=iter+1;
x=(a+b)/2;
if (f53(a)*f53(x)>0)
a=x;
else b=x;
end
deltax=b-a;
dx_bis(iter)=abs(x_dokl-x)/x_dokl;
end
iter
x
deltax
WYNIK
>> zadanie8
iter =
55
x =
-1.3247
deltax =
6.6613e-16
Zad 9. Znaleźć pierwiastek równania w przedziale . Ile trzeba wykonać iteracji, aby metodą połowienia otrzymać przybliżoną wartość pierwiastka z błędem nieprzekraczającym ?
KOD
function y=f55(x) Zdefiniowanie funkcji f55, która będzie użyta w dalszej części.
y=sin(x)+x-1
x_dokl=2;
a=0; b=1;
dokladnosc=8e-5;
deltax=(b-a)/2;
iter=0;
while deltax>dokladnosc
iter=iter+1;
x=(a+b)/2;
if (f55(a)*f55(x)>0)
a=x;
else b=x;
end
deltax=b-a;
dx_bis(iter)=abs(x_dokl-x)/x_dokl;
end
iter
x
deltax
WYNIK
>> zadanie9
y =
-1
y =
-0.0206
y =
-0.0206
y =
0.4316
y =
-0.0206
y =
0.2101
y =
-0.0206
y =
0.0958
y =
-0.0206
y =
0.0379
y =
-0.0206
y =
0.0087
y =
-0.0206
y =
-0.0059
y =
-0.0059
y =
0.0014
y =
-0.0059
y =
-0.0023
y =
-0.0023
y =
-4.3296e-04
y =
-4.3296e-04
y =
4.8123e-04
y =
-4.3296e-04
y =
2.4150e-05
y =
-4.3296e-04
y =
-2.0440e-04
y =
-2.0440e-04
y =
-9.0125e-05
iter =
14
x =
0.5109
deltax =
6.1035e-05
Zad 10.Metodą połowienia znaleźć dodatni pierwiastek równania z dokładnością do 10-2.
KOD
a=0;
b=2;
e=0.01;
x1=(a+b)/2;
n=0;
while (abs(b-a)>e)
n=n+1;
x=(a+b)/2;
y=x^2-x-1;
ya=a^2-a-1;
yb=b^2-b-1;
if y~=0
if ya*y<0
b=x;
yb=y;
else a=x;
ya=y;
end
else
break
end
end
x
n
WYNIK PROGRAMU
x =
1.6172
n =
8
Zad 11. Metodą połowienia znaleźć wartość zmiennej , dla której przecinają się wykresy funkcji i . Wymagana dokładność obliczeń wynosi 10-4.
KOD
a=0;
b=1;
e=0.0001;
x1=(a+b)/2;
n=0;
while (abs(b-a)>e)
n=n+1;
x=(a+b)/2;
y=3*x-exp(x);
ya=3*a-exp(a);
yb=3*b-exp(b);
if y~=0
if ya*y<0
b=x;
yb=y;
else a=x;
ya=y;
end
else
break
end
end
x
n
WYNIK PROGRAMU
x =
0.6191
n =
14
Zad 12. Korzystając z metody połowienia znaleźć najmniejszy dodatni pierwiastek równania:
a) , b) , c) .
KOD
b=1.2;
e=0.000001;
x1=(a+b)/2;
n=0;
while (abs(b-a)>e)
n=n+1;
x=(a+b)/2;
y=tan(x)-x-1;
ya=tan(a)-a-1;
yb=tan(b)-b-1;
if y~=0
if ya*y<0
b=x;
yb=y;
else a=x;
ya=y;
end
else
break
end
end
x
WYNIK PROGRAMU
x =
1.1323
b)
KOD
a=0;
b=1;
e=0.000001;
x1=(a+b)/2;
n=0;
while (abs(b-a)>e)
n=n+1;
x=(a+b)/2;
y=x^3-x^2-2*x+1;
ya=a^3-a^2-2*a+1;
yb=b^3-b^2-2*b+1;
if y~=0
if ya*y<0
b=x;
yb=y;
else a=x;
ya=y;
end
else
break
end
end
x
WYNIK PROGRAMU
x =
0.4450
c)
KOD
a=0;
b=1;
e=0.000001;
x1=(a+b)/2;
n=0;
while (abs(b-a)>e)
n=n+1;
x=(a+b)/2;
y=2*exp(-x)-sin(x);
ya=2*exp(-a)-sin(a);
yb=2*exp(-b)-sin(b);
if y~=0
if ya*y<0
b=x;
yb=y;
else a=x;
ya=y;
end
else
break
end
end
x
WYNIK PROGRAMU
x =
0.9210
WNIOSKI
Wyniki otrzymane powyżej są takie same jak wyniki zawarte w instrukcjach ćwiczenia. Świadczy to o tym, że ćwiczenia zostały wykonane poprawnie. W celu wyznaczenia pierwiastka danego równania musimy stworzyć uprzednio funkcję, którą wykorzystamy w naszym właściwym programie.