Sunteți pe pagina 1din 32

MINISTERE DE L'ENSEIGNEMENT SUPERIEUR

ET DE LA RECHERCHE SCIENTIFIQUE

FACULTY DES SCIENCES TECHNOLOGIES


2me Anne LMD (ST)
DEPARTEMENT DE GENIE CIVIL
MODULE : TP-METHODES NUMERIQUES
TPN:01

TP N:01

Mthode de Dichotomie
Groupe : 01
Ben Kihoul Hicham

Responsabel de la matire SLIMANE Benmahmoude


2016/2017

2
TPN:01

Rsolution de lquation f(x)=0 par la mthode de Dichotomie

INTRODUCTION:
L'tude gnrale des fonctions variables relles ncessite de temps autre la
rsolution d'quations de type f(x) = 0. Autrement dit, nous sommes amens
trouver les zros de fonctions non linaires, c'est--dire les valeurs relles telles
que :

OBJECTIFS :
*comprendre la mthode de Dichotomie

*crire un Algorithme pour cette mthode

*programmer cet Algorithme

Cest quoi la mthode de Dichotomie, et elle est base sur quoi

Cest lune des mthodes dveloppes pour rsoudre lquation non linaire f(x)=0

THEOREME :
f(x) est une fonction non linaire et continue sur un intervallea, b a au moin une
racine entre a et b si :f(a)*f(b)<0

2

PRINCIPE : - on prend X0= a+b

*si f(X0)=0 , =X0 cest la racine de f

*si f(X0)0, ne regardons si : f(a)*f(X0)<0,alors a, X0 donc : a=a ,b=X0

f(X0)*f(b)<0,alors X0,b donc : a=X0 ,b=b

*comparer la largeur du nouveau intervall n avec largeur pr-dtermine p

Si n >pcontinue

Si n <=parrter lAlgorithme (Fin)

3
TPN:01

4
TPN:01

Programme et Figure Affichage

x=[1:0.1:10]; iter=1 la solution est x0=5.500000


f=inline('x-exp(sin(x))'); f(x0)=5.006158
plot(x,f(x)); iter=2 la solution est x0=7.750000
grid; f(x0)=5.046361
xlabel('x') iter=3 la solution est x0=6.625000
f(x0)=5.226784
a=1; iter=4 la solution est x0=6.062500
b=10; f(x0)=5.259097
iter=0; iter=5 la solution est x0=5.781250
eps=1e-3; f(x0)=5.163161
if((f(a)*f(b))<0)
iter=6 la solution est x0=5.640625
while ((abs(b-a))>eps)
f(x0)=5.091400
iter=7 la solution est x0=5.570313
x0=(a+b)/2;
f(x0)=5.050356
iter=iter+1;
iter=8 la solution est x0=5.535156
if(f(a)*f(x0)<0)
f(x0)=5.028638
a=x0;
iter=9 la solution est x0=5.517578
a=a;
f(x0)=5.017492
else
iter=10 la solution est x0=5.508789
b=x0;
f(x0)=5.011848
b=b;
iter=11 la solution est x0=5.504395
end
f(x0)=5.009009
fprintf('iter=%d\t la solution est x0= iter=12 la solution est x0=5.502197
%f\t f(x0)=%f\n',iter,x0,f(x0)) f(x0)=5.007585
end iter=13 la solution est x0=5.501099
fprintf('la solution finale est x0= f(x0)=5.006872
%f\n',x0) iter=14 la solution est x0=5.500549
f(x0)=5.006515
else la solution finale est x0=5.500549
disp('"on ne peut pas faire de
dichotomie dans cet intervalle !!')
end

10

6
f(x)

-2
1 2 3 4 5 6 7 8 9 10
x

5
TPN:01

Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000


f=inline('x.^3-12*x.^2-60*x+46'); f(x0)=13.125000
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=30.265625
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=38.314453
a=0; iter=4 la solution est x0=0.062500
b=1; f(x0)=42.203369
iter=0; iter=5 la solution est x0=0.031250
eps=1e-3; f(x0)=44.113312
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=45.059574
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=45.530518
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=45.765442
a=a; iter=9 la solution est x0=0.001953
else f(x0)=45.882767
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=45.941395
end la solution finale est x0=0.000977
fprintf('iter=%d\t la solution est x0=
%f\t f(x0)=%f\n',iter,x0,f(x0))
end
fprintf('la solution finale est x0=
%f\n',x0)

else
disp('"on ne peut pas faire de
dichotomie dans cet intervalle !!')
end

50

40

30

20
f(x)

10

-10

-20

-30
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x

6
TPN:01
Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000 f(x0)=-


f=inline('x.^3-12*x.^2+1'); 1.875000
plot(x,f(x)); iter=2 la solution est x0=0.750000 f(x0)=-
grid; 5.328125
xlabel('x'); iter=3 la solution est x0=0.625000 f(x0)=-
ylabel('f(x)'); 3.443359
a=0; iter=4 la solution est x0=0.562500 f(x0)=-
b=1; 2.618896
iter=0; iter=5 la solution est x0=0.531250 f(x0)=-
eps=1e-3; 2.236786
if((f(a)*f(b))<0) iter=6 la solution est x0=0.515625 f(x0)=-
while ((abs(b-a))>eps) 2.053341
x0=(a+b)/2; iter=7 la solution est x0=0.507813 f(x0)=-
iter=iter+1; 1.963531
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.503906 f(x0)=-
a=x0; 1.919105
a=a; iter=9 la solution est x0=0.501953 f(x0)=-
else 1.897013
b=x0; iter=10 la solution est x0=0.500977
b=b; f(x0)=-1.885996
end la solution finale est x0=0.500977
fprintf('iter=%d\t la solution est x0=
%f\t f(x0)=%f\n',iter,x0,f(x0))
end
fprintf('la solution finale est x0=
%f\n',x0)

else
disp('"on ne peut pas faire de
dichotomie dans cet intervalle !!')
end

-2
f(x)

-4

-6

-8

-10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x

7
TPN:01
Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000


f=inline('cos(x)-x.^3'); f(x0)=0.752583
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=0.953287
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=0.990245
a=0; iter=4 la solution est x0=0.062500
b=1; f(x0)=0.997803
iter=0; iter=5 la solution est x0=0.031250
eps=1e-3; f(x0)=0.999481
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=0.999874
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=0.999969
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=0.999992
a=a; iter=9 la solution est x0=0.001953
else f(x0)=0.999998
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=1.000000
end la solution finale est x0=0.000977
fprintf('iter=%d\t la solution est x0=
%f\t f(x0)=%f\n',iter,x0,f(x0))
end
fprintf('la solution finale est x0=
%f\n',x0)

else
disp('"on ne peut pas faire de
dichotomie dans cet intervalle !!')
end

0.5
f(x)

-0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x

8
TPN:01
Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000


f=inline('); f(x0)=0.752583
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=0.953287
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=0.990245
a=0; iter=4 la solution est x0=0.062500
b=1; f(x0)=0.997803
iter=0; iter=5 la solution est x0=0.031250
eps=0.000001; f(x0)=0.999481
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=0.999874
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=0.999969
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=0.999992
a=a; iter=9 la solution est x0=0.001953
else f(x0)=0.999998
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=1.000000
end iter=11 la solution est x0=0.000488
fprintf('iter=%d\t la solution est x0= f(x0)=1.000000
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.000244
end f(x0)=1.000000
fprintf('la solution finale est x0= iter=13 la solution est x0=0.000122
%f\n',x0) f(x0)=1.000000
iter=14 la solution est x0=0.000061
f(x0)=1.000000
else
iter=15 la solution est x0=0.000031
disp('"on ne peut pas faire de
f(x0)=1.000000
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.000015
end
f(x0)=1.000000
iter=17 la solution est x0=0.000008
1
f(x0)=1.000000
iter=18 la solution est x0=0.000004
f(x0)=1.000000
iter=19 la solution est x0=0.000002
0.5 f(x0)=1.000000
iter=20 la solution est x0=0.000001
f(x0)=1.000000
f(x)

la solution finale est x0=0.000001


0

-0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x

9
TPN:01

10
TPN:01
Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000 f(x0)=-


f=inline('x.^3-12*x.^2+1'); 1.875000
plot(x,f(x)); iter=2 la solution est x0=0.750000 f(x0)=-
grid; 5.328125
xlabel('x'); iter=3 la solution est x0=0.625000 f(x0)=-
ylabel('f(x)'); 3.443359
a=0; iter=4 la solution est x0=0.562500 f(x0)=-
b=1; 2.618896
iter=0; iter=5 la solution est x0=0.531250 f(x0)=-
eps=0.000001; 2.236786
if((f(a)*f(b))<0) iter=6 la solution est x0=0.515625 f(x0)=-
while ((abs(b-a))>eps) 2.053341
x0=(a+b)/2; iter=7 la solution est x0=0.507813 f(x0)=-
iter=iter+1; 1.963531
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.503906 f(x0)=-
a=x0; 1.919105
a=a; iter=9 la solution est x0=0.501953 f(x0)=-
else 1.897013
b=x0; iter=10 la solution est x0=0.500977
b=b; f(x0)=-1.885996
end iter=11 la solution est x0=0.500488
fprintf('iter=%d\t la solution est x0= f(x0)=-1.880496
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.500244
end f(x0)=-1.877747
fprintf('la solution finale est x0= iter=13 la solution est x0=0.500122
%f\n',x0) f(x0)=-1.876373
iter=14 la solution est x0=0.500061
f(x0)=-1.875687
else
iter=15 la solution est x0=0.500031
disp('"on ne peut pas faire de
f(x0)=-1.875343
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.500015
end
f(x0)=-1.875172
2
iter=17 la solution est x0=0.500008
f(x0)=-1.875086
iter=18 la solution est x0=0.500004
0
f(x0)=-1.875043
iter=19 la solution est x0=0.500002
-2
f(x0)=-1.875021
iter=20 la solution est x0=0.500001
f(x)

-4
f(x0)=-1.875011
la solution finale est x0=0.500001
-6

-8

-10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x

11
TPN:01
Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000


f=inline('x.^3-12*x.^2-60*x+46'); f(x0)=13.125000
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=30.265625
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=38.314453
a=0; iter=4 la solution est x0=0.062500
b=1; f(x0)=42.203369
iter=0; iter=5 la solution est x0=0.031250
eps=0.000001; f(x0)=44.113312
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=45.059574
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=45.530518
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=45.765442
a=a; iter=9 la solution est x0=0.001953
else f(x0)=45.882767
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=45.941395
end iter=11 la solution est x0=0.000488
fprintf('iter=%d\t la solution est x0= f(x0)=45.970700
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.000244
end f(x0)=45.985351
fprintf('la solution finale est x0= iter=13 la solution est x0=0.000122
%f\n',x0) f(x0)=45.992676
iter=14 la solution est x0=0.000061
f(x0)=45.996338
else
iter=15 la solution est x0=0.000031
disp('"on ne peut pas faire de
f(x0)=45.998169
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.000015
end
f(x0)=45.999084
50
iter=17 la solution est x0=0.000008
f(x0)=45.999542
40 iter=18 la solution est x0=0.000004
f(x0)=45.999771
30
iter=19 la solution est x0=0.000002
20 f(x0)=45.999886
iter=20 la solution est x0=0.000001
f(x)

10
f(x0)=45.999943
0
la solution finale est x0=0.000001

-10

-20

-30
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x

12
TPN:01
Programme et Figure Affichage

x=[1:0.1:10]; iter=1 la solution est x0=5.500000


f=inline('x-exp(sin(x))'); f(x0)=5.006158
plot(x,f(x)); iter=2 la solution est x0=7.750000
grid; f(x0)=5.046361
xlabel('x'); iter=3 la solution est x0=6.625000
ylabel('f(x)'); f(x0)=5.226784
a=1; iter=4 la solution est x0=6.062500
b=10; f(x0)=5.259097
iter=0; iter=5 la solution est x0=5.781250
eps=0.000001; f(x0)=5.163161
if((f(a)*f(b))<0) iter=6 la solution est x0=5.640625
while ((abs(b-a))>eps) f(x0)=5.091400
x0=(a+b)/2; iter=7 la solution est x0=5.570313
iter=iter+1; f(x0)=5.050356
if(f(a)*f(x0)<0) iter=8 la solution est x0=5.535156
a=x0; f(x0)=5.028638
a=a; iter=9 la solution est x0=5.517578
else f(x0)=5.017492
b=x0; iter=10 la solution est x0=5.508789
b=b; f(x0)=5.011848
end iter=11 la solution est x0=5.504395
fprintf('iter=%d\t la solution est x0= f(x0)=5.009009
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=5.502197
end f(x0)=5.007585
fprintf('la solution finale est x0= iter=13 la solution est x0=5.501099
%f\n',x0) f(x0)=5.006872
iter=14 la solution est x0=5.500549
f(x0)=5.006515
else
iter=15 la solution est x0=5.500275
disp('"on ne peut pas faire de
f(x0)=5.006337
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=5.500137
end
f(x0)=5.006248
10
iter=17 la solution est x0=5.500069
f(x0)=5.006203
iter=18 la solution est x0=5.500034
8
f(x0)=5.006181
iter=19 la solution est x0=5.500017
6
f(x0)=5.006169
iter=20 la solution est x0=5.500009
f(x)

4
f(x0)=5.006164
iter=21 la solution est x0=5.500004
2 f(x0)=5.006161
iter=22 la solution est x0=5.500002
0 f(x0)=5.006160
iter=23 la solution est x0=5.500001
-2 f(x0)=5.006159
1 2 3 4 5 6 7 8 9 10
x iter=24 la solution est x0=5.500001
f(x0)=5.006159
la solution finale est x0=5.500001

13
TPN:01

14
TPN:01
Programme et Figure Affichage

x=[1:0.1:10]; iter=1 la solution est x0=5.500000


f=inline('x-exp(sin(x))'); f(x0)=5.006158
plot(x,f(x)); iter=2 la solution est x0=7.750000
grid; f(x0)=5.046361
xlabel('x'); iter=3 la solution est x0=6.625000
ylabel('f(x)'); f(x0)=5.226784
a=1; iter=4 la solution est x0=6.062500
b=10; f(x0)=5.259097
iter=0; iter=5 la solution est x0=5.781250
eps=0.000000001; f(x0)=5.163161
if((f(a)*f(b))<0) iter=6 la solution est x0=5.640625
while ((abs(b-a))>eps) f(x0)=5.091400
x0=(a+b)/2; iter=7 la solution est x0=5.570313
iter=iter+1; f(x0)=5.050356
if(f(a)*f(x0)<0) iter=8 la solution est x0=5.535156
a=x0; f(x0)=5.028638
a=a; iter=9 la solution est x0=5.517578
else f(x0)=5.017492
b=x0; iter=10 la solution est x0=5.508789
b=b; f(x0)=5.011848
end iter=11 la solution est x0=5.504395
fprintf('iter=%d\t la solution est x0= f(x0)=5.009009
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=5.502197
end f(x0)=5.007585
fprintf('la solution finale est x0= iter=13 la solution est x0=5.501099
%f\n',x0) f(x0)=5.006872
iter=14 la solution est x0=5.500549
f(x0)=5.006515
else
iter=15 la solution est x0=5.500275
disp('"on ne peut pas faire de
f(x0)=5.006337
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=5.500137
end
f(x0)=5.006248
10
iter=17 la solution est x0=5.500069
f(x0)=5.006203
iter=18 la solution est x0=5.500034
8
f(x0)=5.006181
iter=19 la solution est x0=5.500017
6
f(x0)=5.006169
iter=20 la solution est x0=5.500009
f(x)

4
f(x0)=5.006164
iter=21 la solution est x0=5.500004
2 f(x0)=5.006161
iter=22 la solution est x0=5.500002
0 f(x0)=5.006160
iter=23 la solution est x0=5.500001
-2 f(x0)=5.006159
1 2 3 4 5 6 7 8 9 10
x iter=24 la solution est x0=5.500001
f(x0)=5.006159
iter=25 la solution est x0=5.500000
f(x0)=5.006159
iter=26 la solution est x0=5.500000
f(x0)=5.006158
iter=27 la solution est x0=5.500000
f(x0)=5.006158

15
TPN:01
iter=28 la solution est x0=5.500000
f(x0)=5.006158
iter=29 la solution est x0=5.500000
f(x0)=5.006158
iter=30 la solution est x0=5.500000
f(x0)=5.006158
iter=31 la solution est x0=5.500000
f(x0)=5.006158
iter=32 la solution est x0=5.500000
f(x0)=5.006158
iter=33 la solution est x0=5.500000
f(x0)=5.006158
iter=34 la solution est x0=5.500000
f(x0)=5.006158
la solution finale est x0=5.500000

16
TPN:01

Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000


f=inline('x.^3-12*x.^2-60*x+46'); f(x0)=13.125000
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=30.265625
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=38.314453
a=0; iter=4 la solution est x0=0.062500
b=1; f(x0)=42.203369
iter=0; iter=5 la solution est x0=0.031250
eps=0.000000001; f(x0)=44.113312
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=45.059574
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=45.530518
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=45.765442
a=a; iter=9 la solution est x0=0.001953
else f(x0)=45.882767
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=45.941395
end iter=11 la solution est x0=0.000488
fprintf('iter=%d\t la solution est f(x0)=45.970700
x0=%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.000244
end f(x0)=45.985351
fprintf('la solution finale est x0= iter=13 la solution est x0=0.000122
%f\n',x0) f(x0)=45.992676
iter=14 la solution est x0=0.000061
f(x0)=45.996338
else
iter=15 la solution est x0=0.000031
disp('"on ne peut pas faire de
f(x0)=45.998169
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.000015
end
f(x0)=45.999084
iter=17 la solution est x0=0.000008
f(x0)=45.999542
50
iter=18 la solution est x0=0.000004
40 f(x0)=45.999771
iter=19 la solution est x0=0.000002
30
f(x0)=45.999886
20
iter=20 la solution est x0=0.000001
f(x0)=45.999943
iter=21 la solution est x0=0.000000
f(x)

10

0
f(x0)=45.999971
iter=22 la solution est x0=0.000000
-10 f(x0)=45.999986
iter=23 la solution est x0=0.000000
-20
f(x0)=45.999993
-30 iter=24 la solution est x0=0.000000
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
x f(x0)=45.999996
iter=25 la solution est x0=0.000000
f(x0)=45.999998
iter=26 la solution est x0=0.000000

17
TPN:01
f(x0)=45.999999
iter=27 la solution est x0=0.000000
f(x0)=46.000000
iter=28 la solution est x0=0.000000
f(x0)=46.000000
iter=29 la solution est x0=0.000000
f(x0)=46.000000
iter=30 la solution est x0=0.000000
f(x0)=46.000000
la solution finale est x0=0.000000

18
TPN:01

Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000 f(x0)=-


f=inline('x.^3-12*x.^2+1'); 1.875000
plot(x,f(x)); iter=2 la solution est x0=0.750000 f(x0)=-
grid; 5.328125
xlabel('x'); iter=3 la solution est x0=0.625000 f(x0)=-
ylabel('f(x)'); 3.443359
a=0; iter=4 la solution est x0=0.562500 f(x0)=-
b=1; 2.618896
iter=0; iter=5 la solution est x0=0.531250 f(x0)=-
eps=0.000000001; 2.236786
if((f(a)*f(b))<0) iter=6 la solution est x0=0.515625 f(x0)=-
while ((abs(b-a))>eps) 2.053341
x0=(a+b)/2; iter=7 la solution est x0=0.507813 f(x0)=-
iter=iter+1; 1.963531
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.503906 f(x0)=-
a=x0; 1.919105
a=a; iter=9 la solution est x0=0.501953 f(x0)=-
else 1.897013
b=x0; iter=10 la solution est x0=0.500977
b=b; f(x0)=-1.885996
end iter=11 la solution est x0=0.500488
fprintf('iter=%d\t la solution est x0= f(x0)=-1.880496
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.500244
end f(x0)=-1.877747
fprintf('la solution finale est x0= iter=13 la solution est x0=0.500122
%f\n',x0) f(x0)=-1.876373
iter=14 la solution est x0=0.500061
f(x0)=-1.875687
else
iter=15 la solution est x0=0.500031
disp('"on ne peut pas faire de
f(x0)=-1.875343
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.500015
end
f(x0)=-1.875172
iter=17 la solution est x0=0.500008
f(x0)=-1.875086
2
iter=18 la solution est x0=0.500004
f(x0)=-1.875043
0
iter=19 la solution est x0=0.500002
f(x0)=-1.875021
-2
iter=20 la solution est x0=0.500001
f(x0)=-1.875011
f(x)

-4
iter=21 la solution est x0=0.500000
f(x0)=-1.875005
-6
iter=22 la solution est x0=0.500000
f(x0)=-1.875003
-8 iter=23 la solution est x0=0.500000
f(x0)=-1.875001
-10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 iter=24 la solution est x0=0.500000
x f(x0)=-1.875001
iter=25 la solution est x0=0.500000
f(x0)=-1.875000
iter=26 la solution est x0=0.500000

19
TPN:01
f(x0)=-1.875000
iter=27 la solution est x0=0.500000
f(x0)=-1.875000
iter=28 la solution est x0=0.500000
f(x0)=-1.875000
iter=29 la solution est x0=0.500000
f(x0)=-1.875000
iter=30 la solution est x0=0.500000
f(x0)=-1.875000
la solution finale est x0=0.500000

20
TPN:01
Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000


f=inline('cos(x)-x.^3'); f(x0)=0.752583
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=0.953287
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=0.990245
a=0; iter=4 la solution est x0=0.062500
b=1; f(x0)=0.997803
iter=0; iter=5 la solution est x0=0.031250
eps=0.000000001; f(x0)=0.999481
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=0.999874
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=0.999969
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=0.999992
a=a; iter=9 la solution est x0=0.001953
else f(x0)=0.999998
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=1.000000
end iter=11 la solution est x0=0.000488
fprintf('iter=%d\t la solution est x0= f(x0)=1.000000
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.000244
end f(x0)=1.000000
fprintf('la solution finale est x0= iter=13 la solution est x0=0.000122
%f\n',x0) f(x0)=1.000000
iter=14 la solution est x0=0.000061
f(x0)=1.000000
else
iter=15 la solution est x0=0.000031
disp('"on ne peut pas faire de
f(x0)=1.000000
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.000015
end
f(x0)=1.000000
iter=17 la solution est x0=0.000008
f(x0)=1.000000
1
iter=18 la solution est x0=0.000004
f(x0)=1.000000
iter=19 la solution est x0=0.000002
f(x0)=1.000000
0.5
iter=20 la solution est x0=0.000001
f(x0)=1.000000
f(x)

iter=21 la solution est x0=0.000000


f(x0)=1.000000
0 iter=22 la solution est x0=0.000000
f(x0)=1.000000
iter=23 la solution est x0=0.000000
f(x0)=1.000000
-0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
iter=24 la solution est x0=0.000000
x f(x0)=1.000000
iter=25 la solution est x0=0.000000
f(x0)=1.000000
iter=26 la solution est x0=0.000000
f(x0)=1.000000
iter=27 la solution est x0=0.000000
f(x0)=1.000000

21
TPN:01
iter=28 la solution est x0=0.000000
f(x0)=1.000000
iter=29 la solution est x0=0.000000
f(x0)=1.000000
iter=30 la solution est x0=0.000000
f(x0)=1.000000
la solution finale est x0=0.000000

22
TPN:01
Programme et Figure Affichage

x=[0:0.1:1]; iter=1 la solution est x0=0.500000


f=inline('cos(x)-x.^3'); f(x0)=0.752583
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=0.953287
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=0.990245
a=0; iter=4 la solution est x0=0.062500
b=1; f(x0)=0.997803
iter=0; iter=5 la solution est x0=0.031250
eps=0.000000000001; f(x0)=0.999481
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=0.999874
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=0.999969
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=0.999992
a=a; iter=9 la solution est x0=0.001953
else f(x0)=0.999998
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=1.000000
end iter=11 la solution est x0=0.000488
fprintf('iter=%d\t la solution est x0= f(x0)=1.000000
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.000244
end f(x0)=1.000000
fprintf('la solution finale est x0= iter=13 la solution est x0=0.000122
%f\n',x0) f(x0)=1.000000
iter=14 la solution est x0=0.000061
f(x0)=1.000000
else
iter=15 la solution est x0=0.000031
disp('"on ne peut pas faire de
f(x0)=1.000000
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.000015
end
f(x0)=1.000000
iter=17 la solution est x0=0.000008
f(x0)=1.000000
1
iter=18 la solution est x0=0.000004
f(x0)=1.000000
iter=19 la solution est x0=0.000002
f(x0)=1.000000
0.5 iter=20 la solution est x0=0.000001
f(x0)=1.000000
iter=21 la solution est x0=0.000000
f(x)

f(x0)=1.000000
iter=22 la solution est x0=0.000000
0
f(x0)=1.000000
iter=23 la solution est x0=0.000000
f(x0)=1.000000
iter=24 la solution est x0=0.000000
-0.5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 f(x0)=1.000000
x iter=25 la solution est x0=0.000000
f(x0)=1.000000
iter=26 la solution est x0=0.000000
f(x0)=1.000000
iter=27 la solution est x0=0.000000
f(x0)=1.000000

23
TPN:01
iter=28 la solution est x0=0.000000
f(x0)=1.000000
iter=29 la solution est x0=0.000000
f(x0)=1.000000
iter=30 la solution est x0=0.000000
f(x0)=1.000000
iter=31 la solution est x0=0.000000
f(x0)=1.000000
iter=32 la solution est x0=0.000000
f(x0)=1.000000
iter=33 la solution est x0=0.000000
f(x0)=1.000000
iter=34 la solution est x0=0.000000
f(x0)=1.000000
iter=35 la solution est x0=0.000000
f(x0)=1.000000
iter=36 la solution est x0=0.000000
f(x0)=1.000000
iter=37 la solution est x0=0.000000
f(x0)=1.000000
iter=38 la solution est x0=0.000000
f(x0)=1.000000
iter=39 la solution est x0=0.000000
f(x0)=1.000000
iter=40 la solution est x0=0.000000
f(x0)=1.000000
la solution finale est x0=0.000000

Programme et Figure Affichage

24
TPN:01
x=[0:0.1:1]; iter=1 la solution est x0=0.500000 f(x0)=-
f=inline('x.^3-12*x.^2+1'); 1.875000
plot(x,f(x)); iter=2 la solution est x0=0.750000 f(x0)=-
grid; 5.328125
xlabel('x'); iter=3 la solution est x0=0.625000 f(x0)=-
ylabel('f(x)'); 3.443359
a=0; iter=4 la solution est x0=0.562500 f(x0)=-
b=1; 2.618896
iter=0; iter=5 la solution est x0=0.531250 f(x0)=-
eps=0.000000000001; 2.236786
if((f(a)*f(b))<0) iter=6 la solution est x0=0.515625 f(x0)=-
while ((abs(b-a))>eps) 2.053341
x0=(a+b)/2; iter=7 la solution est x0=0.507813 f(x0)=-
iter=iter+1; 1.963531
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.503906 f(x0)=-
a=x0; 1.919105
a=a; iter=9 la solution est x0=0.501953 f(x0)=-
else 1.897013
b=x0; iter=10 la solution est x0=0.500977
b=b; f(x0)=-1.885996
end iter=11 la solution est x0=0.500488
fprintf('iter=%d\t la solution est x0= f(x0)=-1.880496
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.500244
end f(x0)=-1.877747
fprintf('la solution finale est x0= iter=13 la solution est x0=0.500122
%f\n',x0) f(x0)=-1.876373
iter=14 la solution est x0=0.500061
f(x0)=-1.875687
else
iter=15 la solution est x0=0.500031
disp('"on ne peut pas faire de
f(x0)=-1.875343
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.500015
end
f(x0)=-1.875172
iter=17 la solution est x0=0.500008
f(x0)=-1.875086
2
iter=18 la solution est x0=0.500004
f(x0)=-1.875043
0
iter=19 la solution est x0=0.500002
f(x0)=-1.875021
-2
iter=20 la solution est x0=0.500001
f(x0)=-1.875011
f(x)

-4 iter=21 la solution est x0=0.500000


f(x0)=-1.875005
-6 iter=22 la solution est x0=0.500000
f(x0)=-1.875003
-8 iter=23 la solution est x0=0.500000
f(x0)=-1.875001
-10
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
iter=24 la solution est x0=0.500000
x f(x0)=-1.875001
iter=25 la solution est x0=0.500000
f(x0)=-1.875000
iter=26 la solution est x0=0.500000
f(x0)=-1.875000
iter=27 la solution est x0=0.500000
f(x0)=-1.875000
iter=28 la solution est x0=0.500000
f(x0)=-1.875000

25
TPN:01
iter=29 la solution est x0=0.500000
f(x0)=-1.875000
iter=30 la solution est x0=0.500000
f(x0)=-1.875000
iter=31 la solution est x0=0.500000
f(x0)=-1.875000
iter=32 la solution est x0=0.500000
f(x0)=-1.875000
iter=33 la solution est x0=0.500000
f(x0)=-1.875000
iter=34 la solution est x0=0.500000
f(x0)=-1.875000
iter=35 la solution est x0=0.500000
f(x0)=-1.875000
iter=36 la solution est x0=0.500000
f(x0)=-1.875000
iter=37 la solution est x0=0.500000
f(x0)=-1.875000
iter=38 la solution est x0=0.500000
f(x0)=-1.875000
iter=39 la solution est x0=0.500000
f(x0)=-1.875000
iter=40 la solution est x0=0.500000
f(x0)=-1.875000
la solution finale est x0=0.500000

26
TPN:01
Programme et Figure Affichage
I
x=[0:0.1:1]; ter=1 la solution est x0=0.500000
f=inline('x.^3-12*x.^2-60*x+46'); f(x0)=13.125000
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=30.265625
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=38.314453
a=0; iter=4 la solution est x0=0.062500
b=1; f(x0)=42.203369
iter=0; iter=5 la solution est x0=0.031250
eps=0.000000000001; f(x0)=44.113312
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=45.059574
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=45.530518
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=45.765442
a=a; iter=9 la solution est x0=0.001953
else f(x0)=45.882767
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=45.941395
end iter=11 la solution est x0=0.000488
fprintf('iter=%d\t la solution est x0= f(x0)=45.970700
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.000244
end f(x0)=45.985351
fprintf('la solution finale est x0= iter=13 la solution est x0=0.000122
%f\n',x0) f(x0)=45.992676
iter=14 la solution est x0=0.000061
f(x0)=45.996338
else
iter=15 la solution est x0=0.000031
disp('"on ne peut pas faire de
f(x0)=45.998169
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.000015
end
f(x0)=45.999084
iter=17 la solution est x0=0.000008
f(x0)=45.999542
50
iter=18 la solution est x0=0.000004
40
f(x0)=45.999771
iter=19 la solution est x0=0.000002
30 f(x0)=45.999886
iter=20 la solution est x0=0.000001
20
f(x0)=45.999943
iter=21 la solution est x0=0.000000
f(x)

10
f(x0)=45.999971
0 iter=22 la solution est x0=0.000000
f(x0)=45.999986
-10
iter=23 la solution est x0=0.000000
-20 f(x0)=45.999993
iter=24 la solution est x0=0.000000
-30
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 f(x0)=45.999996
x iter=25 la solution est x0=0.000000
f(x0)=45.999998
iter=26 la solution est x0=0.000000
f(x0)=45.999999
iter=27 la solution est x0=0.000000
f(x0)=46.000000

27
TPN:01
iter=28 la solution est x0=0.000000
f(x0)=46.000000
iter=29 la solution est x0=0.000000
f(x0)=46.000000
iter=30 la solution est x0=0.000000
f(x0)=46.000000
iter=31 la solution est x0=0.000000
f(x0)=46.000000
iter=32 la solution est x0=0.000000
f(x0)=46.000000
iter=33 la solution est x0=0.000000
f(x0)=46.000000
iter=34 la solution est x0=0.000000
f(x0)=46.000000
iter=35 la solution est x0=0.000000
f(x0)=46.000000
iter=36 la solution est x0=0.000000
f(x0)=46.000000
iter=37 la solution est x0=0.000000
f(x0)=46.000000
iter=38 la solution est x0=0.000000
f(x0)=46.000000
iter=39 la solution est x0=0.000000
f(x0)=46.000000
iter=40 la solution est x0=0.000000
f(x0)=46.000000
la solution finale est x0=0.000000

28
TPN:01
Programme et Figure Affichage

x=[1:0.1:10]; iter=1 la solution est x0=0.500000


f=inline('x-exp(sin(x))'); f(x0)=13.125000
plot(x,f(x)); iter=2 la solution est x0=0.250000
grid; f(x0)=30.265625
xlabel('x'); iter=3 la solution est x0=0.125000
ylabel('f(x)'); f(x0)=38.314453
a=1; iter=4 la solution est x0=0.062500
b=10; f(x0)=42.203369
iter=0; iter=5 la solution est x0=0.031250
eps=0.000000000001; f(x0)=44.113312
if((f(a)*f(b))<0) iter=6 la solution est x0=0.015625
while ((abs(b-a))>eps) f(x0)=45.059574
x0=(a+b)/2; iter=7 la solution est x0=0.007813
iter=iter+1; f(x0)=45.530518
if(f(a)*f(x0)<0) iter=8 la solution est x0=0.003906
a=x0; f(x0)=45.765442
a=a; iter=9 la solution est x0=0.001953
else f(x0)=45.882767
b=x0; iter=10 la solution est x0=0.000977
b=b; f(x0)=45.941395
end iter=11 la solution est x0=0.000488
fprintf('iter=%d\t la solution est x0= f(x0)=45.970700
%f\t f(x0)=%f\n',iter,x0,f(x0)) iter=12 la solution est x0=0.000244
end f(x0)=45.985351
fprintf('la solution finale est x0= iter=13 la solution est x0=0.000122
%f\n',x0) f(x0)=45.992676
iter=14 la solution est x0=0.000061
f(x0)=45.996338
else
iter=15 la solution est x0=0.000031
disp('"on ne peut pas faire de
f(x0)=45.998169
dichotomie dans cet intervalle !!')
iter=16 la solution est x0=0.000015
end
f(x0)=45.999084
-0.95
iter=17 la solution est x0=0.000008
f(x0)=45.999542
-1 iter=18 la solution est x0=0.000004
f(x0)=45.999771
-1.05
iter=19 la solution est x0=0.000002
-1.1 f(x0)=45.999886
iter=20 la solution est x0=0.000001
f(x)

-1.15
f(x0)=45.999943
-1.2
iter=21 la solution est x0=0.000000
f(x0)=45.999971
-1.25 iter=22 la solution est x0=0.000000
-1.3
f(x0)=45.999986
iter=23 la solution est x0=0.000000
-1.35
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
f(x0)=45.999993
x iter=24 la solution est x0=0.000000
f(x0)=45.999996
iter=25 la solution est x0=0.000000
f(x0)=45.999998
iter=26 la solution est x0=0.000000
f(x0)=45.999999
iter=27 la solution est x0=0.000000
f(x0)=46.000000

29
TPN:01
iter=28 la solution est x0=0.000000
f(x0)=46.000000
iter=29 la solution est x0=0.000000
f(x0)=46.000000
iter=30 la solution est x0=0.000000
f(x0)=46.000000
iter=31 la solution est x0=0.000000
f(x0)=46.000000
iter=32 la solution est x0=0.000000
f(x0)=46.000000
iter=33 la solution est x0=0.000000
f(x0)=46.000000
iter=34 la solution est x0=0.000000
f(x0)=46.000000
iter=35 la solution est x0=0.000000
f(x0)=46.000000
iter=36 la solution est x0=0.000000
f(x0)=46.000000
iter=37 la solution est x0=0.000000
f(x0)=46.000000
iter=38 la solution est x0=0.000000
f(x0)=46.000000
iter=39 la solution est x0=0.000000
f(x0)=46.000000
iter=40 la solution est x0=0.000000
f(x0)=46.000000
la solution finale est x0=0.000000
"on ne peut pas faire de dichotomie dans cet
intervalle !!

CONCLUSION :
Un gros avantage de la mthode de dichotomie est quelle
permet de connaitre le nombre ditrations ncessaires en
fonction de la prcision voulue. Elle est de plus trs simple

30
TPN:01
programmer. Son inconvnient majeur rside dans lhypothse de
dpart () () < 0 qui laisse de cot toutes les fonctions
qui sannulent sans changer de signe

31
TPN:01

32

S-ar putea să vă placă și