1 function [ch_pol,ch_elem,coef]=elem_simp(x,N)
\r
2 % décompose certaines fractions rationnelles en éléments simples
\r
5 % x est le vecteur réel des poles de la fraction rationnelle,
\r
6 % dont sera issu par la fonction poly, le dénominateur D(x).
\r
7 % N est le numérateur de la fraction rationnelle,
\r
8 % passé comme un polynome matlab, c'est-à-dire un vecteur.
\r
10 % variables de sortie
\r
11 % ch_pol est une chaine représentant la partie polynomiale, quotient
\r
12 % obtenu dans la division euclidienne de N par D(x)=(x-x1)...(x-xn).
\r
13 % ch_elem est une chaine représentant les éléments simples
\r
14 % au sens ordinaire en fonction de coefficients fournis dans coef.
\r
15 % coef peut etre forcé à une écriture symbolique (ici rationnelle).
\r
17 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
18 % Fonctions connexes appelées
\r
19 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
21 % Tests d'entrée généraux
\r
23 error('Nombre de chapms incorrect');
\r
26 error('Les poles doivent etre réels pour l''instant');
\r
30 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
31 % Mise sous forme conventionnelle de la fraction
\r
32 % calcul du dénominateur
\r
35 % désormais on travaille avec R/D qui correspond à l'étude
\r
36 % proposée au début dans le tp.
\r
37 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\r
40 % Premier élément du résultat
\r
41 ch_pol=poly2str(Q,'x');
\r
44 % recherche de l'existence de poles multiples dans x
\r
45 % tri de x pour faciliter le repérage des redondances
\r
47 % détection du nombre de poles multiples
\r
48 pol_mult=sum(diff(x)==0);
\r
50 % ALGORITHME GENERAL
\r
54 % il s'agit de l'étude demandée dans ce tp.
\r
57 coef=polyval(R,x)./polyval(der,x);
\r
62 ch=['/(x-' num2str(x(i)) ')'];
\r
64 ch=['/(x+' num2str(-x(i)) ')'];
\r
68 ch_elem=[ch_elem ' + a' num2str(i) ch];
\r
70 % à supprimer éventuellement par transformation en commentaire!
\r
74 % étude à compléter par l'utilisateur...
\r
75 % Voir indications dans le fichier de documentation.
\r
76 disp('Il existe au moins un pole multiple. Développez l''étude générale.')
\r