Vous êtes sur la page 1sur 14

Ecole Nationale Polytechnique

Département de Génie Mécanique

Analyse Numérique

Compte rendu du TP MATLAB

Binome
BELHASSANI Lamia
BOUARROU Samy
OURDANE Merouane

1ere année Génie Mécanique

Remis le : 07/03/2021

Année Universitaire 2020/2021


1 Partie 1

MATLAB
Matrix laboratory est un langage de script émulé par l’environnement Matlab, et qui est utilisé
à des fin de calcul numérique. Il est utilisé par des milllions d’ingénieurs pour analyser les
données, developper des algorithmes et créer des modèles.
Dans ce qui suit, nous allons présenter les parties essentielles abordées en TP d’analyse numérique
.

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

• Les variables : toutes les variables sot considérées 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émoire


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

• Opérateurs mathématiques :

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


– :̂ élévation à la puissance
– . : opération terme à terme

• syntaxe :

– ; séparateur d’instruction
– % introduire un commentaire
– début : pas : fin génération de séquences exp: 0:2:10

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

• NomDeMatrice (i,j) : accès à un élément d’une matrice, exp : A(2, 2) = f

1
• Matrices particulières :

– eye : matrice identité


– zeros : matrice dont tout les éléments sont nuls
– ones : matrice unité, tout les éléments sont egaux à 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 éléments
– norm : la norme d’une matrice ou un vecteur
– sum : somme des éléments
– prod : produit des éléments
– diag : extrait la diagonale d’une matrice ou bien crée une matrice diagonale
– trace : trace de la matrice
– ’ : la transposée, exp : A’
– inv ou A−1 : l’inverse d’une matrice
– eig : vecteurs et valeurs propres, exp: [Vecp , Valp ] = eig(A)

Les polynomes
• Représetation : Un polynome de degré n est représenté par un vecteur ligne de taille
n+1 dont les composants sont les coefficients de ce polynome par ordre de puissances
décroissantes.
exp : P = [2 , 3 , zeros(3) ,1]

• Evaluation d’un polynome : polyval(P, x) tel que x est une valeur ou un vecteur compor-
tant 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érivée d’ordre n du polynome P

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

Graphes en 2D
• 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écédent et le surcharger avec un ouveau graphique

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

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

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

• grid on/off : activer/désactiver le quadrillage

• grid minor : le quadrillage secondaire

• legend : insérér une légende de données

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

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


la fenetre p.

Fichiers de commande et fonctions (M-files)


• création du fichier .m : edit NomFichier

• Introduire l’ensemble des commandes du script dans l’éditeur et puis enregistrer.

Fonction en MATLAB

function [arguments de sortie] = NomFonction ( arguments d’entrée)


.
.
.
corps de la fonction
.
.
.
end

Il existe plusieurs règles qui régissent l’écriture d’une fonction matlab.

Programmation
• disp , fprintf : affichage

• input : entrer la valeur d’une variable

• for-end : répéter les commandes n fois

• while ’condition’ end : faire les itérations tant que la condition est vérifiée

• if , if else if : effectuer des tests

• switch : faire un test sur une variable pour plusieurs cas différents

• break : sortir de la boucle

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

3
2 Partie 2 : Les méthodes d’intégration
Cette partie est consacrée aux méthodes d’intégration suivantes :

• La méthode des trapèzes

• La méthode de Simpson

• La méthode de Romberg

• La méthode de Gauss-Legendre

On présentera les scripts de fonction pour chaque méthode.

2.1 La méthode des trapèzes


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éthode 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éthode 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);

4
2.4 La méthode de Gauss-Legendre
On uutilisera 2 fonctions , la première pour calculer les noeuds xi et les coefficients poids wi
, et la deuxième pour calculer l’intégrale.

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 ;

2.5 Applications des méthodes


Nous allons appliquer ces différentes méthodes pour le calcul des intégrales proposées tout en
faisant une étude quantitative et une autre qualitative

2.5.1 Etude Quantitative

Pour chaque méthode de calcul de l’intégrale d’une ’fonction nous allons varier le n : nombre
de subdivision de l’intervalle d’intégration et voir la convergence de la méthode à chaque fois
en affichant l’erreur exacte.
Pour cela on introduit la fonction suivante qui permetra de faire cette étude pour chaque
intégrale : I = ab f (x)dx.
R

