TP Matlab n°2: Boucle FOR-END et Fonctions

Ce TP Matlab permet d'apprendre à utiliser la boucle for-end pour répéter un ensemble d'instructions un nombre donné de fois, ainsi que la création et l'utilisation de fonctions Matlab. Il est nécessaire d'avoir Matlab installé et des connaissances de base en programmation pour suivre ce TP. Objectifs Comprendre et utiliser la boucle for-end avec un nombre connu d'itérations.

D'après le document TP Matlab n°2: Boucle FOR-END et Fonctions

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Document source

TP Matlab n°2: Boucle FOR-END et Fonctions

Programming in MATLAB · PDF · 3 pages

Afficher l'aperçu du document

Consulter le document original →

Ce TP Matlab permet d'apprendre à utiliser la boucle for-end pour répéter un ensemble d'instructions un nombre donné de fois, ainsi que la création et l'utilisation de fonctions Matlab. Il est nécessaire d'avoir Matlab installé et des connaissances de base en programmation pour suivre ce TP.

Objectifs

  • Comprendre et utiliser la boucle for-end avec un nombre connu d'itérations.
  • Créer des fonctions Matlab simples avec ou sans paramètres d'entrée et de sortie.
  • Appliquer les fonctions pour calculer des suites, résoudre des équations et tester des propriétés numériques.
  • Comprendre la portée locale des variables dans les fonctions Matlab.

Prérequis et installation

  • Matlab installé (version non spécifiée, mais avec support des fonctions et boucles for-end).
  • Connaissances de base en programmation et utilisation de Matlab.
  • Notions élémentaires de suites numériques et d'équations algébriques.

Utilisation de la boucle for-end

La boucle for-end permet de répéter un bloc d'instructions un nombre déterminé de fois. La syntaxe est :

for compteur = valeur_départ : valeur_finale
  Instruction1
  Instruction2
end

La variable compteur commence à valeur_départ et s'incrémente de 1 à chaque itération jusqu'à valeur_finale.

Exemples à taper dans Matlab :

>> a = 3; for i = 0 : 6, a = a + i; a, end

La valeur finale ne sera pas dépassée :

>> for i = 1 : 4.5, i, end

Il est possible d'imposer un pas différent de 1 :

for compteur = valeur_départ : pas : valeur_finale
  ...
end

Exemple avec la liste des nombres pairs :

>> for i = 0 : 2 : 20, i, end

Le pas peut aussi être négatif :

>> for i = 3 : -1 : -2, i, end

Exercices à réaliser :

  • Calculer la somme des entiers de 1 à 8 avec une boucle for-end.
  • Calculer la somme des carrés des entiers de 1 à 8.
  • Calculer 8! (factorielle de 8).
  • Calculer les termes u8 puis u20 de la suite définie par u0 = 1 et un+1 = 2×un – 3.

Conclusion : la boucle for-end est adaptée lorsque le nombre d’itérations est connu à l’avance.

Création et utilisation des fonctions Matlab

Pour exécuter plusieurs opérations successives, il est préférable de créer une fonction Matlab. Une fonction est un fichier nommé nom_de_la_fonction.m dont la première ligne est :

function nom_de_la_fonction

Pour créer une fonction, dans Matlab, aller dans File > New > M-File.

Exemple simple de fonction calculant une suite :

function suite
u = 1;
for i = 1 : 20
    u = u*2 - 3;
end

Il est important de conserver l'indentation proposée par Matlab pour faciliter la lecture. La fonction Smart Indent (Ctrl+I) peut être utilisée pour cela.

Pour utiliser la fonction, taper son nom sans extension dans Matlab :

>> suite

Il est possible de définir des fonctions avec paramètres d'entrée et variables de sortie :

function [variable_sortie_1, variable_sortie_2, …] = nom_de_la_fonction(variable_entrée_1, …)

Exemple :

function [y] = suite2(n)
y = 1;
for i = 1 : n
    y = y*2 - 3;
