0% ont trouvé ce document utile (0 vote)
5 vues3 pages

TP Matlab : Manipulation de polynômes

Hgghhkhghb.

Transféré par

hermann dikongue
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
5 vues3 pages

TP Matlab : Manipulation de polynômes

Hgghhkhghb.

Transféré par

hermann dikongue
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP de Matlab - Année 2009/2010 Victor Poupet et Pascal Vanier

TP no 5 - Applications pratiques : retour aux mathématiques

Tous les sujets et les corrigés sont disponibles aux adresses suivantes :
[Link]
[Link]

Exercice 1. Monsieur et madame Ohm ont une fille...

Dans cet exercice, nous allons voir comment utiliser Matlab pour représenter et manipuler des poly-
nômes à coefficients réels ou complexes.
1. En considérant les polynômes comme des suites presques nulles de coefficients, comment proposez-
vous de les représenter simplement en Matlab ?
Réponse : Il suffit de les représenter par des vecteurs : en effet, un polynôme étant déterminé par ses
coefficients, il suffit de stocker ceux-ci. La méthode la plus intelligente consiste à stocker le coefficient
du monôme de degré 0 dans la première coordonnée du vecteur et le coefficient du monôme de
plus haut degré dans la dernière. On décide ici d’utiliser des vecteurs lignes, mais cela ne change
pratiquement rien, sinon des détails d’implémentation.
2. Ecrivez une fonction qui, étant donné un polynôme P sous la forme décidée précédemment, ren-
voie son degré.
Réponse :
function r=poly_deg(P)
n=size(P,2);
r=0;
for i=1:n
if P(i)~=0
r=i-1;
end
end

3. Ecrivez une fonction qui, étant donné un polynôme P et un entier k, renvoie le coefficient de X k
dans P .
Réponse :
function r=poly_coeff(P,k)
n=size(P,2);
if k>n
r=0;
else
r=P(k);
end

4. Ecrivez une fonction poly_somme(P, Q) qui renvoie la somme des polynômes P et Q.


Indication : Si les représentations de P et Q ont la même taille, la somme est très facile à faire.
Si les dimensions ne coïncident pas, vous pouvez utiliser la fonction zeros(x, y) et la notation
[tab1, tab2]. Ou alors vous pouvez aussi faire des boucles for...
Réponse :

1
function R=poly_somme(P,Q)
np=size(P,2);
nq=size(Q,2);
if np>nq
Q=[Q,zeros(1,np-nq)];
elseif np<nq
P=[P,zeros(1,nq-np)];
end
R=P+Q;

5. Ecrivez une fonction poly_mult(P, Q) qui renvoie la multiplication des polynômes P et Q


(c’est un peu plus difficile que la somme, et vous n’échapperez probablement pas aux boucles for).
Remarque : En fait cette fonction existe déjà en Matlab. Elle s’appelle conv (c’est la convolution de
deux tableaux). Sachez-le pour éventuellement l’utiliser directement plus tard, mais pour des raisons
pédagogiques on va quand même la ré-écrire ici.
Réponse :
function R=poly_mult(P,Q)
np=size(P,2);
nq=size(Q,2);
R=zeroes(1,np+nq);
for i=1:np
for j=1:nq
R(i+j-1)=R(i+j-1)+P(i)+Q(j);
end
end

6. Ecrivez une fonction poly_exp(P, n) qui renvoie l’exponentiation P n du polynôme P .


Réponse :
function R=poly_exp(P,n)
R=[1];
for i=1:n
R=poly_mult(R,P);
end

Exercice 2. Des bêtes de somme

Vous avez vu en cours les formules suivantes :



n
n(n + 1)
k=
2
k=0


n
n(n + 1)(2n + 1)
k2 =
2
k=0
On va maintenant écrire un programme qui généralise ces formules et calcule, sur l’entrée p, le poly-
nôme
∑n
Sp (n) = kp
k=0
Remarque : On triche un peu ici en admettant sans le prouver que Sp est toujours un polynôme, et
qu’on sait même qu’il est de degré (p + 1).
L’idée consiste alors à chercher un polynôme P vérifiant la condition
P (X + 1) − P (X) = X p (1)

2
1. Si l’on trouve un polynôme P vérifiant la condition (1), comment peut-on en déduire Sp ? Expli-
quez pourquoi on peut supposer que le coefficient constant de P est nul.
On suppose maintenant que 1

p+1
P (X) = ai X i
i=1

On peut alors réécrire l’équation (1) en


p+1 ∑
p+1
ai (X + 1)i − ai X i = X p (2)
i=1 i=1

Par la magie des polynômes (et le fait que deux polynômes sont égaux si et seulement si leurs coef-
ficients sont égaux), on peut transformer l’égalité précédente en un système d’équations linéaires où
chaque équation correspond à un degré : on calcule le coefficient de degré i du gros paquet de gauche
et on dit qu’il doit être égal au coefficient de degré i du polynôme X p .
2. Dans le cas p = 1, montrez que l’équation (2) devient (après développement et simplification)

2a2 X + a1 + a2 = X

ce qui se ramène au système {


2a2 = 1
a1 + a2 = 0
Si l’on veut automatiser le processus, on doit calculer successivement (X + 1), (X + 1)2 , . . ., (X + 1)p+1 .
Ceci nous permettra de trouver les degré et les coefficients correspondant à chacun des ai .
Par exemple pour trouver la solution pour p = 3, on procède de la manière suivante :

a4 (X + 1)4 = a4 X 4 + 4a4 X 3 + 6a4 X 2 + 4a4 X + a4


a3 (X + 1)3 = a3 X 3 + 3a3 X 2 + 3a3 X + a3
a2 (X + 1)2 = a2 X 2 + 2a2 X + a2
a1 (X + 1)1 = a1 X + a1

On peut alors prendre les valeurs obtenues colonne par colonne (en fait degré par degré) pour obtenir :


 a4 − a4 = 0 (X 4 )


 4a4 + a3 − a3 = 1 (X 3 )
6a4 + 3a3 + a2 − a2 = 0 (X 2 )



 4a4 + 3a3 + 2a2 + a1 − a1 = 0 (X 1 )

a4 + a3 + a2 + a1 = 0 (X 0 )

Le système peut alors être représenté par l’équation matricielle suivante :


    
4 0 0 0 a4 1
 6 3 0 0   a3   0 
  = 
 4 3 2 0   a2   0 
1 1 1 1 a1 0

3. En utilisant la fonction linsolve(A, Y) de Matlab (qui trouve un vecteur X vérifiant A × X =


Y ), résolvez le système obtenu. En déduire la formule calculant S3 (n).
4. De manière générale, écrivez une fonction qui sur l’entrée p renvoie une formule calculant Sp (n).
Indication : Commencez par créer la matrice qui décrit le système d’équations, résolvez le système
linéaire et calculez Sp en fonction des coefficients de P .
5. À l’aide de la fonction roots (qui renvoie les racines d’un polynôme), trouvez la forme factorisée
de S3 (n).

1. On fait commencer la somme à 1 puisque le coefficient a0 est nul...

Vous aimerez peut-être aussi