Vous êtes sur la page 1sur 8

Nom : Date :

Prénom :

Faculté des sciences et ingénierie (Toulouse III) Année scolaire


Département de mathématiques – L3 MMESI 2011-2012
Analyse numérique I
TP no 2 – Initiation à l’algorithmique

1 Introduction aux scripts matlab


Pour comprendre l’intérêt de l’utilisation des scripts, effectuer les calculs suivants
en ligne de commande : !
1 2
– créer la matrice A = ;
i 4
– créer B = AT ;
– créer S = A + B ;
– tester si la matrice S est symétrique T
! (S − S = 0) ;
Refaire ces calculs pour Ae= 1 2 .
3i 4
Cela devient vite pénible de devoir compiler successivement tous les calculs en
ligne de commande, même lorsqu’une petite modification est à faire ; de plus, ces cal-
culs sont liés les uns aux autres : il serait préférable de pouvoir écrire toutes ces lignes
puis, ensuite, de tout compiler d’un coup. Les scripts vont répondre à ces besoins.
Suivre la procédure suivante afin de créer votre premier script matlab.
1. Créer un dossier L3_analyseNumerique dans lequel seront placés les fichiers re-
latifs aux TP de ce cours. (Cliquer sur l’icône “Open file”.)
2. Créer un sous-dossier TP02.
3. Dans ce sous-dossier, créer un fichier Intro.m (Cliquer sur l’icône “New M-file”.)
et y reproduire les calculs ci-dessus.

4. Exécuter le fichier Intro.m ; indiquer ce qu’il faut dire à matlab.

5. Que suffit-il de faire pour ré-exécuter les calculs mais, cette fois-ci, sans afficher
le résultat de la création de B ?

1
2 Structures itératives et conditionnelles (for, while, if )
2.1 Structures itératives (ou répétitives)
Utilité : faire se répéter une (ou plusieurs) instruction(s).

2.1.1 Boucle for


Elle permet de faire se répéter un certain nombre de fois une (ou plusieurs) instruc-
tion(s) ; le “nombre de fois” est explicitement connu de l’utilisateur.
Créer un script exemples_for.m pour y tester les exemples suivants.
Exemple 1.
Pour i =0 à i =5 , faire f o r i =0:5
afficher i i
Fin end

Exemple 2.
Pour i =0 à i =10 , faire
afficher 2* i
Fin

Exemple 3.
Pour j =0 à j =10 par pas de 2 , faire f o r j =0:2:10
afficher j j
Fin end

Exemple 4. Écrire l’algorithme correspondant au code matlab suivant.

f o r j =5: −1:0
j
end

Qu’est-ce qui est renvoyé par matlab ?

   
π 2π
Exercice 1. Écrire un script calculant les valeurs de cos(0), cos 3 , cos 3 , . . ., cos (2π).

2
2.1.2 Boucle while
Elle permet de faire se répéter un certain nombre de fois une (ou plusieurs) instruc-
tion(s) ; le “nombre de fois” n’est pas explicitement connu de l’utilisateur : il dépend
d’une condition. Autrement dit : tant que la condition est vérifiée, on répète les instruc-
tions ; dès qu’elle ne l’est plus, on s’arrête.
Créer un script exemples_while.m pour y tester les exemples suivants.
Exemple 5.
i =0 i =0
Tant que i <5 , faire while ( i <5)
i = i +1 i = i +1
Fin end

Exemple 6.
i =5
Tant que i >0 , faire
i =i -1
Fin

Exemple 7. Écrire l’algorithme correspondant au code matlab suivant.


i =5;
while ( i <=0)
i = i −1
end

Qu’est-ce qui est renvoyé par matlab ? Pourquoi ?

Exemple 8. Expliquer le résultat obtenu sur cet exemple, ainsi que la syntaxe « == ».
i =5 i =5
Tant que i est égal à 5 , faire while ( i ==5)
i =i -1 i = i −1
Fin end

3
Exercice 2. Que se passerait-il si l’on demandait (ne pas tester !) :
i =5
Tant que i >0 , faire
i = i +1
Fin

Exercice 3.
1. Partir de x = 100 et remplacer x par sa racine carrée jusqu’à obtenir un nombre
strictement plus petit que 0.5.

