Obtenir le pack complet des cours, TDs, TPs et projets sur analyse numérique!
Êtes-vous un étudiant passionné d'informatique et souhaitez-vous maîtriser analyse numérique ? Ne cherchez plus, nous avons le pack parfait pour vous.

Accédez à une collection complète des supports de cours, des travaux dirigés (TD), des travaux pratiques (TP) et des projets.
Obtenir le pack maintenantJ.LAASSIRI et S. EL HAJJImia/1 J.LAASSIRI et S. EL HAJJImia/2 Plan:
I)GENERALITES...............................................................................................................3
II)OPÉRATIONS NUMÉRIQUES EN LIGNE............................................................4
1)Premières commandes.....................................................................................................4
2)Calculs sur les nombre complexes..................................................................................4
3)Affichage des résultats.....................................................................................................5
4)Matrices.............................................................................................................................5
a)Création.............................................................................................................................5
b)Manipulation.....................................................................................................................5
e)Calculs...............................................................................................................................6
III)FONCTIONS GRAPHIQUES....................................................................................7
1)Fonctions2D.....................................................................................................................7
2)Fonctions3D.....................................................................................................................7
IV)EXERCICES.................................................................................................................8
1)COURBE DE GAUSS......................................................................................................8
2)DOSAGECOLORIMETRIQUE DU MANGANESES DANS UN ACIER...............8
a)Créer les tableaux lambda et A;....................................................................................8
V)AIDE POUR TP...........................................................................................................9
1)Les instructions d’affectation........................................................................................15
2)Les instructions de contrôle...........................................................................................15
a)L'instruction «while»...................................................................................................16
x%affiche x.................................................................................................................16
b)L’instruction “for”.........................................................................................................16
c)L'instruction if................................................................................................................17
Affecter prélablement un entier aux variable i et x..............................................................17
3)Exemple de script...........................................................................................................184 ème
étape: Exécution. Avant d’exécuter il faut spécifier le répertoire où se trouve le m-
file, en écrivant l’instruction suivantedans la fenêtre matlab: cd c:\A1.Dans la fenêtre
de commande Matlab, taper le nom du fichier sans l’extension;par exemple ex0..........19
4)Exemple de fonction.......................................................................................................19
5)Exercices..........................................................................................................................19
Pour les exercices suivants, on passera par les mêmes étapes............................................19
a)Exercice1........................................................................................................................19
b)Exercice2: recherche dezéro par dichotomie............................................................19
d)Exercice4: Monte-Carlo...............................................................................................20
L’instructionrandxrenvoie un nombre réel positif pseudo-aléatoire inférieur à1.........20
6)Série des Exercices:.......................................................................................................21
a)Série.................................................................................................................................21
b)Série2...............................................................................................................................23
c)Série3:.............................................................................................................................24
J.LAASSIRI et S. EL HAJJImia/3 I)GENERALITES
1)Qu’est-ce que Matlab?
Matlab est un logiciel de calcul scientifique:
fonctions mathématiques usuelles
calcul matriciel
racines d’un polynôme
équations différentielles
intégration numériqueetc. Il peut être doté de nombreuses extensions (boîtes à outils: statistique, SIMULINK, ...). 2)On peut utiliser Matlab de deux manières différentes
a)en entrant des instructions à la suite du prompteur >>, le logiciel se comporte
comme une très bonne calculatrice graphique;
b)en créant desscripts(oum-files) ou des fonctions (extension.m), on crée des
“programmes” sauvegardables.3)Aide Pour tout problème de syntaxe utilisez l’aide en ligne (commande help).
J.LAASSIRI et S. EL HAJJImia/4 II)OPERATIONS NUMERIQUES EN LIGNE
Il s’agit ici d’utiliser les opérateurs mathématiques afin de se familiariser avec le logiciel. Le
calcul sur les nombres complexes est aussi abordé.
1)Premières commandes
Voici quelques exemples à essayer (chercher le résultat avant l'exécution de la ligne et le
commenter) :
>>3*4
On peut taper plusieurs commandes Matlab sur une même ligne, en les séparant par une
virgule:
>>5*6,2^5
>>3+5*2^5
Les opérateurs arithmétiques ont la priorité habituelle (cf. calculette).
>>3+5*2^5/5
Pour rappeler des commandes précédentes,2possibilités:
Utiliser les touches du clavierouet les commandes précédentes apparaissent dans
l’ordre chronologique;
Taper les premiers caractères de la commande puis utiliser les touchesou.
Après avoir choisi la commande à rappeler, il est toujours possible de la modifier en
se déplaçant avec les toucheseteten effectuant la correction
Une ligne d'instruction terminée par un point virgule est exécutée immédiatement mais le
résultat n’est pas affiché:
Il est important de bien comprendre le sens du signe = qui ne signifie pas qu’il y a identité
entre les deux termes. Il signifie que le résultat de l’expression de droite est assigné à la
variable de gauche qui prend donc une nouvelle valeur.
A titre d’exemple,x=x+1n’a de sens qu’en langage de programmation:le résultat de la
somme du “contenu” de la variable x et de1est recopié dans la même variable x.
Ladernière réponse est appeléeans, à défaut de lui avoir donné un nom. On peut l'utiliser
ainsi (deviner les résultats) :
2)Calculs sur les nombre complexes
Dans Matlab, i (ou j) désigne le nombre imaginaire pur de partie imaginaire égale à1; si la
variable i a été utilisée entre temps à un autre usage (indice de boucle par exemple) vous
pouvez la réinitialiser par i=sqrt(-1).
La commandewhosfournit en plus des informations sur lataille, le nombre
d’éléments et le nombre d’octets occupés. Matlab travaille toujours sur des données
endouble précision(soit8octets).
4)Matrices
Le "Mat" de Matlab ne signifie pas Mathématique mais Matrice. De fait, il considère tout
nombre réel comme une matrice11.Pour Matlab,tout est tableau.
Syntaxe: A = [a
Les éléments d’une ligne sont séparés par des blancs ou des virgules,
Les éléments d’une colonne sont séparés par un point virgule ou un retour chariot,
Le tout est mis entre crochets.
L’appel aux éléments de la matrice est le suivant:A(lignes, colonnes)
a)Création
Il est possible de réaliser des opérations terme à terme sur les matrices (les matrices sont alors
assimilées à des tableaux).
Les deux opérateurs + et–travaillent déjà terme à terme. Pour les autres opérateurs *, /,\, et ^
, il est nécessaire de les précéder d’un point pour préciser que les opérations se font terme àterme. Remarque:
Notez quelques symboles importants :pi,i(pour un nombre complexe) eteps(2.2e-16,
précision maximale des calculs). Il faut également noter que ces symboles peuvent voir leur
contenu modifié. Leur sens donné plus haut est celui fixé au lancement de Matlab. Si, après
une modification maladroite, on veut revenir à la valeur prédéfinie, il faut taperclearnom de
la variable.
J.LAASSIRI et S. EL HAJJImia/7 III)FONCTIONS GRAPHIQUES
Matlab offre la possibilités de résultats graphiques assez esthétiques. Travaillant sous
Windows, ils peuvent être recopiés dans une autre application (Word, ...)
1)Fonctions2D
>>x=-10:.1:10;
>>plot(x.^2)%chaque élément du tableau x à la puissance2et non produit matriciel
>>figure%créer une nouvelle fenêtre graphique. permet de stocker plusieurs
graphes en une même session
>>plot(x,x.^2)
Les styles de tracé:
SymboleCouleurSymboleMarqueur
On utilise la commande plot3.Elle possède la même syntaxe que plot avec le paramètre z
d’altitude en plus:
>>t=0:pi/50:20*pi;
>>plot3(sin(t),cos(t),t);
Pour voir les figures: menuWindows.
J.LAASSIRI et S. EL HAJJImia/8 IV)EXERCICES
1)COURBE DE GAUSS
Tracer la courbe correspondant à la fonction
pour010x.
(on commencera par créer un tableau de valeur pour x avec un pas de0.01).
2)DOSAGE COLORIMETRIQUE DU MANGANESES DANS UN ACIER
Objectif:
Tracer la courbe d’absorbanceA=f()à partir de résultats expérimentaux
Exploiter cette courbe pour obtenir des résultats par interpolation
a)Créer les tableauxlambdaetA;
b)Tracer A=f(lambda) (afficher les point expérimentaux uniquement);
c)Tracer la courbe par interpolation avec un pas de1nm.Pour cela,utiliser la
commandespline(voir l’aide:help spline) pour l’interpolation etholdpour
afficher les2courbes sur le même graphique;
d)Déterminer A pourquelconque (à l’aide despline).
e)Trouver le maximum (fonctionmax).
J.LAASSIRI et S. EL HAJJImia/9 V)AIDE POUR TP
1)LE SCRIPT AIDE_TP1
%Le script aide_TP1en mode"démonstration" permet de se
%familiariser avec les commandes simples de Matlab.
%On fait défiler la suite du contenu de cette aide en appuyant
%sur n'importe quelle touche.
%Les commentaires écrits après un "%" ne sont pas interprétés.
%Les premières lignes de commentaires sont disponible par"help aide_TP1"
help aide_TP1%on affiche les premières lignes de commentaires ci-dessus
echo on%mode démonstration avec affichage des instructionspause format compact %affichage des résultats sans sauts de ligne
disp(' '), disp(' '), disp('Variables :'), disp(' ')a=1 2+a
b=3*ans%le dernier résultat est appelé"ans"pour"answer"
1+2^5/4,3e6,... %","sépare sur une ligne et"..."empêche la rupture de ligne
i^2,pi,exp(i*pi) %i et j représentent(sauf si redéfinis) la même racine de-1
a=1;b=a+1;c='0*a';%";"permet de ne pas afficher le résultat:
a=a,b,2*c%la chaîne de3caractères"c"est une matrice1x3
x=(1>=0);y=(0~=0);
x,y%vrai=1et faux=0pause disp(' '), disp(' '), disp('Affichage :'), disp(' ')
format long,1/3%format avec(au maximum)15chiffres
format short e,1/3%format avec5chiffres en notation scientifique
format,1/3%format courant(5décimales,non compact)
format compact
1+eps==1,1+eps/2==1%epsilon machine=eps=2^(-52)
2^(-1074)%plus petit nombre realmin flottant>0
2^(1023)*(2-2^(-52))%plus grand nombre realmax flottant
10^1000,ans/ans%infini:Inf,not_a_number : NaNpause disp(' '), disp(' '), disp('Matrices et vecteurs :'), disp(' ')
A=[12;23]%cette matrice s'écrit aussi[1,2;2,3]
A(2,2)=1;A
B=rand(2,3)%matrice2x3aléatoire
u=2:4%":"permet de construire des suites arithmétiques
2:0.5:4%nombres de2a4par pas de0.5
v=[234]'%vecteur=adjoint d'une matrice ligne
J.LAASSIRI et S. EL HAJJImia/10 prod(1:20)%factorielle20
p=poly([0,-2]) %coefficients en décroissant du polynôme p de racines0et-2
roots(p)%récupération des racines de p dans C
a0=p(length(p)) %coefficient"constant"de p
z=polyval(p,2);%évaluation de p(2)
fprintf('\np(2)=%g\n\n',z) %affichage du résultat avec saut de ligne par "\n"pause disp(' '), disp(' '), disp('Tests et boucles :'), disp(' ')
clear x;for k=1:5x(k)=k^2;end;x'%les vecteurs1:n sont d'accès très rapide
k=0;while k^3< 0;k=k+1;end;k%utiliser plutôt si possible"for"
n = input('nombre entier à tester ?\n'); %dialogue
if rem(n,2)==0,r='pair';else r='impair';end;
fprintf('\n%g est %s\n\n',n,r)pause disp(' '), disp(' '), disp('Graphes :'), disp(' ')
figure(1),clf%on prépare la fenêtre1(inutile si pas"hold on")
x=[-.5:0.001:0.5]';%représentation de l'axe des abscisses par une suite depoints y=x.*sin(x);
plot(x,y,'r'), axis equal %graphe de x->x*sin(1/x)sur[-1/2,1/2]en rouge("red")
title('y=x*sin(x)'), xlabel('x'), ylabel('y'), grid %légende et grille
v=axis;line([v(1),v(2)],[0,0]) %on trace l'axe des abscissespause disp(' '), disp(' '), disp('Équations différentielles :'), disp(' ')
figure(2),clf%on prépare la fenêtre2
[t1,Y1] =ode45('secondmembre_y',[01],[1]);%y'=y sur[0,1]avec y(0)=1
[t2,Y2] =ode45('secondmembre_y',[0-1],[1]);%y'=y sur[-1,0]avec y(0)=1
plot([t2t1],[Y2Y1]);%on trace la solution de y'=y sur[-1,1]avec y(0)=1
title('solution de y''=y et y(0)=1')
clear all
%on efface de la mémoire les variables affectées
echo off
1)LE SCRIPT AIDE_TP2
%Le script aide_TP2permet de se familiariser avec
%les commandes simples de Matlab concernant les matrices.
help aide_TP2,format short,format compact,echo onpause J.LAASSIRI et S. EL HAJJImia/11 disp(' '), disp(' '), disp('Matrice adjointe, produit :'), disp(' ')
clear i,u=[0i2]%variante: "u=[0,i,2]"
u', u.'%matrice adjointe et transposée
3*u,u/2,u'*u,u*u'pause disp(' '), disp(' '), disp('Id, diagonale, zeros et uns :'), disp(' ')
A=[12;34]%variante:1ère ligne avec"A=[12"et2ème avec"34]"
eye(size(A)),eye(2,3) %la matrice identité "I" se lit, comme "eye" en anglais
diag(A),diag([14]) %extraction de diagonale et construction de matrice
diagonale
zeros(2,3),ones(3,2)pause disp(' '), disp(' '), disp('Taille, norme, parties réelle et imaginaire :'), disp(' ')
u=[0i2],size(u,1),size(u,2),length(u) %"1"="ligne","2"="colonne"
norm(u,1),norm(u,2),norm(u,'inf'),norm(u)
A=[12;34],size(A),size(A,1),size(A,2)
norm(A,1),norm(A,2),norm(A,'inf'),norm(A,'fro')z=1+2*i norm(z), abs(z), real(z), imag(z), conj(z)pause disp(' '), disp(' '), disp('Déterminant, valeurs propres :'), disp(' ')
A=[12;34],det(A)
norm(A,2),sqrt(max(eig(A'*A)))
norm(A,2)==sqrt(max(eig(A'*A))) %il ne faut pas croire le résultat de ce test
p=poly([1,1]),C=compan(p)%une matrice de pol.car. proportionnel à p
eig(C), poly(C)%valeurs propres et polynôme caractéristique
disp(' '), disp(' '), disp('Matrice par blocs :'), disp(' ')
A=[12;34]
[A,[78]'],[A;[78]] %variantes: "[A[78]']"et"[A;78]"pause disp(' '), disp(' '), disp('Puissance :'), disp(' ')
A=[12;34]
inv(A), eye(size(A))/A %cf."help slash"B=A^2 B^0.5,ans^2%une racine carrée de B autre que Apause J.LAASSIRI et S. EL HAJJImia/12 disp(' '), disp(' '), disp('Opérations terme à terme :'), disp(' ')
A=[12;34]A+1 A.^2
sqrt(A)%matrice A.^0.5des racines carrées des coefficients
exp(A)%par contre, l'exponentielle de la matrice A est "expm(A)"A.*A A./A
1./A%à ne pas confondre avec l'inverse de Apause disp(' '), disp(' '), disp('Extraction de sous-matrices :'), disp(' ')
A=[12;34]
A(1,2),A(1,1),A(1,[2,1]) %des coefficients de A
A(1,:),A(:),A(:,[2,1])
%":"donne tous les éléments
A(1,end),A(:,end-1)%"end"donne le dernier élémentpause disp(' '), disp(' '), disp('Matrices creuses :'), disp(' ')
S=sparse([123],[241],[1,2,3]) %indices i,indices j,puis valeurs
T=full(S), sparse(T)
U=T(1:2,2:4)
D1=diag(ones(2,1),-1),D2=diag(ones(2,1),1)
clear all
echo off
%Le script aide_TP2permet de se familiariser avec
%les commandes simples de Matlab concernant les matrices.
help aide_TP2,format short,format compact,echo onpause disp(' '), disp(' '), disp('Matrice adjointe, produit :'), disp(' ')
clear i,u=[0i2]%variante: "u=[0,i,2]"
u', u.'%matrice adjointe et transposée
3*u,u/2,u'*u,u*u'pause J.LAASSIRI et S. EL HAJJImia/13 disp(' '), disp(' '), disp('Id, diagonale, zeros et uns :'), disp(' ')
A=[12;34]%variante:1ère ligne avec"A=[12"et2ème avec"34]"
eye(size(A)),eye(2,3) %la matrice identité"I" se lit, comme "eye" en anglais
diag(A),diag([14]) %extraction de diagonale et construction de matrice
diagonale
zeros(2,3),ones(3,2)pause disp(' '), disp(' '), disp('Taille, norme, parties réelle et imaginaire :'), disp(' ')
u=[0i2],size(u,1),size(u,2),length(u) %"1"="ligne","2"="colonne"
norm(u,1),norm(u,2),norm(u,'inf'),norm(u)
A=[12;34],size(A),size(A,1),size(A,2)
norm(A,1),norm(A,2),norm(A,'inf'),norm(A,'fro')z=1+2*i norm(z), abs(z), real(z), imag(z), conj(z)pause disp(' '), disp(' '), disp('Déterminant, valeurs propres :'), disp(' ')
A=[12;34],det(A)
norm(A,2),sqrt(max(eig(A'*A)))
norm(A,2)==sqrt(max(eig(A'*A))) %il ne faut pas croire le résultat de ce test
p=poly([1,1]),C=compan(p)%une matrice de pol.car.pro