end

Ici, n est le paramètre d'entrée indiquant le rang du terme à calculer, et y la valeur de sortie.

Exemple d'appel :

>> [y] = suite2(4)

La fonction renvoie le 4ème terme de la suite.

Attention : si on tape [y] = suite2 sans paramètre, Matlab affiche une erreur car la valeur d'entrée est obligatoire.

Exercices sur les fonctions

  • Modifier suite2.m pour que l'utilisateur saisisse u0 en plus de n (fonction suite3(u0,n)).
  • Créer une fonction calculant le nème terme de la suite définie par u0 = 2 et un+1 = un^2 – 1, avec n donné en paramètre.
  • Écrire une fonction calculant le nième et (n-1)ème termes de la suite de Fibonacci définie par un+2 = un+1 + un, avec paramètres d'entrée n, u0, u1 (fonction fibo(u0,u1,n)).
  • Écrire une fonction [rep] = degre1(a,b) qui résout l'équation ax + b = 0 dans ℝ, avec a et b réels. Tester avec (2,3), (2,0), (0,2), (0,0).
  • Écrire une fonction [rep] = degre2(a,b,c) qui résout ax² + bx + c = 0 dans ℝ. Si a = 0, utiliser degre1. Si deux racines existent, rep est un vecteur [racine1, racine2]. Tester avec (2,3,1), (3,2,1), (1,2,1), (0,2,1), (0,0,0).
  • Écrire une fonction [rep] = premier(x) qui teste si un entier x est premier (entier différent de 1 et sans diviseur autre que 1 et lui-même).
  • Écrire une fonction [nb] = list_premier(x) qui affiche les nombres premiers inférieurs ou égaux à x et renvoie le nombre nb de ces nombres. Cette fonction doit utiliser la fonction premier.

Compléments sur les variables dans les fonctions

Les variables d'une fonction sont locales : lors de l'appel, Matlab crée un espace mémoire indépendant où les variables du programme principal ne sont pas accessibles.

Si une variable du programme principal doit être utilisée dans une fonction, elle doit être passée en paramètre d'entrée.

Exemple :

>> rang = 4;
>> [y] = suite2(rang)

La fonction stocke la valeur de rang dans sa variable locale n. Le nom des variables d'entrée et de sortie peut différer entre l'appel et la fonction sans poser de problème.

Il est impossible de lancer une fonction sans fournir les paramètres d'entrée requis, même si ces variables existent dans l'espace de travail Matlab.

Résultats attendus

  • La boucle for-end affiche les valeurs du compteur selon les paramètres donnés, sans dépasser la valeur finale.
  • Les calculs de sommes, factorielle et termes de suites doivent correspondre aux formules données.
  • Les fonctions doivent renvoyer les valeurs correctes selon les paramètres d'entrée, notamment pour les suites, équations et tests de primalité.
  • Les fonctions doivent gérer correctement les cas particuliers (ex : a = 0 dans degre2).
  • Les fonctions doivent afficher ou retourner les résultats attendus sans erreur.

Pièges courants

  • Oublier de fournir les paramètres d'entrée lors de l'appel d'une fonction, ce qui provoque une erreur.
  • Confondre la portée des variables : ne pas comprendre que les variables dans une fonction sont locales et ne partagent pas les valeurs du programme principal sans passage explicite.
  • Ne pas respecter la syntaxe exacte de la boucle for-end, notamment le format du compteur avec pas (valeur_départ : pas : valeur_finale).
  • Nommer une fonction avec des caractères spéciaux, espaces ou accents, ce qui est interdit.
  • Ne pas conserver l'indentation, rendant le code difficile à lire et à déboguer.
  • Dans les fonctions de résolution d'équations, ne pas gérer les cas où le discriminant est négatif ou où les coefficients sont nuls.
  • Ne pas tester les fonctions avec les jeux de données proposés, ce qui empêche de vérifier leur bon fonctionnement.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions