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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / integration / TP3i / verifie_nullite_gauss_symb.m
1 function [eta1,eta2]=verifie_nullite_gauss_symb(c,n)\r
2 \r
3 \r
4 %       verifie_nullite_gauss_symb : calcul de l'orthogonalité  et de la normalisation des polynômes en symbolique\r
5 %\r
6 % *********************************************************\r
7 %\r
8 %       [eta1,eta2]=verifie_nullite_gauss_symb(c,n) : \r
9 %        vérifie en symbolique que les polynômes de Gauss P_0, ..., P_n\r
10 %        sont orthogonaux avec la condition de normalité :\r
11 %            P_r(1)=1 pour Legendre et Tchebytchev\r
12 %            P_r(0)=1 pour Laguerre\r
13 %            le coefficient domimant de P_r est 2^{r} pour Hermite\r
14 %\r
15 %       variables d'entrées : \r
16 %    *  n : entier naturel.\r
17 %     * c définit la méthode : \r
18 %            c=1 : Gauss-Legendre,\r
19 %            c=2 : Gauss-Tchebytchev,\r
20 %            c=3 : Gauss-Hermite,\r
21 %            c=4 : Gauss-Laguerre.\r
22 %       variables de sortie eta1 et eta2 où en symbolique, \r
23 %       eta1=0 si max_{0<=r<=n} |P_r(1)-1|=0 pour Legendre et Tchebychev\r
24 %              si max_{0<=r<=n} |P_r(0)-1|=0 pour Laguerre\r
25 %              si max_{0<=r<=n} |2^r-coefficient dominant(P_r)|=0 pour Hermite\r
26 %          et \r
27 %       eta2=0 si max_{0<=r,s<=n, r~=s}|<P_r,P_s>|=0 \r
28 %              (en symbolique)\r
29 %\r
30 %   eta1 et eta2 doivent être nuls.\r
31 %\r
32\r
33 % ************ Fonctions auxiliaires utilisées ************\r
34 %\r
35 %    calcul_poly_gauss_symb, polyval_symb\r
36 %\r
37 % *********************************************************\r
38 \r
39 \r
40 % Contrôles d'entrée\r
41 % nombre d'arguments\r
42 if nargin~=2\r
43    error('nombre d''arguments de la fonction incorrect');\r
44 end\r
45 % autres tests éventuels \r
46 if (fix(n)~=n) | (n<0)\r
47    error('l''entier n doit être un entier naturel');\r
48 end\r
49 if ~((c==1) | (c==2) | (c==3) | (c==4))\r
50    error('c doit être un entier égal à 1, 2, 3 ou 4');\r
51 end\r
52 \r
53 % Corps d'algorithme.\r
54 P=calcul_poly_gauss_symb(c,n);\r
55 ind=0;\r
56 if (c==1) | (c==2)\r
57    for r=0:n\r
58       auxi=polyval_symb(P(r+1,1:r+1),1)-sym(1);\r
59       indloc=~(auxi==0);\r
60       ind=max(ind,indloc);\r
61    end\r
62 end\r
63 if (c==3)\r
64    for r=0:n\r
65       auxi=P(r+1,1);\r
66       auxi=auxi-2^(sym(r));\r
67       indloc=~(auxi==0);\r
68       ind=max(ind,indloc);\r
69    end\r
70 end\r
71 if (c==4) \r
72    for r=0:n\r
73       auxi=polyval_symb(P(r+1,1:r+1),0)-sym(1);\r
74       indloc=~(auxi==0);\r
75       ind=max(ind,indloc);\r
76    end\r
77 end\r
78 eta1=ind;\r
79 disp('vérification initiale');\r
80 if ~(ind)\r
81    disp('ok !!');\r
82 else\r
83    disp('erreur !!');\r
84 end\r
85 syms x a b;\r
86 switch c\r
87    case 1\r
88       a=sym(-1);\r
89       b=sym(1);\r
90       w=sym(1);      \r
91    case 2\r
92       a=sym(-1);\r
93       b=sym(1);\r
94       w=1/sqrt(1-x^2);      \r
95    case 3\r
96       a=-sym(inf);\r
97       b=sym(inf);\r
98       w=exp(-x^2);\r
99    case 4\r
100       a=sym(0);\r
101       b=sym(+inf);\r
102       w=exp(-x);\r
103    end     \r
104 ind=0;   \r
105 for r=0:n\r
106    for s=0:r-1\r
107       f=polyval_symb(P(r+1,1:r+1),x);\r
108       g=polyval_symb(P(s+1,1:s+1),x);\r
109       auxi=simplify(int(f*g*w,a,b));\r
110       indloc=~(auxi==0);\r
111       ind=max(indloc,ind);\r
112    end\r
113    disp(['vérification pour r=',int2str(r)]);\r
114    if ~(ind)\r
115       disp('ok !!');\r
116    else\r
117       disp('erreur !!');\r
118    end\r
119 end\r
120 eta2=ind;\r