Maîtriser le Traçage de Vecteurs 1x2 en MATLAB

MATLAB, acronyme de MATrix LABoratory, est un environnement de calcul numérique puissant, optimisé pour la manipulation de matrices. Pour exploiter pleinement ses capacités, la vectorisation des expressions est une approche essentielle. Cet article explore en détail comment tracer des vecteurs, en particulier des vecteurs de dimensions 1x2, en utilisant la commande plot de MATLAB, tout en abordant les concepts fondamentaux de l'environnement MATLAB et de la programmation vectorielle.

L'Environnement MATLAB : Fenêtre de Commande et Variables

La fenêtre principale de MATLAB, souvent appelée "Command Window", est l'espace où les commandes sont exécutées et les résultats affichés. Il est important de noter que, contrairement à des langages comme C, il n'est pas nécessaire de déclarer explicitement les variables avant leur utilisation. Une variable est créée dès sa première assignation. De plus, l'ajout d'un point-virgule (;) à la fin d'une expression supprime l'affichage de son résultat dans la fenêtre de commande, bien que le résultat soit toujours stocké dans la variable. Si le point-virgule est omis, le résultat sera affiché.

Le type de variable de base dans MATLAB est l'array de double précision. Bien qu'il existe d'autres types de données tels que les caractères (char), les cellules (cell), les structures (struct) et les entiers (int8), les double sont les plus couramment utilisés. Un array de double peut avoir plusieurs dimensions. Pour une matrice bidimensionnelle, c'est-à-dire un array de dimension 2, l'accès à un coefficient spécifique se fait en utilisant la notation A(i,j), où i représente l'indice de la ligne et j l'indice de la colonne.

Pour connaître les dimensions d'une variable, les commandes length et size sont particulièrement utiles. La commande size renvoie les dimensions d'un array, par exemple size(variable). La commande length renvoie la longueur du plus grand côté d'un array.

Illustration de la fenêtre de commande MATLAB avec des variables affichées

Vectorisation : La Clé de l'Efficacité en MATLAB

La vectorisation est le processus qui consiste à reformuler des opérations qui seraient traditionnellement effectuées dans des boucles (comme les boucles for) en opérations qui s'appliquent à des vecteurs ou des matrices entières. Cette approche est fondamentale pour tirer parti de l'optimisation de MATLAB pour les calculs matriciels et est généralement beaucoup plus rapide que l'utilisation de boucles explicites.

Par exemple, si vous souhaitez créer un vecteur de valeurs allant de 0 à 10, vous pourriez être tenté d'utiliser une boucle for. Cependant, en MATLAB, une approche vectorielle plus efficace consiste à utiliser l'opérateur de création de séquences start:step:end ou simplement start:end si le pas est de 1. Par exemple, x = 0:10; crée un vecteur ligne x contenant les entiers de 0 à 10.

L'assignation vectorielle est bien plus performante que l'utilisation de boucles for, qui sont considérablement plus lentes.

Initialisation de Matrices et Vecteurs

MATLAB offre des fonctions pratiques pour initialiser des matrices et des vecteurs avec des valeurs spécifiques. Outre la création de séquences, vous pouvez utiliser :

  • zeros(M,N) : Crée une matrice de M lignes et N colonnes remplie de zéros.
  • ones(M,N) : Crée une matrice de M lignes et N colonnes remplie de uns.
  • eye(N) : Crée une matrice identité de taille NxN.

Ces fonctions peuvent également prendre un vecteur de dimensions comme argument, par exemple zeros([M N P ...]), pour créer des arrays multidimensionnels. La documentation MATLAB, accessible via la commande help nom_de_la_fonction ou doc nom_de_la_fonction, fournit des informations détaillées sur ces fonctions, y compris une section "See also" qui suggère des commandes similaires, comme zeros et eye dans le cas de ones.

Fonctions MATLAB : Structure et Utilisation

