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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / integration / TP3d / choix_du_support.m
1 function [W1,W2,W3]=choix_du_support(pd1,pd2,pd3,v1,v2,v3,verif)\r
2 % calcule les poids explicites d'une formule de quadrature et vérifie\r
3 % son caractère exact pour les fonctions polynomes de P2.\r
4 %\r
5 % variables d'entrée\r
6 % pd1,pd2,pd3 sont les symboliques issus de la fonction\r
7 % recherche_poids pour le problème considéré.\r
8 % v1,v2,v3 sont trois valeurs distinctes de l'intervalle [-1,1]\r
9 % qui particularisent les valeurs formelles.\r
10 % verif est un booléen\r
11 % si verif=1: le logiciel vérifie formellement que les intégrales\r
12 % exacte et approchée coincident pour les fonctions considérées;\r
13 % sinon, il omet cette vérification.\r
14 %\r
15 % variables de sortie\r
16 % W1,W2,W3 désignent les poids de la formule de quadrature.\r
17 % Ainsi l'intégrale I de la fonction f mesurée est donnée par:\r
18 % I=W1f(v1)+W2f(v2)+W3f(v3).\r
19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
20 %                   Fonctions connexes appelées\r
21 %\r
22 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\r
23 \r
24 % pour l'exemple, intervention de globales!\r
25 global t1 t2 t3;\r
26 \r
27 % tests d'entrée\r
28 if nargin~=7\r
29     error('Nombre des arguments incorrect');\r
30 end\r
31 v=diff(sort([v1 v2 v3]));\r
32 if max(v.^2)>1\r
33     error('Les points ne sont pas tous dans [-1,1].Voir controle.');\r
34 end\r
35 if sum(v==0)>0\r
36     error('Les points ne sont pas distincts. Voir controle.');\r
37 end\r
38 \r
39 % algorithme proprement dit\r
40 v=[v1 v2 v3];\r
41 v=sym(v,'r');\r
42 poids=[pd1 pd2 pd3];\r
43 poids_expl=sym(subs(poids,[t1 t2 t3],[v1 v2 v3]),'r');\r
44 W1=poids_expl(1);W2=poids_expl(2);W3=poids_expl(3);\r
45 \r
46 % traitement de la vérification si l'utilisateur l'a demandée\r
47 \r
48 if verif==1\r
49     syms a b c x;\r
50     ch1='On veut intégrer sur [-1,1] la fonction f donnée par';\r
51     ch2='f(x)=ax^2+bx+c, où a,b,c sont symboliques.';\r
52     ch3='La valeur exacte de l''intégrale est :';\r
53     ch4='La valeur fournie par formule de quadrature est :';\r
54     ch5='obtenue à partir de la valeur du signal aux dates';\r
55     ch6='avec les poids respectifs';\r
56     ch7='L''écart entre les deux expressions est de :';\r
57     fx=a*x^2+b*x+c;\r
58     v_app=W1*subs(fx,x,v1)+W2*subs(fx,x,v2)+W3*subs(fx,x,v3);\r
59     % qu'on peut remplacer par un produit matriciel!\r
60     v_ex=int(fx,x,-1,1);\r
61     % l'indication de x est inutile en fait...\r
62     ecart=v_app-v_ex;\r
63     \r
64     % affichage des résultats\r
65     disp(ch1);disp(ch2);\r
66     disp(ch3);v_ex\r
67     disp(ch4);v_app\r
68     disp(ch5);v\r
69     disp(ch6);poids_expl\r
70     disp(ch7);ecart\r
71 end\r
72     \r