Vous êtes sur la page 1sur 18

Ecole Nationale Polytechnique

D épartement de G énie M ´ecanique

Analyse Num´erique

Compte rendu du TP MATLAB

Etudiante : 
LAKHDARI Boutheina
:

1ere ann´eeG´enie M´ecanique

Ann ée Universitaire 2021/2022


1 Partie 1

MATLAB

Matrix laboratory est un langage de script ´emul´e par l’environnement Matlab, et qui est utilis´e
a` des fin de calcul num´erique. Il est utilis´e par des milllions d’ing´enieurs pour analyser les donn
´ees, developper des algorithmes et cr´eer des mod`eles.
Dans ce qui suit, nous allons pr´esenter les parties essentielles abord´ees en TP d’analyse num
´erique
.

Initialisation

• Desktop de MATLAB : command window , script , workspace ...

• Les variables : toutes les variables sot consid´er´ees comme des matrices dans
l’nvironnement
MATLAB.

• Les formats : short , long , short e , long e , short E ,short g , long g ...

• les commandes :

– clear : effacer la m´emoire


– clc : effacer la fenetre de commande
– who : lister les variables
– whos : lister les variables et afficher leurs d´etails

• Op´erateurs math´ematiques :

– + - * / : addition , soustractio , multiplication , division


– ˆ: ´el´evation a` la puissance – . : op´eration terme `a terme

• syntaxe :

– ; s´eparateur d’instruction

1
– % introduire un commentaire
– d´ebut : pas : fin g´en´eration de s´equences exp: 0:2:10

Matrices et vecteurs

• A = [a, b , c ; e , f , g ] : construction d’une matrice, ”,” ou ” ” pour s´eparer les colonnes et ”;”
pour s´eparer les lignes.

• NomDeMatrice (i,j) : acc`es `a un ´el´ement d’une matrice, exp : A(2, 2) = f


• Matrices particuli`eres :

– eye : matrice identit´e


– zeros : matrice dont tout les ´el´ements sont nuls
– ones : matrice unit´e, tout les ´el´ements sont egaux `a 1

• Fonction propres aux matrices/vecteurs

– size : la dimesion de la matrice


– length : longueur d’un vecteur , plus grande dimension pour une matrice
– min,max : le max et le min des ´el´ements
– norm : la norme d’une matrice ou un vecteur
– sum : somme des ´el´ements
– prod : produit des ´el´ements
– diag : extrait la diagonale d’une matrice ou bien cr´ee une matrice diagonale
– trace : trace de la matrice
– ’ : la transpos´ee, exp : A’
– inv ou A−1 : l’inverse d’une matrice
– eig : vecteurs et valeurs propres, exp: [Vecp , Valp ] = eig(A)

Les polynomes

• Repr´esetation : Un polynome de degr´e n est repr´esent´e par un vecteur ligne de taille n+1
dont les composants sont les coefficients de ce polynome par ordre de puissances d
´ecroissantes.
exp : P = [2 , 3 , zeros(3) ,1]

2
• Evaluation d’un polynome : polyval(P, x) tel que x est une valeur ou un vecteur comportant
les valeurs pour lesquelles on souhaite calculer les images.

• roots : pour le calcul des racines d’un polynome

• conv(P1 ,P2) : produit de 2 polynomes

• deconv(P1 , P2) : division de 2 polynomes

• polyder(P, n ) : clacul de la d´eriv´ee d’ordre n du polynome P

• polyint(P,c) : clcule l’integrale de P avec une constantre d’int´egration c

Graphes en 2 D

• La fonction plot : plot(x,y) tel que x est le vecteur des abscisses et y le vecteur image de x

• hold on : pour conserver le graphe pr´ec´edent et le surcharger avec un ouveau graphique


• xlabel(’....’) : titre pour l’axe des x

• ylabel(’....’) : titre pour l’axe des y

• title(’....’) : titre du graphe

• grid on/off : activer/d´esactiver le quadrillage

• grid minor : le quadrillage secondaire

• legend : ins´er´er une l´egende de donn´ees

• plot avec options : plot(x,y,’style1’,color1’,x1, y1 , ’style2’ , ’color2’ )

• subplot(m,n,p) : d´evise la figure en m lignes et n colonnes et le graphe sera traac´e dans la


fenetre p.

Fichiers de commande et fonctions ( M-files )

• cr´eation du fichier .m : edit NomFichier

• Introduire l’ensemble des commandes du script dans l’´editeur et puis enregistrer.

Fonction en MATLAB

function [arguments de sortie] = NomFonction ( arguments d’entree) ´ .


.

3
. corps de la fonction .
.
. end

Il existe plusieurs r`egles qui r´egissent l’´ecriture d’une fonction matlab.

Programmation

• disp , fprintf : affichage

• input : entrer la valeur d’une variable

• for-end : r´ep´eter les commandes n fois

• while ’condition’ end : faire les it´erations tant que la condition est v´erifi´ee

• if , if else if : effectuer des tests

• switch : faire un test sur une variable pour plusieurs cas diff´erents

• break : sortir de la boucle

• return : sortir d’un corps d’une fonction et revenir au programme


2 Partie 2 : Les m´ethodes d’int´egration

Cette partie est consacr´ee aux m´ethodes d’int´egration suivantes :

• La m´ethode des trap`ezes

• La m´ethode de Simpson

• La m´ethode de Romberg

• La m´ethode de Gauss-Legendre

On pr´esentera les scripts de fonction pour chaque m´ethode.

4
2.1 La m´ethode des trap`ezes

function I=trap(f,a,b,n) h=(b-a)/n ; x=a+h:h:b-h;


I=(h/2)*(f(a)+2*sum(f(x))+f(b)); end

2.2 La m´ethode de Simpson

function I=simp(f,a,b,n) h=(b-a)/(2*n); x=a+h:2*h:b-h;


y=a+2*h:2*h:b-2*h;
I=h*(f(a)+f(b)+4*sum(f(x))+2*sum(f(y)))/3; end

2.3 La m´ethode de Romberg

function I=romb(f,a,b,n) for j=1:n h=(b-a)/(2ˆ(j-1));


x=a+h:h:b-h;
R(1,j)=(h/2)*(f(a)+f(b)+2*sum(f(x))); end for i=2:n for j=1:n-i+1
R(i,j)=(4ˆ(i-1)*R(i-1,j+1)-R(i-1,j))/(4ˆ(i-1)-1); end end
I=R(n,1);
2.4 La m´ethode de Gauss-Legendre

On uutilisera 2 fonctions , la premi`ere pour calculer les noeuds xi et les coefficients poids wi , et la
deuxi`eme pour calculer l’int´egrale.

function [ x,w]=gaussXW(n ) syms y;


x=sort(roots(sym2poly(legendreP(n,y))));
b=zeros(n,1); for i=1:2:n b(i)=2/i;
end for i=1:n for
j=1:n
A(i,j)=x(j)ˆ(i-1); end
end
w=A\b ;

function I=gaussn(f,a,b,n)
[ t,w]=gaussXW(n); x=((b-a)*t+
(b+a))/2; I=0; for i=1:n
I=I+(w(i)*f(x(i))); end
I=I*(b-a)/2 ;

5
2.5 Applications des m´ethodes

Nous allons appliquer ces diff´erentes m´ethodes pour le calcul des int´egrales propos´ees tout en
faisant une ´etude quantitative et une autre qualitative

2.5.1 Etude Quantitative

Pour chaque m´ethode de calcul de l’int´egrale d’une ’fonction nous allons varier le n : nombre de
subdivision de l’intervalle d’int´egration et voir la convergence de la m´ethode `a chaque fois en
affichant l’erreur exacte.
Pour cela on introduit la fonction suivante qui permetra de faire cette ´etude pour chaque int
R b
´egrale : I = a f(x)dx.

function Integfun( f,a,b )


F=sym(f); IF=int(F); If = matlabFunction(IF); Iex = If(b) - If(a) ; disp (’ Methode´ des
trapezes’) ` n = [2 ; 4 ; 8 ; 12 ; 16] ;
disp (’ n Ia Iex Errex ’) for i=1:5 fprintf(’%5i %12.7f %12.7f %12.4e \n’ ,
n(i) , trap(f,a,b,n(i)) , Iex , abs(trap(f,a,b,n(i)) - Iex) ) end fprintf(’\n \n \n’) disp (’ Methode´
de Simpson’)
n = [2 ; 4 ; 8 ; 12 ; 16] ;
disp (’ n Ia Iex Errex ’) for i=1:5
fprintf(’%5i %12.7f %12.7f %12.4e \n’ , n(i), simpf(f,a,b,n(i)) , Iex , abs(simpf(f,a,b,n(i)) - Iex) )
end fprintf(’\n \n \n’)
disp (’ Methode´ de Romberg’)
n = [2 ; 4 ; 8 ; 12 ; 16] ;
disp (’ n Ia Iex Errex ’) for i=1:5
fprintf(’%5i %12.7f %12.7f %12.4e \n’ , n(i) , romb(f,a,b,n(i)) ,
Iex , abs(romb(f,a,b,n(i)) - Iex) ) end

fprintf(’\n \n \n’)
disp (’ Methode´ de Gauss-Legendre’)
n = [2 ; 4 ; 8 ; 12 ; 16] ;
disp (’ n Ia Iex Errex ’) for i=1:5
fprintf(’%5i %12.7f %12.7f %12.4e \n’ , n(i) , gaussn(f,a,b,n(i)) , Iex , abs(romb(f,a,b,n(i)) - Iex) )
end end

•f

6
>> Integfun(@(x) sin(x), 0 , pi/2)

Methode´ des trapezes `


n Ia Iex Errex
2 0.9480594 1.0000000 5.1941e-02
4 0.9871158 1.0000000 1.2884e-02
8 0.9967852 1.0000000 3.2148e-03 120.9985717
1.0000000 1.4283e-03
16 0.9991967 1.0000000 8.0332e-04

Methode´ de Simpson
n Ia Iex Errex
2 1.0001346 1.0000000 1.3458e-04
4 1.0000083 1.0000000 8.2955e-06
8 1.0000005 1.0000000 5.1668e-07 121.0000001
1.0000000 1.0200e-07 161.0000000 1.0000000
3.2265e-08

7
Methode´ de Romberg
n Ia Iex Errex
2 1.0022799 1.0000000 2.2799e-03
4 1.0000000 1.0000000 8.1440e-09
8 1.0000000 1.0000000 4.4409e-16
12 1.0000000 1.0000000 1.6653e-15
16 1.0000000 1.0000000 4.4409e-15

Methode´ de Gauss-Legendre
n Ia Iex Errex
2 0.9984726 1.0000000 2.2799e-03
4 1.0000000 1.0000000 8.1440e-09
8 1.0000000 1.0000000 4.4409e-16
12 1.0000000 1.0000000 1.6653e-15
16 1.0000000 1.0000000 4.4409e-15

• g

Integfun(@(x) log(1+x), 0 , pi/2)

Methode´ des trapezes `


n Ia Iex Errex
2 0.8260420 0.8565899 3.0548e-02
4 0.8487973 0.8565899 7.7926e-03
8 0.8546307 0.8565899 1.9592e-03 120.8557182
0.8565899 8.7170e-04
16 0.8560994 0.8565899 4.9052e-04

Methode´ de Simpson
n Ia Iex Errex
2 0.8563824 0.8565899 2.0751e-04
n2
4
8
12
16

8
Errex
4 0.8565752 0.8565899 1.4733e-05
8 0.8565890 0.8565899 9.5776e-07
12 0.8565898 0.8565899 1.9067e-07
16 0.8565899 0.8565899 6.0496e-08

Methode´ de Romberg
Ia Iex Errex
0.8541942 0.8565899 2.3957e-03
0.8565890 0.8565899 9.3352e-07
0.8565899 0.8565899 3.3307e-16
0.8565899 0.8565899 2.1094e-15
0.8565899 0.8565899 3.5527e-15
Methode´ de Gauss-Legendre

n Ia Iex
2 0.8581294 0.8565899 2.3957e-
03
4 0.8565923 0.8565899 9.3352e-
07
8 0.8565899 0.8565899 3.3307e-
16
12 0.8565899 0.8565899 2.1094e-
15
16 0.8565899 0.8565899 3.5527e-
15

q √
• h(x) = 1+ x x ∈ [0 ; 4]

>> Integfun(@(x) sqrt(1+sqrt(x)), 0 , 4)

n2
4
8
12
16

9
Errex
Methode´ des trapezes `
n Ia Iex Errex
2 5.8395988 6.0758959 2.3630e-01
4 5.9869046 6.0758959 8.8991e-02
8 6.0429849 6.0758959 3.2911e-02 126.0576188
6.0758959 1.8277e-02
16 6.0638814 6.0758959 1.2014e-02

Methode´ de Simpson
n Ia Iex Errex
2 6.0360065 6.0758959 3.9889e-02
4 6.0616783 6.0758959 1.4218e-02
8 6.0708470 6.0758959 5.0490e-03
12 6.0731433 6.0758959 2.7526e-03
16 6.0741066 6.0758959 1.7893e-03

Methode´ de Romberg
n Ia Iex Errex
2 5.9647645 6.0758959 1.1113e-01
4 6.0637490 6.0758959 1.2147e-02 8 6.0757066
6.0758959 1.8928e-04
12 6.0758930 6.0758959 2.9588e-06 166.0758959
6.0758959 4.6233e-08

Methode´ de Gauss-Legendre
Ia Iex Errex
6.1032046 6.0758959 1.1113e-01
6.0804544 6.0758959 1.2147e-02
6.0765679 6.0758959 1.8928e-04
6.0761070 6.0758959 2.9588e-06
6.0759876 6.0758959 4.6233e-08
n2
4
8
12
16

10
Errex
• t

>> Integfun(@(x) (2/sqrt(pi))*exp(-x.ˆ2), 0 , 4)


Methode´ des trapezes `
n Ia Iex
2 1.1697133 1.0000000 1.6971e-01
4 1.0001034 1.0000000 1.0340e-04
8 1.0000000 1.0000000 1.7242e-08 121.0000000
1.0000000 8.5147e-09
16 1.0000000 1.0000000 4.9934e-09

Methode´ de Simpson
n Ia Iex Errex
2 0.9435668 1.0000000 5.6433e-02
4 0.9999655 1.0000000 3.4489e-05
8 1.0000000 1.0000000 9.1063e-10 121.0000000
1.0000000 2.1564e-10
16 1.0000000 1.0000000 7.3010e-11

Methode´ de Romberg
n Ia Iex Errex
2 0.8073648 1.0000000 1.9264e-01
4 1.0045362 1.0000000 4.5362e-03
8 1.0000000 1.0000000 1.2412e-13 121.0000000
1.0000000 6.6613e-16
16 1.0000000 1.0000000 1.9096e-14

Methode´ de Gauss-Legendre
n Ia Iex Errex
2 1.1046135 1.0000000 1.9264e-01

n2
4
8
12
16

11
Errex
4 0.9855434 1.0000000 4.5362e-03
8 1.0000045 1.0000000 1.2412e-13 121.0000000
1.0000000 6.6613e-16
16 1.0000000 1.0000000 1.9096e-14

• s

>> Integfun(@(x) 1./(1+x.ˆ2), -1 , 1)


Methode´ des trapezes `
Ia Iex Errex
1.5000000 1.5707963 7.0796e-
02
1.5500000 1.5707963 2.0796e-
02
1.5655882 1.5707963 5.2081e-
03
1.5684815 1.5707963 2.3148e-
03
1.5694942 1.5707963 1.3021e-
03