Les fonctions MATLAB sont généralement définies dans des fichiers texte séparés portant le même nom que la fonction, avec l'extension .m. Par exemple, une fonction nommée mafonction sera stockée dans un fichier mafonction.m.

Une fonction MATLAB typique suit cette structure :

function [p] = mafonction(x,y,n)% Description courte de la fonction.% Lignes suivantes décrivant l'usage de la fonction (commentaires).% See also: autre_fonction, encore_une_autre_fonction% Corps de la fonction% ... calculs ...% p est la variable retournée par la fonctionend

La première ligne, function [p] = mafonction(x,y,n), déclare la fonction, spécifiant la variable de retour p et les arguments d'entrée (x,y,n). La ligne suivant le symbole % est une description courte qui apparaît lors de l'utilisation de commandes comme lookfor. Les lignes suivantes en commentaires détaillent l'utilisation de la fonction. Le mot-clé function indique que le fichier définit une fonction.

Toutes les variables créées à l'intérieur d'une fonction sont locales à cette fonction et ne sont pas accessibles de l'extérieur. Elles sont détruites lors du retour de la fonction, sauf si elles sont déclarées comme persistent.

Résolution de Problèmes : Scripts et Fonctions Imbriquées

Pour résoudre un problème, il est souvent utile d'écrire une séquence de commandes dans un fichier script .m. Ce fichier est simplement une liste d'expressions à évaluer par MATLAB. Tout fichier .m présent dans le chemin de MATLAB peut être exécuté depuis l'invite de commande.

Pour des tâches plus complexes, notamment lorsque des paramètres doivent être accessibles dynamiquement, l'utilisation de fonctions imbriquées peut être une solution élégante. Cela permet de résoudre un système, par exemple, pour différentes conditions initiales ou paramètres sans avoir à modifier le fichier de fonction principal.

Visualisation des Données avec plot

MATLAB offre une panoplie de commandes pour visualiser des données. Pour le tracé de données en deux dimensions, la commande plot est l'outil principal.

Tracer une Courbe Simple

La syntaxe la plus basique de la commande plot est plot(Vx, Vy), où Vx est le vecteur des abscisses et Vy est le vecteur des ordonnées. Les vecteurs peuvent être des vecteurs ligne ou colonne, à condition qu'ils aient la même longueur.

Exemple de tracé sinusoïdal avec la commande plot

Par exemple, pour tracer la fonction sinus sur l'intervalle $[0, 2\pi]$ :

  1. Définir le vecteur d'abscisses : On crée une série de valeurs équidistantes. x = linspace(0, 2*pi, 100); génère 100 points entre 0 et $2\pi$.
  2. Calculer le vecteur d'ordonnées : La fonction sin peut être appliquée terme à terme à un tableau. y = sin(x); calcule le sinus de chaque élément de x.
  3. Tracer la courbe : plot(x, y); affiche le graphique.

Les axes du graphique s'adaptent automatiquement aux valeurs extrêmes des données.

Courbes Paramétrées

La commande plot peut également être utilisée pour tracer des courbes paramétrées. Dans ce cas, les abscisses ne sont pas simplement x, mais une fonction de x. Par exemple, pour tracer un cercle, on peut utiliser :

plot(cos(t), sin(t));t est un vecteur représentant l'angle.

Méthode pour Définir un Ensemble d'Abscisses Raisonnable

Le choix d'un ensemble "raisonnable" d'abscisses est crucial pour obtenir un tracé représentatif sans surcharger la mémoire. Cela implique :

  • Un nombre suffisant de points : Pour que la courbe reflète fidèlement la fonction.
  • Un nombre limité de points : Pour éviter l'alourdissement de la mémoire et du tracé.

Une approche courante consiste à définir le pas (step) en fonction des bornes de l'intervalle et du nombre total de points souhaité : pas = (x_max - x_min) / n.

Superposition de Courbes

