Sunteți pe pagina 1din 8

Date :

Nom :
Prnom :

Facult des sciences et ingnierie (Toulouse III)


Dpartement de mathmatiques L3 MMESI
Analyse numrique I

Anne scolaire
2011-2012

TP no 2 Initiation lalgorithmique
1

Introduction aux scripts matlab

Pour comprendre lintrt de lutilisation des scripts, effectuer les calculs suivants
!
en ligne de commande :
1 2
crer la matrice A =
;
i 4
crer B = AT ;
crer S = A + B ;
T
tester si la matrice S est symtrique
! (S S = 0) ;
e= 1 2 .
Refaire ces calculs pour A
3i 4
Cela devient vite pnible de devoir compiler successivement tous les calculs en
ligne de commande, mme lorsquune petite modification est faire ; de plus, ces calculs sont lis les uns aux autres : il serait prfrable de pouvoir crire toutes ces lignes
puis, ensuite, de tout compiler dun coup. Les scripts vont rpondre ces besoins.
Suivre la procdure suivante afin de crer votre premier script matlab.
1. Crer un dossier L3_analyseNumerique dans lequel seront placs les fichiers relatifs aux TP de ce cours. (Cliquer sur licne Open file.)
2. Crer un sous-dossier TP02.
3. Dans ce sous-dossier, crer un fichier Intro.m (Cliquer sur licne New M-file.)
et y reproduire les calculs ci-dessus.

4. Excuter le fichier Intro.m ; indiquer ce quil faut dire matlab.

5. Que suffit-il de faire pour r-excuter les calculs mais, cette fois-ci, sans afficher
le rsultat de la cration de B ?

Structures itratives et conditionnelles (for, while, if )

2.1

Structures itratives (ou rptitives)


Utilit : faire se rpter une (ou plusieurs) instruction(s).

2.1.1

Boucle for

Elle permet de faire se rpter un certain nombre de fois une (ou plusieurs) instruction(s) ; le nombre de fois est explicitement connu de lutilisateur.
Crer un script exemples_for.m pour y tester les exemples suivants.
Exemple 1.
f o r i =0:5
i
end

Pour i =0 i =5 , faire
afficher i
Fin

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

Exemple 3.
Pour j =0 j =10 par pas de 2 , faire
afficher j
Fin

f o r j =0:2:10
j
end

Exemple 4. crire lalgorithme correspondant au code matlab suivant.


f o r j =5: 1:0
j
end
Quest-ce qui est renvoy par matlab ?

Exercice 1. crire un script calculant les valeurs de cos(0), cos

 
 
2

,
cos
3
3 , . . ., cos (2).

2.1.2

Boucle while

Elle permet de faire se rpter un certain nombre de fois une (ou plusieurs) instruction(s) ; le nombre de fois nest pas explicitement connu de lutilisateur : il dpend
dune condition. Autrement dit : tant que la condition est vrifie, on rpte les instructions ; ds quelle ne lest plus, on sarrte.
Crer un script exemples_while.m pour y tester les exemples suivants.
Exemple 5.
i =0
while ( i <5)
i = i +1
end

i =0
Tant que i <5 , faire
i = i +1
Fin

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

Exemple 7. crire lalgorithme correspondant au code matlab suivant.


i =5;
while ( i <=0)
i = i 1
end
Quest-ce qui est renvoy par matlab ? Pourquoi ?

Exemple 8. Expliquer le rsultat obtenu sur cet exemple, ainsi que la syntaxe == .
i =5
while ( i ==5)
i = i 1
end

i =5
Tant que i est gal 5 , faire
i =i -1
Fin

Exercice 2. Que se passerait-il si lon 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 carre jusqu obtenir un nombre
strictement plus petit que 0.5.

2. Combien ditrations ont t ncessaires pour atteindre ce rsultat ? (Faire calculer matlab ce nombre ditrations.)

2.2

Structure conditionnelle : tests if

Utilit : faire ou ne pas faire dinstruction(s). Autrement dit : dans tel cas faire ceci,
sinon faire cela.
Crer 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.
i f ( i ==10)
2* p i
disp ( car  i =10 )
end

Si i =10 , alors
calculer 2
crire car i =10
Fin

Exemple 10. Tester le script suivant, pour diffrentes valeurs de x.


Si x modulo 2 vaut 0 , alors
crire x est pair
Fin

Exemple 11. Tester le script suivant, pour diffrentes valeurs de x.


i f mod( x ,2)==0
disp ( x  e s t  p a i r )
else
disp ( x  e s t  i m p a i r )
end

Si x modulo 2 vaut 0 , alors


crire x est pair
sinon
crire x est impair
Fin

Que se passe-t-il si x nest pas entier ? Pourquoi ?

Exemple 12. Tester le script suivant, pour diffrentes valeurs de i.


i f i >0
disp ( i  p o s i t i f )
e l s e i f i <0
disp ( i n g a t i f )
else
disp ( i  nul )
end

Si i >0 , alors
crire i positif
sinon , si i <0 alors
crire i ngatif
sinon
crire i nul
Fin

Exercice 4. tant donn un rel 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.

Application des algorithmes connus

Exercice 6 (Systmes triangulaires).


1. Programmer les deux algorithmes de rsolution dun systme triangulaire. Rappel : il sagit de rsoudre Ax = b, o A GLn (C) est triangulaire suprieure ou
triangulaire infrieure et b Cn .
Algorithme de descente

Algorithme de remonte

Dfinition de A
n = taille de A
x1 =b1 /a11
Pour i allant de 2 n
xi =bi
Pour k =1 i -1
xi =xi aik xk
Fin
xi =xi /aii
Fin

Dfinition de A
n = taille de A
xn = bn /ann
Pour i allant de n -1 1
xi = bi
Pour k = i +1 n
xi = xi aik xk
Fin
xi = xi /aii
Fin

2. Le(s)quel(s) de ces algorithmes permet(tent) de rsoudre le systme linaire suivant, vu en cours ?

3x1 + 2x2 + x3 = 1

7 x2 + 5 x3 = 5
(1)

3
3
3

24
3

x =
7 3 7

3. En interprtant le systme (1) sous forme matricielle Ax = b, expliciter pas pas


( la main) toutes les tapes effectues par lalgorithme pour le rsoudre. Calculer la solution.

4. Demander matlab de rsoudre ce systme, avec lalgorithme choisi la question 2 : quelle solution trouve-t-il ?

5. Que retourne la commande A\b ? En dduire quoi sert la commande \ dans la


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

A\b
7

6. Complter 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 lalgorithme
de descente.

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


prendre pour exemple dapplication N = 50.
Mthode pour lister : commencer par crer un vecteur P vide ; ajouter ensuite les
lments dsirs au vecteur P . On pourra sinspirer des commandes suivantes :
P=[]
P =[ P , 2 ]
isprime (37)

Noubliez pas de rendre le TP,


avec vos nom et prnom
8

S-ar putea să vă placă și