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

Private GIT Repository
ajout de partiels
[cours-mesi.git] / tel / TPmatlab / integration / TP3f / demo_compar_methode_int_inc.m
1 % script : demo_compar_methode_int_inc 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 \r
7 % en comparant l'intégrale calculée avec N points \r
8 % avec l'intégrale calculée avec 2N points\r
9 % en terme d'erreur.\r
10 %\r
11 %\r
12 % ************ Fonctions auxiliaires utilisées ************\r
13 %  \r
14 %   saisiefonction, int_fcn\r
15 %\r
16 % *********************************************************\r
17 \r
18 \r
19 % ATTENTION : si erreur nulle, log(0)/log(10)=log10d0;\r
20 log10d0=-20;\r
21 \r
22 a=input('Entrez l''extrémité inférieure de [a,b] : ');\r
23 b=input('Entrez l''extrémité supérieure de [a,b] : ');\r
24 nmin=input('Entrez la puissance de dix du nombre minimum de point de discrétisation : ');\r
25 nmax=input('Entrez la puissance de dix du nombre maximum de point de discrétisation : ');\r
26 p=input('Entrez le nombre total de point de calculs : ');\r
27 disp(' ');\r
28 disp('entrée de la fonction à intégrer');\r
29 ch1=saisiefonction;\r
30 x=zeros(1,p);\r
31 erreur=zeros(4,p);\r
32 temps=zeros(4,p);\r
33 nombrecalcul=zeros(4,p);\r
34 % calcul des erreurs pour les quatre méthodes\r
35 compteur=0;\r
36 for k=logspace(nmin,nmax,p)\r
37    compteur=compteur+1;\r
38    for methode=1:4\r
39       kf=fix(k);\r
40       x(compteur)=kf;\r
41       intva=int_fcn(methode,kf,a,b,ch1);\r
42       intvab=int_fcn(methode,2*kf,a,b,ch1);\r
43       err=abs(intva-intvab);\r
44       if (err==0)\r
45          erreur(methode,compteur)=log10d0;\r
46       else\r
47          erreur(methode,compteur)=log10(err);\r
48       end\r
49    end\r
50 end\r
51 \r
52 \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