Correction Devoir 2
Exercice 1
Implémentez la fonction suivante sur avec le nom TESTTP :
𝒇(𝒙)=2-x si x ≤2
𝒇(𝒙) =
𝒇(𝒙)=x-2 sinon
Tester la fonction pour x= 0 et x=3
Proposer une deuxième méthode pour implémenter la fonction 𝑓
Correction :
1. Aller dans un nouveau fichier fonction (function file) et taper :
function [f]= TESTTP(x)
if (x<=2) f=2-x ;
else f=x-2 ;
end
end
2. Sauvegarder le fichier avec le nom : TESTTP.m (filesave as TESTTP.m)
3. Insérer la valeur de x dans la ligne de commande :
>> x=0 ;
4. Appeler le fichier TESTTP.m via la ligne de commande (copier l’entête sauf
function) :
>> [f]= TESTTP(x)
Matlab affiche f=2
5. Insérer une nouvelle valeur de x dans la ligne de commande :
>> x=3 ;
6. Appeler deuxième fois le fichier TESTTP.m :
>> [f]= TESTTP(x)
GC/TP/HYD [Link] LALLALI
Matlab affiche f=1
Deuxième méthode pour implémenter la fonction f est : |𝒙 − 𝟐|
>> x=0 ;
>> f=abs(x-2)
Matlab affiche f=2
>> x=3 ;
>> f= abs(x-2)
Matlab affiche f=1
Exercice 2
Ecrire une fonction somdivtpa qui calcule la somme des diviseurs d’un
entier N strictement positif
Tester la fonction somdivtpa pour N= 10, ensuite N=4
Exemple : Pour N=6
s=1+2+3+6= 12, car les diviseurs de 6 sont le 1, 2,3 et 6
Correction :
1. Aller dans un nouveau fichier fonction (function file) et taper :
function [S]=Somdivtpa (N)
S=0 ;
for i =1:N
if (mod(N,i)==0) S=S+i ;
end
end
end
GC/TP/HYD [Link] LALLALI
S=0 : initialiser la somme à 0
for i=1 :N : la boucle pour allant de 1 jusqu’à N
if : c’est l’instruction conditionnelle si
mod(N,2): le reste de la division de N par 2
== : pour tester l’égalité
S=S+i : ajouter le diviseur i dans la somme S
end : la fin de if
end : la fin de la boucle for
2. Sauvegarder le fichier avec le nom : somdivtpa.m (filesave as somdivtpa.m)
3. Insérer la valeur de N dans la ligne de commande :
>> N=10 ;
4. Appeler le fichier somdivtpa.m via la ligne de commande (copier l’entête sauf
function) :
>> [S]= Somdivtpa (N)
Matlab affiche S=18
5. Insérer une nouvelle valeur de N dans la ligne de commande :
>> N=4 ;
6. Appeler deuxième fois le fichier somdivtpa.m :
>> [S]= Somdivtpa (N)
Matlab affiche S=7
GC/TP/HYD [Link] LALLALI