École des Mines de Nancy Année 2015-2016 Denis Villemonais, denis.villemonais@univ-lorraine.fr FI-MGP 1A Mathématiques Initiation à Matlab I 1 Prise en main Lors de l ouverture de Matlab, trois panneaux s affichent Current Folder, qui permet de naviguer dans les dossiers. Workspace, qui permet de naviguer dans les données créées au fur et à mesure. Command Window, qui permet d entrer et lire des commandes, ligne par ligne après le signe >>. Elle peut être effacée avec la commande clc. C est dans cette dernière fenêtre que nous allons créer des variables et appeler des fonctions. Activité 1. Variables. Taper les lignes de commandes suivantes en pressant la touche Entrée pour lancer le calcul. Cette première étape nous permet de créer les variables a, b et c, et d enregistrer ainsi le résultat de certains calculs. >> a=1 >> b=(3*2)/(5+3); >> a+b >> c=2*ans >> ans >> ma_variable=2 >> mon_texte= abc Création d une variable a ayant la valeur 1. Le ; permet de ne pas afficher le résultat. ans est une variable contenant le dernier résultat calculé. Une variable peut contenir des nombres ou du texte par exemple. Il est possible de naviguer dans les commandes en pressant les touches et. Activité 2. Fonctions. Nous allons à présent utiliser quelques fonctions usuelles de Matlab. >> d=sin(a) >> e=cos(c*pi); >> f=exp(e); >> g=a+i*b; >> h=exp(i*pi/3) Utilisation des fonctions cosinus, sinus et exponentielle Nous avons utilisé ici les nombres pi et i, qui sont préenregistrés dans Matlab. Attention à ne pas les écraser. Matlab possède un très grand nombre de fonctions mathématiques. Pour les retrouver, il est possible d utiliser internet, mais également l aide en tapant la touche F1. Activité 3. Enregistrer sa session. Afin de pouvoir reprendre son travail plus tard, il est utile de pouvoir enregistrer sa session, ainsi que toutes ou certaines variables aléatoires créées pendant celle-ci. Avant 1
de commencer cette activité, créez un dossier de travail (par exemple Matlab_session1 ) et définissez le comme répertoire courant en double cliquant dessus à l aide du panneau Current Folder. Pour sauvegarder toutes vos variables, vous pouvez utiliser le bouton "Save Workspace". Pour sauvegarder une ou plusieurs variables précises, sélectionnez les dans le panneau "Workspace" et, à l aide d un clique droit, sélectionnez "Save As..." Il est également possible d utiliser des lignes de commande. >> save( file1 ) >> save( file2, a, f ) La commande save( filename ) sauvegarde tout l espace de travail dans le fichier filename.mat. La commande save( filename, x1, x2,...) sauvegarde les variables x 1, x 2,... dans le fichier filename.mat. Activité 4. Quelques manipulations utiles. Nous allons à présent utiliser quelques manipulations utiles de Matlab : utiliser l aide, prendre des renseignements sur une variable, effacer une ou toutes les variables. Pour utiliser l aide, appuyer sur la touche F1. Nous allons chercher de l information sur des fonctions usuelles. Pour cela, allez dans la section Matlab, puis Mathematics, puis Elementary Math. Dans chaque sous section, vous trouverez de nombreuses fonctions utiles et leur description. Ne pas hésiter à utiliser internet et ses moteurs de recherche pour trouver la réponse à vos questions! >> 2*asin(1) >> sqrt(2) >> log(3) >> mod(5,2) >> help mod La commande asin(x) donne l arcsinus de x, sqrt(x) la racine carrée de x, log(x) le logarithme de x, mod(x,y) donne le reste de la division euclidienne de x par y. La fonctionnalité help permet également d avoir de l information sur une fonction. Il est possible d avoir de l information sur une variable a à l aide de la commande whos a, d effacer une variable à l aide de la commande clear a, enfin d effacer toutes les variables enregistrées à l aide de la commande clear. >> whos a >> clear f >> pi=2 >> clear pi >> pi >> clear >> whos a Le fait d effacer pi permet de lui redonner sa valeur d origine. Il n y a pas de retour possible une fois la fonction clear utilisée... Il faut donc mieux réfléchir à deux fois avant d employer cette méthode! Vous pouvez toutefois récupérer les variables enregistrées à l étape précédente à l aide du panneau Current Folder ou de la commande load( filename ). 2
2 Les matrices Activité 5. Créer une matrice. Matlab permet de créer facilement des matrices, en entrant les coefficients ligne après ligne. Les coefficients d une même ligne sont séparés par une virgule,, et les lignes sont séparées entre elles par un point virgule ;. Il est également possible de modifier une matrice en doublecliquant sur son nom dans le panneau Workspace. >> u=[1,1,1] >> v=[1;1;1] >> size(u) >> size(v) >> a=[1,2,3;4,5,6] >> size(a) >> b=a >> size(b) >> c=[u;a] Création d un vecteur ligne u, c est-à-dire d une matrice avec une seule ligne. Création d un vecteur colonne v, c est-à-dire d une matrice avec une seule colonne. Création d une matrice a avec 2 lignes et 3 colonnes. La commande size(a) renvoie un vecteur ligne, composé du nombre de lignes et du nombre de colonnes de a. La commande a calcule la transposée de a. Il est possible de concaténer les matrices quand leur taille est compatible. Activité 6. Manipuler les coefficients d une matrice. Pour faire appel au coefficient a i j (i-ème ligne, j- ème colonne), il faut utiliser la syntaxe a(i,j). Chaque coefficient est considéré comme une variable numérique et peut être utilisé et modifié à votre guise. >> a(1,2) >> a(2,2)=cos(a(1,2))+b(3,1) >> v(3,1) >> v(3) >> u(2)=1+i Les coordonnées entrées doivent être compatibles avec la taille de la matrice Dans le cas d une matrice ligne ou colonne, on peut se contenter d un seul indice pour faire référence à un coefficient. Activité 7. Premiers calculs sur une matrice. Matlab permet de faire de nombreuses opérations sur les matrices. En voici quelques unes. >> c=[1,2,1;2,1,2;1,2,3] >> c^4 >> d=c^4*b >> det(c) >> e=c^(-1) >> charpoly(c, x ) >> pi*d >> cos(e) >> c.*c Matlab permet, quand les dimensions des matrices sont compatibles, le calcul des sommes, des produits, des puissances, des inverses. La commande det permet de calculer le déterminant d une matrice carrée. La commande charpoly(c, x ) permet le calcul du polynôme caractéristique d une matrice carrée. On peut multiplier un nombre réel par une matrice. En règle générale, les fonctions usuelles s appliquent terme à terme. Pour multiplier/diviser les éléments d une matrice termes à termes, on peut employer.* et./ respectivement. 3
Activité 8. Calcul des valeurs propres et vecteurs propres d une matrice. Matlab permet de calculer les vecteurs propres d une matrice à l aide de la fonction eig. >> [V,D]=eig(c) >> v1=v(:,1) >> d1=d(1,1) >> c*v1 >> d1*v1 >> solve(charpoly(c, x ) == 0, x ) La commande [V,D]=eig(c) renvoie les vecteurs propres et les valeurs propres de c les vecteur propres sont les colonnes de V les valeurs propres sont les éléments diagonaux de D La commande V(:,1) permet de sélectionner toutes les lignes de la première colonne de V, c està-dire la première colonne de V. On doit ici constater l égalité entre c v1 et d1 v1. A l aide de la dernière ligne de code ci-dessus, vérifiez que les valeurs propres données correspondent bien aux racines du polynôme caractéristique de c. 3 Un peu de calcul formel Nous voyons ici quelques outils simples de la boîte à outils Symbolic Math Toolbox de Matlab, qui permet de faire du calcul formel. Cette boîte à outil permet des calculs bien plus poussés encore, à découvrir dans l aide ou sur des tutoriels. 3.1 Calcul de dérivée Matlab sait calculer de manière formelle des dérivées sans difficulté aucune. Afin de lui indiquer que nous manipulons de manière formelle une variable x, nous tapons dans le logiciel la commande syms x. Nous définissons ensuite nos fonctions et demandons à Matlab de les dériver à l aide de la fonction diff. Activité 9. Calcul de dérivées simples >> syms x >> diff(x^2+3,1) >> f(x)=sin(5*x) >> diff(f,1) >> diff(f,2) >> Df(x)=diff(f,1) >> diff(df,1) >> h(x)=diff(f^2,4) >> h(3.5) 4
Activité 10. Calcul de dérivées multiples >> syms x y >> f(x,y)=sin(5*x+2*y^3) >> diff(f,x,1) >> diff(f,y,1) >> D2fDx2(x,y)=diff(f,x,2) >> D2fDxDy(x,y)=diff(f,x,y) >> D2fDxDy_bis(x,y)=diff(diff(f,x,1),y,1) 3.2 Calcul de primitive Matlab sait également calculer de manière formelle des primitives. Cependant, ce travail est plus difficile et il n existe pas toujours de solution simple. L intégrale d une fonction se fait à l aide de la commande int. Activité 11. Calcul d intégrales >> syms x y n >> f(x)=x^2*log(x) >> int(f,x) >> g(x,y)=x^2+3*x*y-2*y*cos(x) >> int(g,x) >> int(g,y) >> h(x,n)=x^n >> int(h,x) 3.3 Les équations différentielles ordinaires Matlab sait également résoudre formellement les équations différentielles suffisamment simple. Afin de lui indiquer que nous manipulons de manière formelle une fonction y d une variable x, nous tapons dans le logiciel la commande syms y(x). Les commandes diff(y,1) et diff(y,2) désignent les dérivées première et deuxième de y. Activité 12. EDO d ordre 2 Commençons par résoudre l équation différentielle 2 x 2 y (x) + 3 x y y = 0, sans condition initiale, puis avec les conditions initiales y(1) = 1, puis avec les conditions initiales y(1) = 1 et y (1) = 2. >> syms y(x) >> Dy=diff(y,1) >> D2y=diff(y,2) >> dsolve(2*x^2*d2y + 3*x*Dy - y == 0) >> dsolve(2*x^2*d2y + 3*x*Dy - y == 0, y(1)==1) >> dsolve(2*x^2*d2y + 3*x*Dy - y == 0, y(1)==1, Dy(1)==2) 5
Activité 13. Une autre EDO d ordre 2 Nous cherchons à présent à résoudre l équation différentielle avec les conditions initiales y(0) = 1 et y (0) = 0. y (x) = cos(2 x), >> syms y(x) >> Dy=diff(y,1) >> D2y=diff(y,2) >> y(x)=dsolve(d2y == cos(2*x) - y, y(0) == 1, Dy(0) == 0) >> y(x)=simplify(y) 6