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

Private GIT Repository
j
[cours-mesi.git] / tel / TPmatlab / integration / TP3g / calcul_poly_gauss_symb_dir.m
1 function P=calcul_poly_gauss_symb_dir(c,n)\r
2 \r
3 %       calcul_poly_gauss_symb_dir : calcul des polynômes de Gauss en symbolique directement\r
4 %\r
5 % *********************************************************\r
6 %\r
7 % P=calcul_poly_gauss_symb_dir(c,n) renvoie les polynômes de Gauss P_0,P_1,...,P_n\r
8 %   pour les quatre méthodes génériques (Legendre, Tchebytchev, Hermite \r
9 %   et Laguerre; calcul par l'expression explicite.\r
10 %\r
11 %       variables d'entrées : \r
12 %    *  n : entier naturel.\r
13 %     * c définit la méthode : \r
14 %            c=1 : Gauss-Legendre,\r
15 %            c=2 : Gauss-Tchebytchev,\r
16 %            c=3 : Gauss-Hermite,\r
17 %            c=4 : Gauss-Laguerre.\r
18 %       variables de sortie\r
19 %     * P : tableau de taille (n+1)*(n+1) tel que \r
20 %           pour tout i dans {1,...,n+1}, L(i,1:i) contient\r
21 %           le polynôme L_{i-1} (coefficient dominant en tête)\r
22 %           à coefficients symboliques\r
23\r
24\r
25 % ************ Fonctions auxiliaires utilisées ************\r
26 %\r
27 %       aucune\r
28 %\r
29 % *********************************************************\r
30 %\r
31 \r
32 % Contrôles d'entrée\r
33 % nombre d'arguments\r
34 if nargin~=2\r
35    error('nombre d''arguments de la fonction incorrect');\r
36 end\r
37 % autres tests éventuels \r
38 if (fix(n)~=n) | (n<0)\r
39    error('l''entier n doit être un entier naturel');\r
40 end\r
41 if ~((c==1) | (c==2) | (c==3) | (c==4))\r
42    error('c doit être un entier égal à 1, 2, 3 ou 4');\r
43 end\r
44 \r
45 % Corps d'algorithme.\r
46 P=zeros(n+1,n+1);\r
47 P=sym(P);\r
48 syms x;\r
49 switch(c)\r
50    case 1\r
51       P(1)=sym(1);\r
52       Q=sym(1);\r
53       a=sym(1);\r
54       b=sym(1);\r
55       for k=1:n\r
56          Q=Q*(x^2-1);\r
57          a=a*sym(2);\r
58          b=b*sym(k);\r
59          R=diff(Q,k);\r
60          P(k+1,1:k+1)=sym(sym2poly(expand(simplify(1/(a*b)*R))));\r
61       end\r
62    case 2\r
63       for k=0:n\r
64          P(k+1,1:k+1)=sym(sym2poly(expand(cos(sym(k)*acos(x)))));\r
65       end   \r
66    case 3\r
67       P(1)=sym(1);\r
68       R=exp(-x^2);\r
69       for k=1:n\r
70          R=diff(R);\r
71          P(k+1,1:k+1)=sym(sym2poly((-1)^k*expand(simplify(exp(x^2)*R))));\r
72       end\r
73    case 4\r
74       P(1)=sym(1);\r
75       a=sym(1);\r
76       c=sym(1);\r
77       for k=1:n\r
78          a=a*x;\r
79          c=c*sym(k);\r
80          Q=(exp(-x)*a);\r
81          R=diff(Q,k);\r
82          P(k+1,1:k+1)=sym(sym2poly(expand(simplify(exp(x)*R))/c));\r
83       end\r
84 end\r
85