Cours Algo Matlab Tsgeo1 - 2021 2022
Cours Algo Matlab Tsgeo1 - 2021 2022
Cours Algo Matlab Tsgeo1 - 2021 2022
TS GEO 1
EN-TP
Promo 2021-2022
Enseignant :
Kassiénou LAMIEN
Docteur en Mathématiques Appliquées
Spécialité: Analyse Numériques et Simulations
Maître-Assistant à l’IST/ENS
Contenu
• Installation de MATLAB
• Motivation
• Partie I: ALGORITHMIQUE
1. Définitions
2. Quelques exemples de langages de programmations
3. Quelques instructions communes à l’ensemble des langages
1. Introduction
2. Généralités et prises en main
3. Les vecteurs
4. Les matrices
5. Programmation en matlab
6. Le graphisme
7. Résolution des EDO
Motivation
t=linspace(-5,5,1000);
x=(1+t.^2).*sin(20*t);
y=(1+t.^2).*cos(20*t);
z=t;
plot3(x,y,z);
function fonction_parametree(n)
t = linspace(-5,5,n);
x = (1+t.^2).*cos(20*t) ou sin (t) .^3;
y = (1+t.^2).*sin(20*t) ou cos(t) +cos(t).^4;
curve = animatedline('Color','r','LineWidth',4);
set(gca, 'XLim', [-30, 30], 'YLim', [-30, 30], 'ZLim', [-5, 5]);
view(43,24);
hold on
for i=1:length(t)
addpoints(curve, x(i), y(i), t(i));
head = scatter3(x(i), y(i), t(i), 'Filled', 'MarkerFacecolor', 'k', 'MarkerEdgecolor', 'k');
drawnow
pause(0.00001);
delete(head)
end
function fonction_a_deux_variables(n,a)
x=linspace(0,pi,n);
y=linspace(0,pi,n);
[X Y] = meshgrid(x,y);
f = sin(Y.^2 + a*X) - a*cos(a*Y - X.^2);
mesh(X,Y,f);
end
Partie I : algorithmique
En général, la résolution d’un problème en s’aidant d’un ordinateur à travers un programme
informatique s’effectue suivant le schéma :
Solution Ordinateur
1- Définition
Un algorithme est une suite d’instructions (Résumé des tâches nécessaires), qui une fois
exécutée conduit à un résultat donné.
a) Exemple d’Algorithme:
- La recette qui permet de cuisiner un plat spécifié est un algorithme;
- Indiqué un chemin à une personne égarée c'est lui faire exécuté un algorithmes;
- faire chercher un objet à quelqu’un par téléphone c’est fabriquer et faire exécuter
des algorithmes.
Cette série d’instructions forme un algorithme, qui correspond à l’ensemble des tâches
nécessaires pour la détermination de l’image d’un réel par la fonction:
𝟏 𝟐
𝒇(𝒙) = √𝒙 − 𝒙
𝟒
c) Remarque:
Un algorithme est écrit pour un objectif bien déterminé, pour cela, le rédacteur doit avoir de
l’intuition, être méthodique et très rigoureux.
Pour transmettre des instructions à un ordinateur pour qu’il effectue les tâches à votre place,
un langage de programmation (la langue que comprend votre machine) est Nécessaire.
C
C++
COBOL
FORTRAN
JAVA
PASCAL
ADA
PROLOG
MATLAB
…
Affectation ou lecture
L’affectation ou la lecture signifie que l’utilisateur doit rentrer une valeur, qui peut être
variable, pour que le programme la mémorise.
Affichage
Sous la demande de l’utilisateur, le programme cherche et affiche la valeur sollicitée par
l’utilisateur.
Les boucles
Une boucle est une structure répétitive ou itérative, c’est-à-dire que la boucle effectue n fois
un calcul sous le contrôle d’une condition d’arrêt. Il existe deux types de boucles.
Instruction(s)
fin
instructions
fin
Les tests
Il existe principalement deux types de tests :
si conditions
instruction(s)
sinon
instruction(s)
fin
si conditions
instruction(s)
fin
Par exemple :
si conditions
instruction(s)
sinon
si conditions
instructions
sinon
instruction(s)
fin
fin
Remarque : les tests vérifient une condition et exécutent les instructions une seule
fois, par conséquent ils sont distincts des boucles.
Application 1 :
soit U la suite de nombres réels définie par:
𝟏
𝑼𝟎 =
{ 𝟐
𝑼𝒏+𝟏 = 𝟐𝑼𝒏 + 𝟑
1-Ecrire un algorithme pour calculer U210 en utilisant la boucle Pour.
(Autrement dit: déterminer un résumé des tâches nécessaires pour obtenir U210 , en
utilisant la boucle Pour )
2- Ecrire un algorithme pour calculer U1002 en utilisant la boucle tant que.
(Autrement dit: déterminer un résumé des tâches nécessaires pour obtenir U210 , en
utilisant la boucle tant que)
Correction :
U0 = 1/2
pour n = 0 à 209
Un+1 = 2Un + 3
fin
U210
U0 = 1/2
n=0
tant que n est inférieur ou égale à 1001
Un+1 = 2Un + 3
n=n+1
fin
U1002
Partie II: INITIATION A MATLAB
INTRODUCTION
Type d’outil
MATLAB est un langage de programmation et un environnement de développement.
Société
MATLAB est commercialisé par The MathWorks une société américaine
Domaines
MATLAB est utilise aujourd’hui dans tous les domains: calcul numérique, éducation,
recherche, industrie, développement de projets, ...
Historique
MATLAB veut dire Matrix Laboratory. Il fut conçu par le mathématicien Cleve Moler de
Univerisité du Nouveau Mexique à la fin des années 70 à partir des bibliothèques Fortran,
LINPACK et EISPACK. Par la suite, Jack Little (ingénieur) comprend rapidement les
capacités et entreprend avec Steve Bangert, de le recoder en C. En 1984 Jack Little, Cleve
Moller et Steve Bangert créèrent la société The MathWorks afin de commercialiser la
version 1.0 de MATLAB .
Capacités
MATLAB est un langage interactif, de haut niveau exécution de tâches plus rapide que C,
C++ et fortran.
Alternatives
D’autres outils ont été développés (certains gratuits) et sont des alternatives à MATLAB:
Fermat, GNU Octave, IDL (langage), JMathLib, LMS Imagine.Lab, AMESim, Scilab,
Sysquake.
1. Généralités et prise en main
Il existe plusieurs fonctions intégrées à MATLAB qu’on peut utiliser sans forcement toutes les
retenir. Il est donc intéressant de savoir utiliser l’aide en ligne qui donne toutes les fonctions et
les syntaxes correspondantes. L’aide est uniquement disponible en langue anglaise. Elle permet
de retrouver toutes les informations utiles. En allant dans le menu Help->MATLAB help, une
nouvelle fenêtre s'ouvre partagée en deux. A gauche, on peut en cliquant sur le signet supérieur
correspondant, activer :
-Contents : La table des matières de l'aide en ligne. En cliquant sur un chapitre de l'arborescence,
son contenu est affiché dans la fenêtre de droite.
-Index : L'index de l'aide en ligne, qui répertorie toutes les commandes Matlab et permet
d'accéder à leur mode d'emploi spécifique. Pour une commande connue, on peut taper le nom
dans la fenêtre de saisie Search index for. Si on ne connait pas la commande on peut la
rechercher dans la liste alphabétique proposée. Pour avancer dans l'alphabet taper la première
lettre de la commande recherchée dans la fenêtre de saisie.
-Search : C’est un moteur de recherche dans l'index. On peut aussi taper lookfor nom du sujet
dans la fenêtre de travail MATLAB.
- Favorites : La liste des chapitres de l'aide stockées dans les favoris. Pour ajouter un chapitre
dans cette liste, se positionner dessus à partir de Contents et cliquer sur le bouton de droite de
la souris.
-Une aide très importante se présente sous la forme de programmes de démonstration auxquels
on peut accéder à partir de Help > Demo, ou bien en tapant demos directement dans la fenêtre
de commande.
Chaque commande passée à MATLAB est interprétée, le résultat est affiché, et l'utilisateur
reçoit de nouveau le prompt pour la commande suivante : c'est le mode interactif.
Exemples
a=2 (entrer)
Donne la valeur 2 à la variable a et affiche le résultat
a=2
b=3; (entrer)
Donne la valeur 3 à la variable b et garde le résultat en mémoire
b (entrer)
Permet d’afficher la valeur de la variable b.
b=a (entrer)
Change la valeur de la variable b en lui assignant la valeur de la variable a.
Opérations élémentaires
1+9 (entrer)
ans=10
6/2 (entrer)
ans=3
1/3
ans=0.3333
format long
Permet d’afficher une variable avec plus de chiffres avec la virgule.
ans= 0.33333333333333
format short
C’est le format par défaut
2^5
ans=32
Variables spéciales
pi (enter)
ans=3.1416
realmin
ans = 2.2251e-308
Plus petit entier positif que le logiciel peut enregistrer.
realmax
ans =1.7977e+308
Plus grand entier positif que le logiciel peut enregistrer.
eps
ans =2.2204e-016
Valeur assez petite et positive
Fonctions mathématiques
sin(pi/2)
ans=1
cos, tan, asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh, exp, log, sqrt, …
v=[1 2 5 4]
v=1 2 5 4
ou bien
v=[1,2,5,4]
w=[1;2;5;4]
w=
1
2
5
4
ou bien
w=v’
Par description (pour les vecteurs possédant plusieurs éléments suivant une logique)
x=0:pi/11:pi
X= Columns 1 through 7
Columns 8 through 12
y=linspace(0,pi,12)
y = Columns 1 through 7
0 0.2856 0.5712 0.8568 1.1424 1.4280 1.7136
Columns 8 through 12
1.9992 2.2848 2.5704 2.8560 3.1416
z=linspace(0,pi)
Donne 100 éléments par défaut
ou
v(2:4)
v([4 3 2 3])
ans = 4 5 2 5
v([2 3])=[0 10]
v = 1 0 10 4
1) a =0:3:18
2) b=linspace(0,12,7)
3) c = 4*b
4) d=size(a)
5) e=b’
6) f=b^2
7) g=a.^2
8) h=b.*a
9) i=b([1 3 7])
10) j= i(1,2)
3. Les matrices
3.1. Création
Une matrice est un ensemble de lignes comportant toutes le même nombre de colonnes.
M3=10*M1
M3 =
10 20 30
40 50 60
70 80 90
M4=M1/2
M4 =
0.5000 1.0000 1.5000
2.0000 2.5000 3.0000
3.5000 4.0000 4.5000
M5=M1^2
M5 =
30 36 42
66 81 96
102 126 150
M6=M1.^2
M6 =
1 4 9
16 25 36
49 64 81
(2,3)(3,3)=(2,3)
N2=M1*M2
(3,3)(2,3) impossible
P=[4 8 6;7 9 4; 7 2 1]
N3=M2/P
N3 =
0.8525 -0.5902 0.2459
3.6967 -2.2131 1.6721
N4=M2*inv(P)
N4 =
0.8525 -0.5902 0.2459
3.6967 -2.2131 1.6721
Matrice nulle
zeros(2,3)
ans =
0 0 0
0 0 0
1 partout
ones(2,3)
ans =
1 1 1
1 1 1
Matrice diagonale
diag([4 5 3])
ans =
4 0 0
0 5 0
0 0 3
diag([4 5 3], 1)
ans =
0 4 0 0
0 0 5 0
0 0 0 3
0 0 0 0
diag([4 5 3],-1)
ans =
0 0 0 0
4 0 0 0
0 5 0 0
0 0 3 0
Application 3
Application 4
Ecrire les instructions MATLAB permettant d’exécuter les tâches suivantes.
1. Créer le vecteur V = (1, 1/2, 1/3, 1/4, ..., 1/1000)
2. Soit X le vecteur crée par l’instruction X = 1 : 0.01 : 10 .
a) Mettre dans une variable n la taille du vecteur X.
b) Afficher à l’écran la valeur du 3è élément de X.
c) Créer un vecteur Y qui contient tous les éléments de X lus dans le sens inverse.
d) Echanger le 5é et le 8é élément de Y.
4. Programmer en MATLAB
4.1. Opérations logiques et contrôle d’exécution
X=[-2 3 5;-1 0 1]
x=
-2 3 5
-1 0 1
>> x>1
ans =
0 1 1
0 0 0
ans =
3
5
qui permet d’extraire les éléments de x qui vérifient la condition définie.
for
expression(s)
end
Exemple:
>>for n=1:5
for m=1:5
A(n,m)=n^2+m^2;
end
end
>>A =
2 5 10 17 26
5 8 13 20 29
10 13 18 25 34
17 20 25 32 41
26 29 34 41 50
while expression
commande(s)
end
if expression
commande 1 (si expression vrai)
else
commande 2 (si expression n’est pas vrai)
end
Exemple : Trouver le programme matlab correspondant aux algorithmes avec la boucle Pour
et la boucle Tant que de l’exercice d’application à la fin de la partie algorithmique.
Exemple :
Ou bien
Démarrer/poste de travail/C/Clic droit/Nouveau/Dossier/’donner un nom’
Créer un sous dossier à l’intérieur du dossier créé.
Pour enregistrer :
save/ chemin d’accès vers le dossier prévu pour les différents programmes, puis le nom du
programme suivi de enregistré.
Exécuter un M-file
A partir du work space :
>>cd(‘C/ nom dossier/ nom sous dossier’) + entrée
Remarque: on peut exécuter les M-files à partir de la barre d’outils du fichier: Debug/run ou
bien taper F5. Ou bien à partir du work space, dans la première fenêtre en haut, clique droit sur
le nom de fichier et run.
Application 4 :
Exemple
function y=temps(x)
% temps affiche un message suivant le temps qu’il fait
% et retourne l’opposé de la valeur de x
if length(x)>1 error (‘x doit être scalaire’); end
if x~=0
disp (‘espérons que demain sera meilleur!’)
end
y=-x;
end
5. Le graphisme
5.1. Graphisme dimension 2
On utilise l’instruction plot pour les représentations graphiques en dimension 2.
Exemple1: représentation graphique sur [0, 2pi] de la fonction f(x) = sin(x).
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
Exemple2 : représentation graphique sur [0, 2pi] des fonctions f(x) = cos(x) et g(x) = sin(x)
sur la même figure.
x=linspace(0,2*pi,30);
plot(x,cos(x))
hold on
plot(x,sin(x))
hold off
Exemple3 : représentation graphique sur [0, 2pi] des fonctions f(x) = cos(x) et g(x) = sin(x)
sur la même figure avec une légende, un titre et annotation des axes du repère.
x=linspace(0,2*pi,30);
plot(x,sin(x),x,cos(x))
legend(‘courbe de sinus’,’courbe de cosinus’)
title(‘Courbes de fonctions circulaires’)
xlabel('abscisse'), ylabel('ordonnée')
Exemple4 : représentation graphique sur [0, 2pi] sur la même figure de la fonctions f(x) =
cos(x) en bleue avec les symboles <: et de g(x) = sin(x) en rouge avec le symbole +.
x=linspace(0,2*pi,30);
plot(x,sin(x),'r+',x,cos(x),'b<:')
Exemple5: représentation graphique sur [0, 2pi] sur la même figure subdivisée en 2 lignes,
une colonne, de la fonctions f(x) = cos(x) en bleue avec les symboles <: sur la première ligne
et de g(x) = sin(x) en rouge avec le symbole + sur la deuxième ligne.
x=linspace(0,2*pi,30);
subplot(2,1,1)
plot(x,sin(x),'r+‘)
subplot(2,1,2)
plot(x,cos(x),'b<:')
5.2 Graphisme 3D
- l’instruction Plot3
On utilise l’instruction plot3 pour les représentations graphiques des courbes paramétrées.
Exemple: : représentation graphique sur [0, pi] de la courbe paramétrée définie par :
x sin(t )
y cos(t )
t=linspace(0,10*pi);
plot3(sin(t),cos(t),t)
- l’instruction Mesh
On utilise l’instruction Mesh pour les représentations graphiques des fonctions à 2 variables.
L’instruction meshgrid :
Pour
x=[1 2 3], y=[4 5 6],
X=
1 2 3
1 2 3
1 2 3
Y=
4 4 4
5 5 5
6 6 6
Ce qui donne l’ensemble des couples :
(X,Y) = {(1,4),(2,4),(3,4),(1,5),…,(3,6)}
x=0:.1:10; y=-10:.1:10;
[X,Y] = meshgrid(x,y);
Z=cos(X+Y);
mesh(X,Y,Z)
(Voir l’instruction pie pour les diagrammes circulaire, bar, barh, bar3 pour les
diagramme en batons)
Temps 0 1 2 3 4 5 6 7 8 9 10
mesure 0 0, 1 1, 2 1, 2 3 1, 1 0,
ss 5 2 9 5 5
Il souhaite approcher ce phénomène par un polynôme afin d’avancer plus vite dans ses
travaux. Il vous demande de trouver un polynôme dont les valeurs sont suffisamment proches
de celles du phénomène et de faire la vérification sur une figure présentant la courbe qui passe
par l’ensemble des points d’abscisse le temps et d’ordonnée la mesure correspondante, ainsi
que celle du polynôme trouvé.
Correction
function interpolation(d)
t=0:1:10;
m=[0 .5 1 1.2 2 1.9 2 3 1.5 1 .5];
c=polyfit(t,m,d);
tt=0:.05:1;
y=polyval(c,tt);
z=spline(t,m,tt);
plot(t,m,’r’,tt,y,’b’,tt,z,’k’)
legend('Points à interpoler','Courbe avec polyfit', 'Courbe avec spline’)
end
Cette fonction fournit les coefficients du polynôme de degré n dans l’ordre décroissant.
8- Quelques exercice de Travaux Pratiques
Exercice 1:
1- Créer un programme en utilisant une fonction qui retourne l’adresse du plus grand élément
d’un vecteur A donné en argument d’entrée.
2- Créer un programme en utilisant une fonction qui retourne les racines d’un polynôme du
2nd degré dont les coefficients sont donnés en argument d’entrée.
f(x)
Exercice 3:
Créer une fonction permettant de calculer respectivement les 10 premiers termes, les
100 premiers termes et les 200 premiers termes d’une suite géométrique de raison 0 ,5
et de premier terme u(1)=200.
Exercice 4:
Ecrire un programme qui calcule le factoriel d’un entier naturel définit par :
𝟎! = 𝟏
{ 𝟏! = 𝟏
𝒏! = 𝒏(𝒏 − 𝟏)! ∀𝒏 ≥ 𝟐
Exercice 5 :
1- Créer une fonction matlab qui permet de représenter graphiquement la courbe
de f et dont la variable d’entrée est n le nombre de points choisi sur l’intervalle
[0 , π].
Bibliographie
[1] Paul MILAN, cours d’algorithmique.