CIP42 C5 CalculNumerique .pdf


À propos / Télécharger Aperçu
Nom original: CIP42-C5-CalculNumerique.pdf
Titre: LCI III
Auteur: Asmaa El Hannani

Ce document au format PDF 1.5 a été généré par Microsoft® Office PowerPoint® 2007, et a été envoyé sur fichier-pdf.fr le 17/03/2013 à 13:56, depuis l'adresse IP 41.249.x.x. La présente page de téléchargement du fichier a été vue 1387 fois.
Taille du document: 527 Ko (19 pages).
Confidentialité: fichier public


Aperçu du document


Part 6

CALCUL NUMÉRIQUE AVEC
MATLAB
Asmaa El Hannani

203

Plan





Introduction
Recherche des zéros d'une fonction
Système d‟équations
Polynômes






Evaluation
Interpolation
Approximation

Analyse des données

Asmaa El Hannani

1

204

Introduction


L'objectif de ce chapitre est de présenter brièvement
des routines de base de calcul numérique.



La liste des problèmes donnée ici est non exhaustive
et on trouvera des informations complémentaires dans
les différentes documentation en ligne MATLAB.



De même, les concepts théoriques sont supposés
connus par le lecteur et il ne sera pas fait mention des
méthodes utilisées.

Asmaa El Hannani

205

Recherche des zéros d'une fonction


Problème : On cherche x0 tel que f(x0) = 0 .



La fonction fzero permet de résoudre ce problème. Il faut
fournir d'une part la fonction f elle-même, et d'autre part une
estimation de x0 .



L'efficacité de l'algorithme est comme toujours dépendante de
la valeur estimée choisie. La fonction peut-être définie par une
directive inline ou bien écrite dans une fichier.

Asmaa El Hannani

2

206

Recherche des zéros d'une fonction





Par exemple on cherche le zéro de : f ( x)  cos x  x
Une approche graphique permet souvent de trouver une
estimation de x0 .
La figure suivante montre ainsi que les fonctions x  x et
x  cos x se coupent en un point sur . Une valeur
raisonnable pour l'estimation de est par exemple 0.

Asmaa El Hannani

207

Exemple

Asmaa El Hannani

3

208

Recherche des zéros d'une fonction


La variable f envoyée à la fonction fzero est elle-même une fonction.
Toutes les routines de calcul numérique de MATLAB nécessitant l'écriture
d'une fonction par l'utilisateur fonctionnent selon ce principe.
>> f = inline('x-cos(x)')
>> fzero(f,0)
ans =
0.7391



On peut également écrire la fonction dans un fichier f.m :



Et ensuite on écrira:

function y = f(x)
y = x-cos(x);

>> fzero('f',0)
ans =
0.7391
Asmaa El Hannani

209

Recherche des zéros d'une fonction


Comment faire lorsque la définition de la fonction dépend en
plus d'un paramètre ?





Par exemple, on veut chercher le zéro de la fonction f(x) = cos(mx) – x
où m est un paramètre susceptible de varier entre deux exécutions.

On ne peut pas rajouter un argument à la définition de notre
fonction f car fzero impose que f ne dépende que d'une
variable.




Une solution serait d'affecter m dans le corps de la fonction mais elle est
mauvaise car lorsque l'on veut changer la valeur de m il faut modifier la
fonction.
La bonne solution est d'utiliser la directive global.

Asmaa El Hannani

4

210

Recherche des zéros d'une fonction


La fonction f s'écrira donc :
function y = f(x)
global m
y = x-cos(m*x);



et on cherchera son zéro en écrivant :
>> global m
>> m = 1;
>> fzero(‘f,’0)

Asmaa El Hannani

211

Systèmes d’équations linéaires


Le système d‟équations linéaires
a11*x1 + a12*x2 + ... + a1n*xn = b1
...
an1*x1 + an2*x2 + ... + ann*xn = bn

s‟écrit sous forme matricielle: A * x = b




La solution est alors obtenue soit en utilisant la fonction “inv”
d‟inversion de matrice:
>>x = inv(A) * b
soit en utilisant “\” la division matricielle par la gauche:
>> x = A\b

