]> AND Private Git Repository - cours-mesi.git/blob - tel/TPmatlab/integration/TP3f/demo_compar_methode_int.m
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / integration / TP3f / demo_compar_methode_int.m
1 % script : demo_compar_methode_int compare les quatre méthodes d'intégrations \r
2 % - des rectangles ,\r
3 % - du point milieu ,\r
4 % - des trapèzes ,\r
5 % - de Simpson .\r
6 % en comparant l'intégrale calculée avec l'intégrale exacte.\r
7 % en terme d'erreur commise.\r
8 %\r
9 %\r
10 % ************ Fonctions auxiliaires utilisées ************\r
11 %  \r
12 %   saisiefonction, int_fcn\r
13 %\r
14 % *********************************************************\r
15 \r
16 \r
17 % ATTENTION : si erreur nulle, log(0)/log(10)=log10d0;\r
18 log10d0=-20;\r
19 \r
20 a=input('Entrez l''extrémité inférieure de [a,b] : ');\r
21 b=input('Entrez l''extrémité supérieure de [a,b] : ');\r
22 nmin=input('Entrez la puissance de dix du nombre minimum de point de discrétisation : ');\r
23 nmax=input('Entrez la puissance de dix du nombre maximum de point de discrétisation : ');\r
24 p=input('Entrez le nombre total de point de calculs : ');\r
25 disp(' ');\r
26 disp(' ');\r
27 disp('entrée de la fonction à intégrer');\r
28 ch1=saisiefonction;\r
29 disp(' ');\r
30 disp(' ');\r
31 disp('entrée de sa primitive');\r
32 ch2=saisiefonction;\r
33 x=zeros(1,p);\r
34 erreur=zeros(4,p);\r
35 nombrecalcul=zeros(4,p);\r
36 % calcul des erreurs pour les quatre méthodes\r
37 integraleexacte=feval(ch2,b)-feval(ch2,a);\r
38 compteur=0;\r
39 for k=logspace(nmin,nmax,p)\r
40    compteur=compteur+1;\r
41    for methode=1:4\r
42       kf=fix(k);\r
43       x(compteur)=kf;\r
44       intva=int_fcn(methode,kf,a,b,ch1);\r
45       err=abs(intva-integraleexacte);\r
46       if (err==0)\r
47          erreur(methode,compteur)=log10d0;\r
48       else\r
49          erreur(methode,compteur)=log10(err);\r
50       end\r
51    end\r
52 end\r
53 log10x=log10(x);\r
54 % tracé des erreurs commises  par les différentes méthodes\r
55 plot(log10x,erreur(1,:),'b',...\r
56      log10x,erreur(2,:),'r',...\r
57      log10x,erreur(3,:),'g',...\r
58      log10x,erreur(4,:),'y');\r
59 if exist(ch1)==1\r
60    title(['erreur d''intégration pour la fonction ','inline(',formula(ch1),')']);\r
61 else\r
62    title(['erreur d''intégration pour la fonction ',ch1]);\r
63 end\r
64 xlabel('logarithme 10 du nombre de points d''intégration');\r
65 ylabel('logarithme 10 de l''erreur d''intégration');\r
66 legend('rectangle','trapèzes','milieux','Simpson',0);\r
67 \r
68 \r