Vous êtes sur la page 1sur 3

Mastère de Mathématiques 2010-2011 Université de Rennes I

Analyse réelle et complexe TP No 3.

MATLAB: Fonctions, polynômes et orthonormalisation

1. Les polynômes avec MATLAB


Les polynômes sont traités comme des vecteurs de coefficients dans Matlab. Par exemple,
l’équation polynomiale y(x) = 2x3 + 6x2 + 5x + 12 sera représentée par le vecteur y = [2 6 5 12].
Le calcul approché de racines de polynôme s’effectue en Matlab avec la commande roots. On peut
aussi définir un polynôme à partir
Q de ses racines : si r = [r1 , · · · , rn ] est un vecteur ligne de taille
n alors poly(r) sera le polynôme ni=1 (x − ri ).
Exemple 1:
On définit le vecteur représentant les coefficient du polynôme p(x) = 2x3 + 6x2 + 5x + 12:
>>clear
>>clc
>> p = [2 6 5 12];

Calculons ces racines:


>>racines=roots(p);
>>disp(racines)

Maintenant, à partir des racines, trouvons l’équation du polynôme:


>>approx equation=poly(racines);
>>disp(approx equation)

On peut évaluer un polynôme en un ou plusieurs points à l’aide de la commande polyval.


Exemple 2
x = -1:2 ;
p = [1 -15 -24 360];
y = polyval(p,x)
Comparer avec x. ∧ 3 − 15 ∗ x. ∧ 2 − 24 ∗ x + 360.

Construction du vecteur de points


>>points=0:0.1:2;

Évalue le polynôme à ces points


>>y evalue=polyval(y,points);
>>
>>disp(y evalue)

Affichage du polynôme pour les valeurs entre 0 et 2


>>plot(points,y evalue)

I
II

Exercice 1. Ecrire un programme prog1.m qui calcule la dérivée et les racines d’un polynôme
introduit par l’utilisateur puis dessiner leurs graphes sur un intervalle contenant tous les racines.
Défi supplémentaire : ne pas utiliser la commande polyder.

Voici quelques autres commandes Matlab :


• Dérivation d’un polynôme
polyder(P ) retourne la dérivée du polynôme P .
• Multiplication de deux polynômes
conv(A, B) est la convolution des tableaux A et B, c’est à dire les coefficients du produit des deux
polynômes.
• Division de deux polynômes
[Q, R] = deconv(A, B) est la déconvolution des tableaux A et B tel que B = conv(A, Q) + R.

2. Méthode d’interpolation de Lagrange


Soit f : [a, b] → R une fonction continue. On se donne n + 1 points x1 , · · · , xn+1 dans [a, b], deux
à deux distincts, non nécessairement rangés par ordre croissant.

Problème: Existe-t-il un polynôme P de degré n tel que P (xi ) = f (xi ), ∀i = 1, · · · , n + 1 ?

Un tel polynôme sera appelé polynôme d’interpolation de Lagrange de f aux points x1 , · · · , xn+1 .
Posons
Y (x − xj )
li (x) = , 1 ≤ i ≤ n + 1,
(xi − xj )
j6=i
où le produit est effectué sur les indices j tels que 1 ≤ j ≤ n + 1, j 6= i. On a alors
li (xj ) = 0 si j 6= i,
li (xi ) = 1.
Le problème ci-dessus admet donc au moins une solution
X
n+1
(1) P (x) = f (xi )li (x),
i=1

Théorème Le problème d’interpolation P (xi ) = f (xi ), 1 ≤ i ≤ n + 1, admet une solution et


une seule, donnée par la formule (1). Démonstration : supposons que Q est une autre solution du
problème. Alors P (xi ) = Q(xi ) = f (xi ), donc xi est racine de Q − P . Par suite le polynôme
Y
n+1
(2) πn+1 (x) = (x − xj )
j=1

divise Q − P . Comme deg πn+1 = n + 1 et que Q − P est de degré n, on voit que Q − P = 0, q.e.d.

Dans la suite on pose yk = f (xk ), k = 1, · · · , n + 1, et on cherche le polynôme d’interpolation


P (x) = an xn + . . . + a1 x + a0 .
X
n
P (xk ) = yk , k = 1, · · · , n + 1 ⇐⇒ ai xik = yk , k = 1, · · · , n + 1.
i=0
La matrice de ce dernier système est appelée matrice de Vandermonde associée aux abscisses xi .
On la construit en Matlab à l’aide de la commande vander (consulter sa description avec le ”help”).
III

Exercice 2.
Écrire un programme matlab qui permet de calculer le polynôme d’interpolation de Lagrange, en
utilisant la matrice de Vandermonde. Dans ce programme, l’utilisateur rentre les vecteurs [x1 x2 ...xn ]
et le vecteur des valeurs [y1 y2 ...yn ], et le programme représente sur un même graphique le polynôme
d’interpolation et les points (xi , yi ).
2.1. Approximation polynômiale. Les polynômes sont utiles particulièrement pour approcher
des fonctions plus compliques, en utilisant par exemple une série Taylor ou aussi à l’aide du meilleur
polynôme d’un degré donné approchant des valeurs données d’une fonction en utilisant la commande
polyfit de matlab. En effet, p = polyfit(x, y, n) trouve le meilleur polynôme de degré n approchant
les points x et y. Essayer l’exemple suivant:
x = 0:.1:3*pi ;
y = sin(x) ;
p = polyfit(x, y, 5)
figure(1) ; clf
plot(x,y)
hold on
xx = 0:.001:3*pi ;
plot(xx, polyval(p,xx), ’r-’)
Exercice 3. Comparer l’utilisation de polyfit avec la méthode d’interpolation de Lagrange.

3. procédure de orthonormalisation de Gram-Schmidt


Soit (X1 , · · · , Xm ) une famille libre de vecteurs dans Rm . On peut construire une base or-
thonormé (U1 , · · · , Um ) à partir de (X1 , · · · , Xm ) en suivant la procédure d’orthonormalisation de
Gram-Schmidt. L’algorithme est le suivant:
Y1 = X1 ,
Y1 .X2
Y2 = X2 − Y1
Y1 .Y1
···
Ym−1 .Xm Y1 .Xm
Ym = Xm − Ym−1 − · · · − Y1
Ym−1 .Ym−1 Y1 .Y1
Enfin, pour obtenir des vecteurs unitaires:
Yk
Uk = √ , k = 1, · · · , m.
Yk .Yk
Exercice 4.
1) Vérifier que l’algorithme ci-dessus définit bien une base orthonormée.
2) Soit B = (X1 , · · · , Xm ) une base de Rm . Écrire une fonction qui prend comme paramètre B
et retourne la base B0 obtenue par le procédé d’orthonormalisation de Gram-Schmidt (vérifier le
resultat avec T B0 B0 = I).
3) Comparer le resultat avec celle qu’on obtient à l’aide de la commande orth(B).

À rendre : les programmes pour les exercices 1, 2, et 4.

Vous aimerez peut-être aussi