Il est possible de superposer plusieurs courbes sur le même graphique.

  • Syntaxe générale : plot(Vx1, Vy1, Vx2, Vy2, ...) permet de tracer plusieurs courbes, même si leurs abscisses ne sont pas identiques.
  • Syntaxe simplifiée (abscisses communes) : Si les abscisses sont les mêmes pour toutes les courbes, on peut utiliser plot(Vx, Vy1, Vy2, ...)Vy1, Vy2, etc., sont les vecteurs d'ordonnées correspondants. Une autre syntaxe consiste à fournir un tableau regroupant les vecteurs d'ordonnées : plot(Vx, [Vy1; Vy2; ...]).

Exemple de superposition de courbes sinusoïdales et cosinusoïdales

Lorsque vous utilisez une nouvelle commande de traçage, MATLAB efface par défaut le graphique précédent. Pour ajouter des tracés à une figure existante sans l'effacer, utilisez la commande hold on. Pour revenir au comportement par défaut, utilisez hold off.

Personnalisation des Courbes

La commande plot permet de spécifier le style de ligne, la couleur et les marqueurs. Par exemple, "r--*" indique une ligne rouge (r), discontinue (--), avec des marqueurs en forme d'astérisque (*) à chaque point de données.

Graphiques à Deux Axes Y

Historiquement, la commande plotyy était utilisée pour créer des graphiques avec deux axes Y indépendants. Cependant, plotyy est maintenant déconseillée au profit de la commande yyaxis.

La commande yyaxis permet de spécifier quel axe Y sera utilisé pour le prochain tracé.

% Exemple d'utilisation de yyaxisx = 0:0.1:10;y1 = sin(x);y2 = exp(-x/2);yyaxis left % Utilise l'axe Y de gauche pour le prochain tracéplot(x, y1)ylabel('Sinus')yyaxis right % Utilise l'axe Y de droite pour le prochain tracéplot(x, y2)ylabel('Exponentielle')

Exemple de graphique avec deux axes Y utilisant yyaxis

Cette approche offre un contrôle plus fin sur la présentation des données lorsque des grandeurs d'ordres de grandeur différents doivent être représentées sur le même graphique.

Concepts Avancés : Solveurs EDO et Décomposition QR

MATLAB intègre également des outils pour la résolution d'équations différentielles ordinaires (EDO). La commande ode45 est un solveur polyvalent et couramment utilisé, basé sur une méthode de Runge-Kutta d'ordre 4 et 5 avec un pas de temps adaptatif. D'autres solveurs comme ode23 et ode15s sont également disponibles pour des besoins spécifiques.

Pour définir un système d'EDO, on crée une fonction (par exemple, monedo.m) qui prend le temps t et l'état du système x en arguments, et retourne la dérivée de x par rapport au temps (dxdt).

function dxdt = monedo(t,x) % Définition du système d'EDO dxdt = [...] ; % Calcul de la dérivée de xend

Pour résoudre le système, on utilise une syntaxe comme :

[t, x] = ode45(@monedo, [t0 tfinal], CI);

@monedo est un pointeur vers la fonction définissant le système, [t0 tfinal] est l'intervalle de temps, et CI sont les conditions initiales.

Dans le contexte de la régression polynomiale et de la résolution de systèmes linéaires, la décomposition QR d'une matrice A peut être utilisée pour résoudre l'équation normale A'*A*p = A'*y de manière plus stable numériquement. Cette décomposition conduit à l'équation simplifiée R*p = Q'*y, où R et Q sont issues de la décomposition QR de A.

Conclusion Partielle

MATLAB offre un environnement riche pour la manipulation de données et la visualisation. La compréhension de la vectorisation, de la structure des fonctions et des commandes de traçage comme plot et yyaxis est essentielle pour exploiter efficacement cet outil. L'exploration des solveurs EDO et des techniques de décomposition matricielle ouvre la voie à des analyses plus poussées.

MATLAB PART 1 SMP6 (tracer les fonctions ) Commande Plot & Subplot

tags: #matlab #plot #vecteur #1x2

Articles populaires:

%d blogueurs aiment cette page :