Asmaa El Hannani

5

212

Systèmes d’équations linéaires


On veut résoudre un système de 3 équations à 3 inconnues x1 , x2 et x3 :
3x1 + 2x2 +x3 = 4
-x1 +5x2 + 2x3 = -1
4x1-2x2 +3x3=3



On saisit les différents coefficients dans une matrice 3 x 3 :



On complète avec un vecteur colonne 3 x 1 :



La solution est donnée sous la forme d'un vecteur colonne :

>> A = [ 3 2 1 ; -1 5 2 ; 4 -2 3 ]
>> B = [ 4 ; -1 ; 3 ]
>> A \ B
Ou
>> inv(A) * B
Asmaa El Hannani

213

Systèmes d’équations linéaires
>> A = [ 3 2 1 ; -1 5 2 ; 4 -2 3 ]
A=
3 2 1
-1 5 2
4 -2 3
>> B = [ 4 ; -1 ; 3 ]
B=
4
-1
3
>> A \ B
ans =
1.3279
0.2951
-0.5738
>> inv(A) * B
ans =
1.3279
0.2951
-0.5738
Asmaa El Hannani

6

214

Les polynômes


MATLAB représente un polynôme de degré n
P(x) = p1 xn + p2 xn-1 +…+ pn x + pn+1
par un vecteur p=[p(1) p(2)… p(n+1)] où sont stockés les n+1
coefficients p1, p2…pn+1.





Par exemple le polynôme: f(x)=8x5+2x3-3x2+4x-2
est représenté par p=[8 0 2 -3 4 -2]

Les principaux problèmes liés aux polynômes sont:
 l‟évaluation;
 la recherche de racines;
 l‟adaptation à des données.

Asmaa El Hannani

215

Les polynômes: l’évaluation


La fonction polyval évalue un polynôme P en un point (ou un
ensemble de points) x:
>> y = polyval(p,x);
où x (et donc y) peuvent être des tableaux.



La fonction polyvalm effectue la même évaluation mais au
sens matriciel:
>> Y = polyvalm(p,X);
où X et Y sont des matrices carrées.

Asmaa El Hannani

7

216

Les polynômes: l’évaluation

>> p=[1 -1 -4 4]
>> x= -3:0.1:3
>> y = polyval(p,x)
>>plot(x,y)
>>grid on
>>title(„P(x)=x^3-x^2-4x+4‟)

Asmaa El Hannani

217

Les polynômes: la recherche des racines


Les racines (ou zéros) de P(x) sont obtenues avec
l‟aide de la fonction roots :
>> z = roots(p);



La fonction poly effectue l‟opération inverse:
>> p = poly(z);
avec la normalisation p(1)=1:
p1 xn + p2 xn-1 +…+ pn x + pn+1 = (x-z1)(x-z2)…(x-zn).

Asmaa El Hannani

8

218

Les polynômes: la recherche des racines
>> p=[1 -1 -4 4];
>> z = roots(p)
z=
-2.0000
2.0000
1.0000
>> t = polyval(p,z);
>> p = poly(z)
p=
1.0000 -1.0000 -4.0000 4.0000
>> x= -3:0.1:3;
>> y = polyval(p,x);
>> plot(x,y,'b-',z,t,'r*');
>> grid
>> title('P(x)=x^3-x^2-4x+4')
Asmaa El Hannani

219

Les polynômes: les opérations


La multiplication et la division polynomiales sont effectuées
par les fonctions conv et deconv:
>> [q,r] = deconv(g,h);
>> g = conv(h,q)+r;
où q et r sont les coefficients des polynômes quotient
Q et reste R:
G(x)=H(x)Q(x)+R(x).

Asmaa El Hannani

9

220

Les polynômes: les opérations
>> g = [1 -3 -5 15 4 -12];
>> h = [1 -2 -1 2];
>> [q,r]=deconv(g,h)
q=
1 -1 -6
r=
0 0 0 0 0
>> g=conv(q,h)
g=
1 -3 -5 15

0

4 -12

Asmaa El Hannani

221

Les polynômes: la dérivation


La fonction polyder retourne les coefficients q du polynôme
Q(x) dérivé de P(x):
>> q = polyder(p);



