Académique Documents
Professionnel Documents
Culture Documents
RAPPORT de Analyse Numérique ABAGHOUGH - SOUKAH-MOUKHLISS PDF
RAPPORT de Analyse Numérique ABAGHOUGH - SOUKAH-MOUKHLISS PDF
Université HASSAN 1
Faculté des sciences et techniques SETTAT
Département chimie appliquée
Filière: procédés et ingénierie chimique
Rapport de TP :
Analyse numérique
Applications sous Matlab
Sous l’encadrement :
Mr.K.FAKHAR
Réaliser par :
ABAGHOUGH Brahim
MOKHLISS Yassine
SOUKAH Brahim
2
Table des matières
Introduction
1- Qu’est-ce que MATLAB ? ........................................................................................................................................... 4
2- Le système MATLAB ..................................................................................................................................................... 5
I. GRAPHISME ..................................................................................................................................................................... 14
1. TRACES DE COURBES BASIQUES 2D ................................................................................................................... 14
2. PLUSIEURS DONNEES SUR UN MEME GRAPHE ............................................................................................ 14
3. OPTIONS DE GRAPHE ............................................................................................................................................. 15
4. SURFACE 3D ................................................................................................................................................................ 17
Troisième partie : Travaux pratique 3
I. ALGORITHMES ............................................................................................................................................................... 18
1. ALGORITHMES DE LA RESOLUTION D’EQUATIONS LINEAIRES ............................................................... 18
2. ALGORITHMES DE LA RESOLUTION D’EQUATIONS NON LINEAIRES .................................................... 19
II. APPLICATION ................................................................................................................................................................. 21
1. ALGORITHME D’EXERCICE DE THERMODYNAMIQUE ................................................................................. 21
2. ALGORITHME DE RESOLUTION D’EQUATIONS DIFFERENTIELLE ............................................................ 22
3
Introduction
1- Qu’est-ce que MATLAB ?
- Calcul scientifique
- Développement d’algorithmes
- Acquisition de données
- Modélisation et simulation
- Analyse de données, exploration et visualisation
- Graphisme scientifique
MATLAB peut aussi être enrichi à l’aide de Toolbox (boites à outils) pour des problèmes
spécifiques.
2- Le système MATLAB
5
Première partie : Travaux pratique 1
L’addition et la soustraction des vecteurs est la même que pour les matrices. Seules changent
les significations des produits et puissances. La somme et la différence d’un vecteur signifie la
somme (ou la différence) des composantes de ce vecteur. Une opération similaire existe en
Matlab pour la multiplication.
+ Addition
Soustraction
.* Multiplication élément par élément
./ division élément par élément
.\ division à gauche élément par élément .^ power élément par
élément
.’ Transposition sans conjugaison
On ne peut utiliser le produit * sur des vecteurs qu’à la seule condition que l’un soit un vecteur
ligne (resp colonne) et l’autre un vecteur colonne (resp ligne).
Exemple1 :
a=1
b=2
somme=a+b
produit=a*b
division=a/b
puissance=a^b
racine=a^(1/2)
Exemple 2 :
v=[1 2 3 4 ]
U=[1 2 3 4 ;4 5 6 7 ;1 5 6 7; 1 2 3 4]
M=[1 0 5 3 ;5 8 6 4 ;1 2 3 5; 1 1 1 1]
6
somme1=M+U
produit1=M*U
différence=M-U
carre=M.^(2)
produit élément par élément =M.*U
2. LES MATRICES
Dans Matlab, une matrice est un tableau rectangulaire de nombres. Des significations
particulières sont liées aux matrices 1 × 1, qui sont des scalaires, et aux matrices avec
seulement une ligne ou une colonne, qui sont vecteurs. Ainsi, toutes variables, à quelques
exceptions près, sont des matrices.
Nous utiliserons dans cette partie comme exemple de matrices les matrices carrées
magiques ou matrice de Drer.
n=3
m=3
for i=1:1:n
for j=1:m
a(i,j)=i+2;
end
end
A=a
Exemple 2 : Saisir une matrice à m lignes et n colonnes dont tous les éléments
valent 0.
for i=1:m
for j=1:n
b(i,j)=0;
7
end
end
B=b
Dans Matlab il existe une commande qui donne le même résultat c’est la commande Zeros .
B=zeros(m,n)
Exemple 4 : Saisir une matrice à m lignes et n colonnes dont tous les éléments
valent 1.
for i=1:m
for j=1:n
c(i,j)=1;
end
end
C=c
Dans Matlab il existe une commande qui donne le même résultat c’est la commande ones .
C1=ones(m,n)
for i=1:n
for j=1:n
d(i,j)=i-j;
end
end
D=d
Dans Matlab il existe une commande qui donne le même résultat c’est la commande Iye(n) .
Exemple 6 : la somme et le produit élément par élément
somme=A+B
produit2=A.*B
difference2=A-B
care=A.^2
Exemple 7: Le transposé (A’), le déterminant et l’inverse d’une matrice carrée .
Atrnsp=A'
8
dererminantdeA=det(A)
linversedeA=inv(A)
exemple 8: Le nombre de lignes, le nombre de colonne et max des deux.
nombredeligne=size(A,3)
taille=size(A)
maxdenetm=length(A)
clear
n=input('donner n')
for i=1:1:n
for j=1:1:n
A(i,j)=input('donner A');
end
end
for i=1:1:n
b(i)=input('donner b');
end
determinant=det(A)
if determinant==0
disp('matrice non inversible')
else
X=inv(A)*b';
end
clear
a = input ('entrer la valeur de a=')
b = input ('entrer la valeur de b=')
if a==0
if b==0
st = sprintf ('la racine de %d x+%d=0 est l
ensemble IR') ;
else
st = sprintf ('la racine de %d x+%d=0 est l
ensemnble vide') ;
end
else
x= - b/a ;
9
st=sprintf('la racine de %d x+%d=0 est
%d',a,b,x);
end
disp(st);
la somme de deux matrice de même dimension (n, m) en utilisant les boucles for
clear
n=input('donner n')
m=input('donner m')
for i=1:1:n
for j=1:1:m
A(i,j)=input('donner A=');
end
end
A
for i=1:1:n
for j=1:1:m
B(i,j)=input('donner B=');
end
end
B
[n,m]=size(A);
C=zeros(n,m);
for i=1:n
for j=1:m
C(i,j)=A(i,j)+B(i,j);
end
end
C
Le produit de deux matrices.
clear
n=input('donner n')
m=input('donner m')
for i=1:1:n
for j=1:1:m
A(i,j)=input('donner A=');
end
end
A
for i=1:1:n
for j=1:1:m
B(i,j)=input('donner B=');
end
10
end
B
[n,m]=size(A);
C=ones(n,m);
for i=1:n
for j=1:m
C(i,j)=A(i,j)*B(i,j);
end
end
C
La suite d’instructions Matlab qui permet de demander à l’utilisateur de taper son
nom, son prénom et son âge puit affiché nom, prénom et âge
clear
nom=input('nom');
prenom=input('prenom');
age=input('age');
st=sptintf('votre nom est %s, et votre prenom est
%s, et votre age est %s',nom,prenom,age);
disp(st);
11
4. CONCLUSION
Voici un résumé des opérations possibles.
Commande Résultat
A(i,j) Aij
A(:,j) jème colonne de A
A(i,:) ième ligne de A
A(k:l,m:n) sous matrice de A composée des lignes k à l et des colonnes m à n.
v(i:j)’ Partie du vecteur v
12
C=A+B somme de deux matrices
C=A-B différence de deux matrices
C=A*B produit de deux matrices
C=A.*B matrice dont les termes sont les produits termes à termes des matrices A et B
C=A^k puissance de matrices
C=A.^k matrice dont les termes sont les puissances des termes de A
C=A’ transposée de A
C=A./B matrice dont les termes sont les divisions termes à termes des matrices A et B
X=A\backslash B trouve la solution du système AX = B
X=B/A trouve la solution de XA = B
13
Deuxième partie : Travaux pratique 2
I. GRAPHISME
TRACES DE COURBES BASIQUES 2D
La fonction plot a différentes formes qui dépendent des arguments d’entrée. Si y est
un vecteur, plot(y) produit une graphe affine par morceaux des éléments de y par
rapport à leur indice. Si l’on
spécifie deux vecteurs comme arguments, plot(x,y) produit une graphe de y où x est
l’abscisse.
Exemple 1 :
x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)
Il est alors possible de rajouter des titres pour les axes et la figure principale.
Exemple 2 :
xlabel(’x = 0:2\pi’)
ylabel(’Sine of x’)
title(’Graphe de la fonction Sinus’,’FontSize’,12)
Plusieurs couples x-y crée plusieurs graphes avec l’appel à un seul plot.
Exemple 3 :
x = 0:pi/100:2*pi;
y = sin(x);
y2 = sin(x-.25);
y3 = sin(x-.5);
plot(x,y,x,y2,x,y3)
legend('sin(x)','sin(x-25)','sin(x-5)')
14
2. OPTIONS DE GRAPHE
On utilise les options pour changer les couleurs des courbes ou bien les marqueurs. La syntaxe
est plot(x,y,’color_style_marker’)
color_style_marker est une chaine qui contient de 1 à 4 caractères construite avec les
spécifications de couleurs, de style de lignes et de type de marqueurs.
- couleurs : ’c’, ’m’, ’y’, ’r’, ’g’, ’b’, ’w’, and ’k’. Ceci correspond à cyan, magenta, jaune, rouge,
vert, bleu, blanc, et noir.
- Style de ligne : ’-’ pour solide, ’-’ pour des pointillés sous forme de traits, ’ :’ pour des
pointillés,
’-.’ pour des pointillés alternés. Il suffit de ne pas mettre de style de ligne pour ne pas tracer de
lignes.
- Style de marqueurs : ’+’, ’o’, ’*’, et ’x’, ’s’ pour des carrés, ’d’ pour des losanges, ’^’ pour
des triangles, ’v’ pour des triangles vers le bas, ’>’ pour des triangles vers la droite, ’<’ pour des
triangles vers la gauche, ’p’ pour des pentagrammes, ’h’ pour des hexagrammes, et rien pour ne
Exemple 3 :
x1 = 0:pi/100:2*pi;
x2 = 0:pi/10:2*pi;
plot(x1,sin(x1),’r:’,x2,sin(x2),’r+’)
15
Pour ajouter des graphiques à un graphe déjà existant, il suffit de taper la commande hold on.
Pour suspendre son utilisation, taper simplement hold off.
Exemple 4 :
[x,y,z] = peaks;
contour(x,y,z,20,’k’)
hold on
pcolor(x,y,z)
shading interp
hold off
Si l’on désire des fenêtres supplémentaires pour effectuer des tracés, il suffit de taper figure(n)
où n est le numéro de la figure.
16
3. SURFACE 3D
Matlab définit une surface par les coordonnées z des points sur une grille dans le plan x-y. Les
commandes mesh et surf affichent des surfaces en 3 dimensions. mesh produit un affichage en
lignes tandis que surf colorie en plus les facettes.
Pour afficher une fonction de deux variables z = f (x, y), il faut générer la liste des points x et y
(qu’on appelle maillage) et utiliser x et y pour évaluer la fonction f . La fonction meshgrid
transforme le domaine spécifié par un simple vecteur ou par deux vecteurs en maillages.
Exemple 1:
[X,Y] = meshgrid(-8:.5:8);
mesh(X,Y,Z,'EdgeColor','black')
Il est possible de créer une surface transparente en utilisant la commande hidden off.
surf(X,Y,Z)
17
Troisième partie : Travaux pratique 3
I. ALGORITHMES
1. ALGORITHMES DE LA RESOLUTION D’EQUATIONS LINEAIRES
Algorithme système linéaire triangulaire inférieur :
function x=STrinf(L,b)
n=length(b);
x(1)=b(1)/L(1,1);
for i=2:n
x(i)=b(i);
for j=1:i-1
x(i)=x(i)/L(i,j)*x(j);
end
x(i)=x(i)/L(i,i);
end
function x=STrsup(L,b)
n=length(b);
x(n)=b(n)/L(n,n);
for i=n-1:-1:1
x(i)=b(i);
for j=i+1:n
x(i)=x(i)/L(i,j)*x(j);
end
x(i)=x(i)/L(i,i);
end
Algorithme de la méthode L U :
function x=SLU(A,b)
n=length(b);
for k=1:n
l(k,k)=1;
for i=k+1:n
for j=1:n
l(i,j)=A(i,j)-l(i,k)*A(k,j);
end
end
end
u=a;
y(1)=b(1)/l(1,1);
for i=2:n
18
x(i)=b(i);
for j=1:i-1
x(i)=x(i)-l(i,j)*y(j);
end
y(i)=x(i)/l(i,i);
end
x(n)=y(n)/u(n,n);
for i=n-1:-1:1
x(i)=y(i);
for j=i+1:n
x(i)=x(i)-u(i,j)*x(j);
end
end
Algorithme de Gauss-Seidel :
function [x,Ni]=GaussSeidel(A,b,xo,eps,Nm)
n=length(b);
x=xo;
Ni=1;
while (Ni<=Nm)
xp=x;
for i=1:n
x(i)=b(i);
for j=1:i-1
if j~=i
x(i)=x(i)-A(i,j)*x(j);
end
for j=i+1:n
x(i)=x(i)-A(i,j)*xp(j);
end
end
x(i)=x(i)/A(i,i);
end
l=norm(x-xp,inf)/norm(xp,inf);
if (l<=eps);
break
end
Ni=Ni+1;
end
if (l<=eps)
str1=sprintf('Apres %d iterations,la solution obtenue
est',Ni);
disp(str1);disp(x);
str2=sprintf('et 1 erreur maximale est %f',1);
disp(str2);
else
str=sprintf('la methode a echoue apres %d iterations, 1
aproximation obtenue est',Ni);
19
disp(str);disp(x);
end
end
function [x,N]=Dich(f,a,b,eps,No)
N=1;
while (N<=No)
x=(a+b)/2;
c=(b-a)/2;
if f(a)*f(b)>0
str=sprintf('pas de changement de signe');
disp(str);
break
end
if f(a)==0
str=sprintf('la solution est x =%f',a);
disp(str);
break
end
if f(b)==0
str=sprintf('la solution est x =%f',b);
disp(str);
break
end
if (f(x)==0 | c<=eps)
srt1=sprintf('apres %d iterations \n l approximation
obtenue est x = %f',No,x);
disp (str1);
srt2=sprintf('et l erreur maximale est %f',c);
disp(str2);
break
end
if f(a)*f(b)>0
a=x;
else
b=x;
end
N=N+1;
end
20
if (N>No)
str=sprintf('apres d% iterations \n l approximation
obtenue est x = %f',No,x);
disp (str1);
srt2=sprintf('et l erreur maximale est %f',c);
disp(str2);
end
II. APPLICATION
1. ALGORITHME D’EXERCICE DE THERMODYNAMIQUE
Définition de la fonction air :
function A=aireP(P)
R=0.08206;
Pc=65.9;
Tc=416.3;
T=322;
a=(27/64)*((R^2)*(Tc^2))/Pc;
b=(1/8)*(R*Tc)/Pc;
j=-(b+(R*T)/P);
k=a/P;
m=-(a*b)/P;
L=[ 1 j k m ];
r=roots(L);
Vl=min(r);
Vg=max(r);
A=R*T*log((Vg-b)/(Vl-b))+a*((1/Vg)-(1/Vl))-P*(Vg-Vl);
end
e=0.5;
f=50;
A=aireP(5);
i=1;
while abs(A)>=1/100000
P=(e+f)/2;
A=aireP(P);
21
if aireP(e)*A<0
f=(f+e)/2;
else
e=(f+e)/2;
end
i=i+1;
end
P
A
i
test :
P =21.5760 (presion )
A =9.8129e-006 ( aire avec lequel la condition de l’erreur
est vérifie )
i = 22 (le nombre des itération )
clear;
N=50;
a=0;
b=1;
h=(b-a)/(N+1);
A=zeros(N);
x=a+h:h:b-h;
for i=1:N
A(i,i)=-2*(1+x(i)^2);
if (i<N)
A(i,i+1)=1+x(i)^2+h*x(i);
A(i+1,i)=1+x(i)^2-h*x(i);
end
end
Ua=a.^2+sin(a)+1;
Ub=b.^2+sin(b)+1;
22
F=(2+6*x.^2+2*x.*cos(x)-(1+x.^2).*sin(x))*h^2;
F(1)=F(1)-Ua*(1+x(1)^2-h*x(1));
F(N)=F(N)-Ub*(1+x(N)^2+h*x(N));
U=A\F';
U=[Ua;U;Ub];
23