n2
4
8
12
16

12
Errex
Methode´ de Simpson
n Ia Iex
2 1.5666667 1.5707963 4.1297e-03
4 1.5707843 1.5707963 1.2013e-05
8 1.5707963 1.5707963 7.5566e-08 121.5707963
1.5707963 6.6422e-09
16 1.5707963 1.5707963 1.1825e-09

Methode´ de Romberg
n Ia Iex Errex
2 1.6666667 1.5707963 9.5870e-02
4 1.5712344 1.5707963 4.3803e-04
8 1.5707963 1.5707963 3.6637e-14 121.5707963
1.5707963 3.3307e-15
16 1.5707963 1.5707963 5.7732e-15

Methode´ de Gauss-Legendre
n Ia Iex Errex
2 1.5000000 1.5707963 9.5870e-02
4 1.5686275 1.5707963 4.3803e-04
8 1.5707944 1.5707963 3.6637e-14 121.5707963
1.5707963 3.3307e-15
16 1.5707963 1.5707963 5.7732e-15

2.5.2 Etude Qualitative

Pour une meme fonction et le meme nombre de subdivisions de l’intervalle on calcule l’integrale
avec toutes les m´ethodes vues pr´ec´edemment. On introduit la fonction suivante :

function IntfunEtuQual( f,a,b,n)


F=sym(f); IF=int(F); If = matlabFunction(IF); Iex = If(b) - If(a) ;
M = ["Methode´ des trapezes` " ; " Methode´ de Simpson "; " M´ethode de Romberg Ia = [trap(f,a,b,n)
; simpf(f,a,b,n) ; romb(f,a,b,n) ; gaussn(f,a,b,n)];
disp (’ Methode´ Ia Iex
Errex ’)

13
for i=1:4 fprintf(’%s %12.7f %12.7f %12.4e \n’ , M(i) , Ia(i) , Iex , abs(Ia(i) - Iex) )
end

end On

choisit

n=6

pour

toutes

les

fonctio

ns

• f

IntfunEtuQual(@(x) sin(x), 0 , pi/2, 6)


Methode´ Ia Iex Errex
Methode´ des trapezes` 0.9942819 1.0000000 5.7181e-
03
Methode´ de Simpson 1.0000016 1.0000000 1.6344e-
06
Methode´ de Romberg 1.0000000 1.0000000 5.5511e-
16
Methode´ de Gauss-Legendre 1.0000000 1.0000000 4.6629e-
14
• g

14
IntfunEtuQual(@(x) log(1+x), 0 , pi/2 , 6)
Methode´ Ia Iex Errex
Methode´ des trapezes` 0.8531121 0.8565899 3.4778e-
• h( 03 x) =
Methode´
1+ de Simpson 0.8565869 0.8565899 2.9950e- x x ∈ [0
06
; 4]
Methode´ de Romberg 0.8565899 0.8565899 1.8456e-
11
IntfunEtuQual(@(x) sqrt(1+sqrt(x)), 0 , 4 , 6)
Methode´ de Gauss-Legendre 0.8565899 0.8565899 4.5167e-
Methode´ Ia Iex 09 Errex
Methode´
q √des trapezes` 6.0260722 6.0758959 4.9824e-
02
Methode´ de Simpson 6.0681343 6.0758959 7.7616e-
03
Methode´ de Romberg 6.0743830 6.0758959 1.5129e-
03
Methode´ de Gauss-Legendre 6.0774012 6.0758959 1.5052e-
03
• t

IntfunEtuQual(@(x) (2/sqrt(pi))*exp(-x.ˆ2), 0 , 4 , 6)
Methode´ Ia Iex Errex
Methode´ des trapezes` 1.0000000 1.0000000 2.6719e-
08
Methode´ de Simpson 1.0000000 1.0000000 2.4466e-
09
Methode´ de Romberg 1.0000002 1.0000000 2.5941e-
07
Methode´ de Gauss-Legendre 1.0002585 1.0000000 2.5847e-
04
• s