Avec deux arguments en entrée U(x) et V(x)
>> q = polyder(u,v);
le vecteur q contient les coefficients de la dérivée
U’(x)V(x)+U(x)V’(x) du produit U(x)V(x).



Avec deux arguments en sortie P(x) et Q(x)
>> [p,q] = polyder(u,v);
les vecteurs p et q contiennent les coefficients du numérateur et
dénominateur de la dérivée [U’(x)V(x)-U(x)V’(x)]/V2(x) du
quotient U(x)/V(x).

Asmaa El Hannani

10

222

Les polynômes: la dérivation
>> u = [1 0 -5 0 4 0];
>> v = [1 -2 -1 2];
>> du = polyder(u)
du =
5 0 -15 0 4
>> dv = polyder(v)
dv =
3 -4 -1
>> q = polyder(u,v)
q=
8 -14 -36 60 36 -54 -8
>> q = conv(du,v)+conv(u,dv)
q=
8 -14 -36 60 36 -54 -8

8
%u'v+uv'
8

Asmaa El Hannani

223

Les polynômes: la dérivation
>> [dernum,derden] = polyder(u,v)
dernum =
2 -6 -4 20 2 -22 0 8
derden =
1 -4 2 8 -7 -4 4
>> [q,r]=deconv(dernum,derden)
q=
2 2
r=
0 0 0 0 0 0 0 0
>> [q,r]= deconv(conv(du,v)-conv(u,dv),conv(v,v))
q=
2 2
r=
0 0 0 0 0 0 0 0
Asmaa El Hannani

11

224

