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
Programming in MATLAB · PDF · 3 pages
Afficher l'aperçu du document
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.mpour que l'utilisateur saisisseu0en plus den(fonctionsuite3(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, utiliserdegre1. Si deux racines existent,repest 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 nombrenbde ces nombres. Cette fonction doit utiliser la fonctionpremier.
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.
Commentaires
Aucun commentaire pour le moment. Posez la première question.