IntfunEtuQual(@(x) 1./(1+x.ˆ2), -1 , 1 , 6)
Methode´ Ia Iex Errex
Methode´ des trapezes` 1.5615385 1.5707963 9.2579e-
03
Methode´ de Simpson 1.5707959 1.5707963 4.3633e-
07
Methode´ de Romberg 1.5707963 1.5707963 1.0900e-
08
Methode´ de Gauss-Legendre 1.5707317 1.5707963 6.4619e-
05
2.6 Gauss-Legendre pour une it´egrale double

Le script de la fonction :

15
function I=gauss2d(f,a,b,c,d,n,m)
[ t1,w1]=gaussXW(n); [ t2,w2]=gaussXW(m); x=((b-a)*t1+
(b+a))/2; y=((d-c)*t2+(d+c))/2; I=0; for i=1:n for j=1:m
I=I+ w1(i)*w2(j)*f(x(i),y(j)) ; end
end
I = ( b-a)*(d-c)*I/4; end

Remarque : la fonction gaussXW(n) a ´et´e introduite auparavant.

2.6.1 F(x,y) = xy2 x ∈ [2.1;2.5], y ∈ [1.2;1.4] , m = n = 4

I= gauss2d(@(x,y) x*y.ˆ2 , 2.1 , 2.5 , 1.2 , 1.4, 4 , 4 )


I = 0.311573333333333
Iex = (bˆ2 - aˆ2 )*(dˆ3 - cˆ3)/6
Iex =

0.311573333333333

2.6.2 F(x,y) = exp(y − x) x ∈ [0;0.5], y ∈ [0;0.5] , n = 8 , m = 4

I = gauss2d(@(x,y) exp(y-x) , 0 , 0.5 , 0 , 0.5 , 8 , 4 )

I=

0.255251930412206

>> Iex = (exp(0) - exp(-0.5))*(exp(0.5) - exp(0))

Iex =

0.255251930412762

16
3 Commentaires et conclusion

`
A l’aide des diff´erentes m´ethodes d’int´egration num´erique nous avons pu calculer les int´egrales born´ees
des fonctions propos´ees tout en effectuant une ´etude qualitative et quantitative.

• L’´etude quantitative : En faisant varier le n ”nombre de subdivision de l’intervalle” on peut


constater,d’apr`es nos r´esultats, que pour toutes les m´ethodes l’erreur commise diminue ( donc pr
´ecision augmente) avec l’augmentation de n

• L’´etude qualitative : en fixant le n on et pour une meme fonction on compare les r´esultats obtenus
avec les diff´erentes m´ethodes. On peut constater que :

– Pour toutes les fonctions, la m´ethode de Romberg et Gauss-Legendre donnent de tr`es bons r
´esultats
– La m´ethode de trap`ezes a la plus faible pr´ecision (sauf pour la fonction ’t’ ) vu que c’est une m
´ethode simple qui n’efffectue pas beaucoup de calculs.
– la m´ethode de Simpson donne les meilleurs r´esultats pour les fonctions ’s’ et ’t’ puisque la m
´ethode de simpson est bas´ee sur une interpolation polynomiale d’ordre 2 sur chaque intervalle
de subdivision, et ces deux fonction ont un comportement assez similaire a` un polynome d’ordre
2 sur lintervalle d’int´egration.

Remarque : Pour l’´etude qualitative : on a utilis´e une matrice de chaine de caract`eres et la fa¸con
dont elle a ´et´e d´eclar´ee ne marche que pour une version 2017 ou une version plus r´ecente.

17

Vous aimerez peut-être aussi