Approximation (estimation de paramètres ou ″fitting")


Problème : faire passer une courbe d'équation connue au
milieu d'un nuage de points de telle sorte que la courbe soit «la
plus proche possible» de l'ensemble des points.



Comme on cherche à minimiser une distance entre deux
fonctions, on parle en général d'approximation aux moindres
carrés ou encore de régression.

Asmaa El Hannani

225

Approximation linaire


Le problème d‟approximation des données est résolu avec
l‟aide de la fonction polyfit :
>> p = polyfit(xi,yi,n);
qui, pour un jeu de m paires (xi , yi)i≥1, calcule les coefficients
du polynôme P(x) de degré n qui minimise le critère
quadratique ∑ i≥1 | P(xi) - yi |2.

Asmaa El Hannani

12

226

Approximation linaire

>> xi = [-2 -1.5 -1 0 1 1.5 2];
>>yi = [3.5 2 1.5 0 1.3 2.5 3.9];
>>A4 = polyfit (xi, yi, 4)
>>A3 = polyfit (xi, yi, 3)
>>x = -2:0.1:2;
>>plot(xi, yi, 'o', xi, …
polyval(A4,xi), xi, …
polyval(A3,xi), '--' )

Asmaa El Hannani

227

Interpolation


Le problème : connaissant des points tabulés (xi,yi), construire
une fonction polynomiale par morceaux passant par ces points.
En termes plus simples, c'est ce que fait la fonction plot quand
elle «relie» les points que vous lui donnez : elle fait passer un
polynôme de degré 1 entre deux points consécutifs.

Asmaa El Hannani

13

228

Interpolation


La fonction interp1 résout le problème. Il suffit de lui donner
les valeurs tabulées ainsi qu'une série d'abscisses où l'on
souhaite connaître les ordonnées interpolées.
>> y = interp1(xi,yi,x,'method');



Sur chaque intervalle on peut interpoler par un polynôme




de degré 0 (option 'nearest'),
de degré 1, qui est le comportement par défaut (option 'linear'),
de degré 3 (option 'cubic').

Asmaa El Hannani

229

Interpolation


On a cinq points et on cherche une interpolation f(x) entre ces
cinq points.
>> xi = [-1 -1/2 0 1/2 1]; yi = [1.5 1 0 1 1/2];
>> x = -1:0.1:1;
>>ylinear = interp1 (xi, yi, x);
>>ycubic = interp1 (xi, yi, x, 'cubic');
>> plot(xi,yi,'*', x,ylinear,'-', x,ycubic,'--')

Asmaa El Hannani

14

230

Interpolation


On a cinq points et on cherche une interpolation f(x) entre ces
cinq points.

Asmaa El Hannani

231

Interpolation


MATLAB a aussi des fonctions pour interpoler des données
surfaciques zi = f (xi , yi):
>> z = interp2(xi,yi,zi,x,y);
>> z = griddata(xi,yi,zi,x,y);
selon que les zi sont régulièrement échantillonnées en des
points (xi , yi) définissant une grille ou pas.



Trois interpolants sont possibles:
 'nearest' plus proche voisin (de degré 0)
 'linear' linéaire (de degré 1, défaut)
 'cubic' cubique (de degré 3)

Asmaa El Hannani

15

232

L’analyse de données


MATLAB a un certain nombre de fonctions pour l‟analyse de
données d‟un point de vue statistique:
 min plus petite valeur
 max plus grande valeur
 mean moyenne
 std déviation standard
 var variance
 median valeur médiane
 sort tri par valeur croissante/décroissante

Asmaa El Hannani

233

L’analyse de données


MATLAB a un certain nombre de fonctions pour l‟analyse de
données d‟un point de vue statistique:
 sum somme
 cumsum somme cumulée
 prod produit
 cumprod produit cumulé
 trapz intégration numérique
 cumtrapz intégration numérique cumulée

Asmaa El Hannani

16

234

Intégration numérique




Dans Matlab, il existe 2 fonctions appelées quad et quad8
pour l'intégration numérique.
 quad : algorithme de Simpson
 quad8 : algorithme de Newton-Cote
Ces deux fonctions sont utilisées de la façon suivante :
 quad('fonction_f',a,b)
 quad('fonction_f',a,b,tol)
 quad('fonction_f',a,b,tol,trace)




la tolérance 'tol' qui correspond à l'erreur relative, est égale à 0,001 par
défaut.
Si la 3ème forme est utilisée avec une valeur non nulle de 'trace', un
graphique d'évolution des itérations sera affiché sur l'écran.

Asmaa El Hannani

235

Intégration numérique


Pour calculer l‟intégral



Il faut commencer par créer le fichier f.m de la fonction à
intégrer : function y=f(x) ;
y = 4./(1 + x.*x) ;




Puis utiliser la fonction quad ou quad8: >> quad( 'f' , 0 , 1 )
La valeur exacte de cette intégrale est pi. ans =
>> pi
ans =
3.141592653589793e+000

Asmaa El Hannani

17

3.1416
>> format long e
>> quad( 'f' , 0 , 1 )
ans =
3.141592502458707e+000
236

L’analyse de données


MATLAB propose aussi des fonctions pour l‟analyse de
FOURIER:



fft



ifft

Asmaa El Hannani

238

L’analyse de données


MATLAB propose des fonctions pour l‟analyse de
FOURIER de vecteurs (traitement du signal):





fft Fast FOURIER Transform
ifft Inverse Fast FOURIER Transform
fftshift shift DC component
conv convolution

Asmaa El Hannani

18

239

L’analyse de données


MATLAB propose des fonctions pour l‟analyse de
FOURIER de matrices (traitement d‟image):





fft2 Fast FOURIER Transform
ifft2 Inverse Fast FOURIER Transform
fftshift shift DC component
conv2 convolution

Asmaa El Hannani

240

The END

Asmaa El Hannani

19

241


Aperçu du document CIP42-C5-CalculNumerique.pdf - page 1/19

 
CIP42-C5-CalculNumerique.pdf - page 2/19
CIP42-C5-CalculNumerique.pdf - page 3/19
CIP42-C5-CalculNumerique.pdf - page 4/19
CIP42-C5-CalculNumerique.pdf - page 5/19
CIP42-C5-CalculNumerique.pdf - page 6/19
 




Télécharger le fichier (PDF)




Sur le même sujet..





Ce fichier a été mis en ligne par un utilisateur du site. Identifiant unique du document: 00162235.
⚠️  Signaler un contenu illicite
Pour plus d'informations sur notre politique de lutte contre la diffusion illicite de contenus protégés par droit d'auteur, consultez notre page dédiée.