2. Combien d’itérations ont été nécessaires pour atteindre ce résultat ? (Faire calcu-
ler à matlab ce nombre d’itérations.)

2.2 Structure conditionnelle : tests if


Utilité : faire ou ne pas faire d’instruction(s). Autrement dit : dans tel cas faire ceci,
sinon faire cela.
Créer un script exemples_if.m pour y tester les exemples suivants.
Exemple 9. Tester le script suivant, pour i = 2, i = 5 et i = 10.
Si i =10 , alors i f ( i ==10)
calculer 2 × π 2* p i
écrire ‘‘ car i =10 ’ ’ disp ( ’ car  i =10 ’ )
Fin end
Exemple 10. Tester le script suivant, pour différentes valeurs de x.

Si x modulo 2 vaut 0 , alors


écrire ‘‘x est pair ’ ’
Fin

4
Exemple 11. Tester le script suivant, pour différentes valeurs de x.

Si x modulo 2 vaut 0 , alors i f mod( x ,2)==0


écrire ‘‘x est pair ’ ’ disp ( ’ x  e s t  p a i r ’ )
sinon else
écrire ‘‘x est impair ’ ’ disp ( ’ x  e s t  i m p a i r ’ )
Fin end
Que se passe-t-il si x n’est pas entier ? Pourquoi ?

Exemple 12. Tester le script suivant, pour différentes valeurs de i.

Si i >0 , alors i f i >0


écrire ‘‘i positif ’ ’ disp ( ’ i  p o s i t i f ’ )
sinon , si i <0 alors e l s e i f i <0
écrire ‘‘i négatif ’ ’ disp ( ’ i né g a t i f ’ )
sinon else
écrire ‘‘i nul ’ ’ disp ( ’ i  nul ’ )
Fin
end

Exercice 4. Étant donné un réel x, calculer |x| (sans utiliser la commande abs).

Exercice 5. Étant donné un entier n, renvoyer “calcul trop long” si n ≥ 10 et sinon :


renvoyer nn! si n est pair et n!n si n est impair.

5
3 Application à des algorithmes connus
Exercice 6 (Systèmes triangulaires).
1. Programmer les deux algorithmes de résolution d’un système triangulaire. Rap-
pel : il s’agit de résoudre Ax = b, où A ∈ GLn (C) est triangulaire supérieure ou
triangulaire inférieure et b ∈ Cn .

Algorithme de descente Algorithme de remontée


Définition de A Définition de A
n = taille de A n = taille de A
x1 =b1 /a11 xn = bn /ann
Pour i allant de 2 à n Pour i allant de n -1 à 1
xi =bi xi = bi
Pour k =1 à i -1 Pour k = i +1 à n
xi =xi − aik xk xi = xi − aik xk
Fin Fin
xi =xi /aii xi = xi /aii
Fin Fin

2. Le(s)quel(s) de ces algorithmes permet(tent) de résoudre le système linéaire sui-


vant, vu en cours ? 


 3x1 + 2x2 + x3 = 1
 7 x2 + 5 x3 = 5




 3
 3 3 (1)


 24 3
x =


7 3 7

6
3. En interprétant le système (1) sous forme matricielle Ax = b, expliciter pas à pas
(“à la main”) toutes les étapes effectuées par l’algorithme pour le résoudre. Cal-
culer la solution.

4. Demander à matlab de résoudre ce système, avec l’algorithme choisi à la ques-


tion 2 : quelle solution trouve-t-il ?

5. Que retourne la commande A\b ? En déduire à quoi sert la commande \ dans la


syntaxe M\v où M est une matrice et v un vecteur.

A\b

7
6. Compléter le premier algorithme de la question 1 pour rajouter le test suivant : si
un des aii est nul, alors afficher “matrice non inversible” ; sinon, faire l’algorithme
de descente.

Exercice 7 (Nombres premiers). Donner la liste des nombres premiers entre 1 et N ;


prendre pour exemple d’application N = 50.
Méthode pour lister : commencer par créer un vecteur P vide ; ajouter ensuite les
éléments désirés au vecteur P . On pourra s’inspirer des commandes suivantes :
P=[]
P =[ P , 2 ]

isprime (37)

 N’oubliez pas de rendre le TP,


avec vos nom et prénom
~
8