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?
Program:
format long
clc;
a=1; b=2;
dokladnosc=0.0001;
deltax=(b-a)/2;
iter=0;
while deltax>dokladnosc
iter=iter+1;
x=(a+b)/2;
disp(iter)
disp('x=');
disp(x);
if ((a*a-2)*(x*x-2)>0)
a=x;
else b=x;
end
deltax=b-a;
disp('dokl+-')
disp(deltax)
end
Wynik:
1
x= 1.500000000000000
dokl+- 0.500000000000000
2
x= 1.250000000000000
dokl+- 0.250000000000000
3
x= 1.375000000000000
dokl+- 0.125000000000000
4
x= 1.437500000000000
dokl+- 0.062500000000000
……………………………..
9
x= 1.416015625000000
dokl+- 0.001953125000000
10
x= 1.415039062500000
dokl+- 9.765625000000000e-004
11
x= 1.414550781250000
dokl+- 4.882812500000000e-004
12
x= 1.414306640625000
dokl+- 2.441406250000000e-004
13
x= 1.414184570312500
dokl+- 1.220703125000000e-004
14
x= 1.414245605468750
dokl+- 6.103515625000000e-005
Pierwiastkiem równania jest x= 1.4141845703125. Należy wykonać trzynaście iteracji aby dokładność wyniku była do 4 miejsc po przecinku. Maksymalny błąd przy tylu iteracjach wynosi 1.220703125e-004.
Równanie ma tylko jeden pierwiastek rzeczywisty. Znaleźć ten pierwiastek metodą połowienia.
Program:
format long
clc;
a=-2; b=2;
dokladnosc=0.0001;
deltax=(b-a)/2;
iter=0;
while deltax>dokladnosc
iter=iter+1;
x=(a+b)/2;
disp(iter)
disp('x=');
disp(x);
if ((a*a*a-a+1)*(x*x*x-x+1)>0)
a=x;
else b=x;
end
deltax=b-a;
disp('dokl+-')
disp(deltax)
end
Wynik:
1
x= 0
dokl+- 2
2
x= -1
dokl+- 1
3
x= -1.500000000000000
dokl+- 0.500000000000000
4
x= -1.250000000000000
dokl+- 0.250000000000000
5
x= -1.375000000000000
dokl+- 0.125000000000000
………………………………………………
14
x= -1.324951171875000
dokl+- 2.441406250000000e-004
15
x= -1.324829101562500
dokl+- 1.220703125000000e-004
16
x= -1.324768066406250
dokl+- 6.103515625000000e-005
Wykonaliśmy obliczenia metodą bisekcji z dokładnością do 0,0001. Po szesnastu iteracjach obliczyliśmy, że pierwiastkiem równania jest x=-1.32476806640625.
Znaleźć pierwiastek równania w przedziale . Ile trzeba wykonać iteracji, aby metodą połowienia otrzymać przybliżoną wartość pierwiastka z błędem nie przekraczającym ?
Program:
format long
clc;
a=0; b=1;
dokladnosc=0.5e-4;
deltax=(b-a)/2;
iter=0;
while deltax>dokladnosc
iter=iter+1;
x=(a+b)/2;
disp(iter)
disp('x=');
disp(x);
if (((sin(x)+x-1)*((sin(a)+a-1))>0))
a=x;
else b=x;
end
deltax=b-a;
disp('dokl+-')
disp(deltax)
end
Wyniki:
1
x= 0.500000000000000
dokl+- 0.500000000000000
2
x= 0.750000000000000
dokl+- 0.250000000000000
3
x= 0.625000000000000
dokl+- 0.125000000000000
13
x= 0.510864257812500
dokl+- 1.220703125000000e-004
14
x= 0.510925292968750
dokl+- 6.103515625000000e-005
15
x= 0.510955810546875
dokl+- 3.051757812500000e-005
Pierwiastkiem równania w przedziale jest x=0.51092529296875. Aby otrzymać przybliżoną wartość pierwiastka z błędem nie przekraczającym należy wykonać 14 iteracji.
Metodą połowienia znaleźć dodatni pierwiastek równania z dokładnością do 10-2.
Program:
Wyniki:
1
x= 1.500000000000000
dokl+- 1.500000000000000
2
x= 2.250000000000000
dokl+- 0.750000000000000
3
x= 1.875000000000000
dokl+- 0.375000000000000
…………………………………………
7
x= 1.617187500000000
dokl+- 0.023437500000000
8
x= 1.628906250000000
dokl+- 0.011718750000000
9
x= 1.623046875000000
dokl+- 0.005859375000000
Dodatnim pierwiastkiem równania z dokładnością do 10-2 jest x= 1.623046875.
Metodą połowienia znaleźć wartość zmiennej , dla której przecinają się wykresy funkcji i . Wymagana dokładność obliczeń wynosi 10-4 .