function Integfun( f,a,b )


F=sym(f); IF=int(F); If = matlabFunction(IF); Iex = If(b) - If(a) ;
disp (’ Méthode des trapèzes’)
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)) ,

5
Iex , abs(trap(f,a,b,n(i)) - Iex) )
end
fprintf(’\n \n \n’)
disp (’ Méthode 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 (’ Méthode 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 (’ Méthode 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 (x) = sin(x) x ∈ [0; π2 ]

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

Méthode des trapèzes


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
12 0.9985717 1.0000000 1.4283e-03
16 0.9991967 1.0000000 8.0332e-04

Méthode 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
12 1.0000001 1.0000000 1.0200e-07
16 1.0000000 1.0000000 3.2265e-08

6
Méthode 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

Méthode 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(x) = log(1 + x) x ∈ [0; π2 ]

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

Méthode des trapèzes


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
12 0.8557182 0.8565899 8.7170e-04
16 0.8560994 0.8565899 4.9052e-04

Méthode de Simpson
n Ia Iex Errex
2 0.8563824 0.8565899 2.0751e-04
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

Méthode de Romberg
n Ia Iex Errex
2 0.8541942 0.8565899 2.3957e-03
4 0.8565890 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

7
Méthode de Gauss-Legendre
n Ia Iex Errex
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)


Méthode des trapèzes
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
12 6.0576188 6.0758959 1.8277e-02
16 6.0638814 6.0758959 1.2014e-02

Méthode 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

Méthode 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
16 6.0758959 6.0758959 4.6233e-08

Méthode de Gauss-Legendre
n Ia Iex Errex
2 6.1032046 6.0758959 1.1113e-01
4 6.0804544 6.0758959 1.2147e-02
8 6.0765679 6.0758959 1.8928e-04
12 6.0761070 6.0758959 2.9588e-06
16 6.0759876 6.0758959 4.6233e-08

8
• t(x) = √2 exp(−x2 ) x ∈ [0; 4]
π

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


Méthode des trapèzes
n Ia Iex Errex
2 1.1697133 1.0000000 1.6971e-01
4 1.0001034 1.0000000 1.0340e-04
8 1.0000000 1.0000000 1.7242e-08
12 1.0000000 1.0000000 8.5147e-09
16 1.0000000 1.0000000 4.9934e-09

Méthode 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
12 1.0000000 1.0000000 2.1564e-10
16 1.0000000 1.0000000 7.3010e-11

Méthode 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
12 1.0000000 1.0000000 6.6613e-16
16 1.0000000 1.0000000 1.9096e-14

Méthode de Gauss-Legendre
n Ia Iex Errex
2 1.1046135 1.0000000 1.9264e-01
4 0.9855434 1.0000000 4.5362e-03
8 1.0000045 1.0000000 1.2412e-13
12 1.0000000 1.0000000 6.6613e-16
16 1.0000000 1.0000000 1.9096e-14

1
• s(x) = 1+x2
x ∈ [−1; 1]

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


Méthode des trapèzes
n Ia Iex Errex
2 1.5000000 1.5707963 7.0796e-02
4 1.5500000 1.5707963 2.0796e-02
8 1.5655882 1.5707963 5.2081e-03
12 1.5684815 1.5707963 2.3148e-03
16 1.5694942 1.5707963 1.3021e-03

9
Méthode de Simpson
n Ia Iex Errex
2 1.5666667 1.5707963 4.1297e-03
4 1.5707843 1.5707963 1.2013e-05
8 1.5707963 1.5707963 7.5566e-08
12 1.5707963 1.5707963 6.6422e-09
16 1.5707963 1.5707963 1.1825e-09

Méthode 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
12 1.5707963 1.5707963 3.3307e-15
16 1.5707963 1.5707963 5.7732e-15

Méthode 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
12 1.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éthodes vues précédemment.
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 = ["Méthode des trapèzes " ; " Méthode de Simpson "; " Méthode de Romberg
Ia = [trap(f,a,b,n) ; simpf(f,a,b,n) ; romb(f,a,b,n) ; gaussn(f,a,b,n)];
disp (’ Méthode Ia Iex
Errex ’)
for i=1:4
fprintf(’%s %12.7f %12.7f %12.4e \n’ , M(i) , Ia(i) , Iex , abs(Ia(i) - Iex) )
end

end

10
On choisit n=6 pour toutes les fonctions

• f (x) = sin(x) x ∈ [0; π2 ]

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


Méthode Ia Iex Errex
Méthode des trapèzes 0.9942819 1.0000000 5.7181e-03
Méthode de Simpson 1.0000016 1.0000000 1.6344e-06
Méthode de Romberg 1.0000000 1.0000000 5.5511e-16
Méthode de Gauss-Legendre 1.0000000 1.0000000 4.6629e-14

• g(x) = log(1 + x) x ∈ [0; π2 ]

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


Méthode Ia Iex Errex
Méthode des trapèzes 0.8531121 0.8565899 3.4778e-03
Méthode de Simpson 0.8565869 0.8565899 2.9950e-06
Méthode de Romberg 0.8565899 0.8565899 1.8456e-11
Méthode de Gauss-Legendre 0.8565899 0.8565899 4.5167e-09
q √
• h(x) = 1+ x x ∈ [0; 4]

IntfunEtuQual(@(x) sqrt(1+sqrt(x)), 0 , 4,6)


Méthode Ia Iex Errex
Méthode des trapèzes 6.0260722 6.0758959 4.9824e-02
Méthode de Simpson 6.0681343 6.0758959 7.7616e-03
Méthode de Romberg 6.0743830 6.0758959 1.5129e-03
Méthode de Gauss-Legendre 6.0774012 6.0758959 1.5052e-03

• t(x) = √2 exp(−x2 ) x ∈ [0; 4]


π

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


Méthode Ia Iex Errex
Méthode des trapèzes 1.0000000 1.0000000 2.6719e-08
Méthode de Simpson 1.0000000 1.0000000 2.4466e-09
Méthode de Romberg 1.0000002 1.0000000 2.5941e-07
Méthode de Gauss-Legendre 1.0002585 1.0000000 2.5847e-04

1
• s(x) = 1+x2
x ∈ [−1; 1]

IntfunEtuQual(@(x) 1./(1+x.ˆ2), -1 , 1,6)


Méthode Ia Iex Errex
Méthode des trapèzes 1.5615385 1.5707963 9.2579e-03
Méthode de Simpson 1.5707959 1.5707963 4.3633e-07
Méthode de Romberg 1.5707963 1.5707963 1.0900e-08
Méthode de Gauss-Legendre 1.5707317 1.5707963 6.4619e-05

11
2.6 Gauss-Legendre pour une itégrale double
Le script de la fonction :

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 été introduite auparavant.

2.6.1 F (x, y) = xy 2 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

12
3 Commentaires et conclusion
À l’aide des différentes méthodes d’intégration numérique nous avons pu calculer les intégrales
bornées des fonctions proposées tout en effectuant une étude qualitative et quantitative.

• L’étude quantitative : En faisant varier le n ”nombre de subdivision de l’intervalle”


on peut constater,d’après nos résultats, que pour toutes les méthodes l’erreur commise
diminue ( donc précision augmente) avec l’augmentation de n

• L’étude qualitative : en fixant le n on et pour une meme fonction on compare les résultats
obtenus avec les différentes méthodes. On peut constater que :

– Pour toutes les fonctions, la méthode de Romberg et Gauss-Legendre donnent de


très bons résultats
– La méthode de trapèzes a la plus faible précision (sauf pour la fonction ’t’ ) vu que
c’est une méthode simple qui n’efffectue pas beaucoup de calculs.
– la méthode de Simpson donne les meilleurs résultats pour les fonctions ’s’ et ’t’
puisque la méthode de simpson est basée sur une interpolation polynomiale d’ordre
2 sur chaque intervalle de subdivision, et ces deux fonction ont un comportement
assez similaire à un polynome d’ordre 2 sur lintervalle d’intégration.

Remarque : Pour l’étude qualitative : on a utilisé une matrice de chaine de caractères


et la façon dont elle a été déclarée ne marche que pour une version 2017 ou une version
plus récente.

13

Vous aimerez peut-être aussi