TP5 : Structure itérative (boucle for)

Transcription

TP5 : Structure itérative (boucle for)
ECE 1
TP5 : Structure itérative (boucle for)
I
Syntaxe
La boucle for permet de répéter une instruction un certain nombre de fois.
for k=p:n
instruction;
end
signifie « effectuer l’instruction » pour k = p, puis pour k = p + 1, . . . puis pour k = n.
Exercice 1.
1. A quoi sert la série d’instructions suivante ? Vérifier en copiant le programme et en l’exécutant.
for i=1:10
disp(i);
end
2. Que ce passe t’il si la première ligne est for i=10:2:20 ?
3. Et si on remplace disp(i) par disp(iˆ 2) ? et par disp(3) ?
Remarque. Par défaut l’incrémentation est de 1 à chaque passage dans la boucle. Mais on peut changer ce pas.
Pour cela on utilise la syntaxe suivante :
for k=p:r:n
instruction;
end
L’instruction sera exécutée pour k = p puis pour k = p + r puis pour k = p + 2r et ainsi de suite jusqu’à la
dernière valeur de cette forme inférieure (ou égale) à n.
Exercice 2. Écrire un programme qui demande à l’utilisateur une valeur de n et qui affiche la table de n (c’est-à-dire
les dix premiers multiples de n).
Lycée Jean Calvin, Noyon
2016/2017
Structure itérative (boucle for)
1/5
Exercice 3. Écrire un programme qui demande un entier n à l’utilisateur et affiche les n premiers entiers impairs
(si l’utilisateur entre 3, le programme affiche 1,3 et 5).
II
Suites récurrentes
Exercice 4.
1. Appliquer à la main (sur feuille) le programme suivant avant de l’exécuter :
u=0
for i=0:5
u=2*u+3
disp(u)
end
2. De quelle suite est-on en train de calculer les premiers termes ?
3. Modifier le programme afin qu’il affiche uniquement u20 (et seulement ce terme).
La boucle for est bien adaptée pour calculer le nième terme d’une suite définie par son premier terme et une relation
de récurrence (ou par ses 2 premiers termes et une relation de récurrence d’ordre 2, ou plus...).
Méthode
Pour calculer le terme de rang n de la suite (un )n≥0 définie par u0 = α et pour tout entier n par
un+1 = f (un ), on procède de la manière suivante :
1. On initialise une variable Scilab que l’on appelle par exemple u en lui affectant la valeur α.
2. On crée une boucle for : pour k allant de 1 à n, on remplace la valeur de u par la valeur du terme
suivant de la suite en utilisant la relation de récurrence.
Lycée Jean Calvin, Noyon
2016/2017
Structure itérative (boucle for)
2/5
Exercice 5. Dans chaque cas, écrire un programme qui demande un rang n à l’utilisateur et affiche un .
1. u0 = 4 et pour tout n ∈ N, un+1 = −4un + 5 (vérifier à l’aide du cours de maths en calculant u100 ).
2. v0 = 0.1 et pour tout n ∈ N, vn+1 = 1 − e−2vn .
3. w1 = 1 et pour tout n ∈ N∗ , wn+1 = 2nwn + 3.
Remarque. D’autres possibilités existent pour le calcul des termes d’une suite, on peut par exemple stocker tous
les termes d’une suite dans une matrice ligne U puis tracer la représentation graphique associée à ces termes
grâce à la commande plot(U,"+").
Exercice 6. [inspiré d’Ecricome 2014]
Soit F définie pour tout réel par F (x) = 1 − e−x .
On considère la suite (un )n≥1 définie par u1 = 1 et pour tout n ≥ 1 par un+1 = F (un ). Compléter le programme
Scilab suivant qui permet de représenter les cent premiers termes de la suite (un )n≥1 :
U=zeros(1,100);
U(1)=1
for n=1:99
U(n+1)= _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
end
plot(U,"+")
Lycée Jean Calvin, Noyon
2016/2017
Structure itérative (boucle for)
3/5
Exécuter ce programme. Que peut-on conjecturer sur cette suite ?
Exercice 7. Soit (un ) la suite définie par u1 = 0, u2 = −9 et la relation de récurrence : ∀n ∈ N, un+2 = un+1 −4un .
Écrire un programme qui demande un rang n ≥ 2 à l’utilisateur et qui affiche la valeur de un (le mieux étant de se
baser sur la méthode de l’exercice précédent).
III
Calcul de sommes
La boucle for est bien adaptée pour calculer des sommes.
Méthode
Pour calculer la somme
n
X
ak on procède de la manière suivante :
k=0
1. On définie une variable Scilab Somme en lui affectant la valeur 0 (au début la somme est vide).
2. On crée une boucle for : pour k de 0 à n, à chaque étape on ajoute à la variable Somme le terme ak
(éventuellement après l’avoir calculé).
En procédant ainsi avant la boucle la variable Somme contient le réel 0, après le premier passage dans la boucle,
elle contient 0 + a0 , après le second : 0 + a0 + a1 etc. jusqu’au passage pour k = n où la variable contient
n
X
a0 + a1 + · · · + an =
ak .
k=0
Remarque. Le principe serait le même pour des produits : on initialise une variable Produit égale à 1 puis à
chaque étape on multiplie la variable Produit par un terme.
Exemple.
Le calcul de S =
10
X
(2k + 5) peut être programmé ainsi :
k=0
Somme = 0;
for k=0:10
Somme = Somme + (2*k+5);
end
disp(Somme, ’la somme est égale à ’);
Exercice 8. Pour tout n ≥ 1, on pose :
Sn =
n
X
k=0
1;
Tn =
n
X
k;
Un =
k=0
n
X
k=0
k2 ;
Vn =
n
X
k3
k=0
Écrire un programme qui demande à l’utilisateur de choisir un entier n puis qui effectue le calcul des quatre sommes
ci-dessus et affiche le résultat. Vérifier à l’aide du cours.
Lycée Jean Calvin, Noyon
2016/2017
Structure itérative (boucle for)
4/5
Exercice 9. Soit (un )n≥0 la suite définie par u0 = 10 et pour tout n ≥ 0, un+1 = 5 − ln(un ).
1. Écrire un programme qui demande un rang n à l’utilisateur et qui affiche la valeur de un .
2. Modifier le programme précédent pour qu’il affiche le vecteur ligne contenant les valeurs de la suite du rang
0 au rang n. Représenter graphiquement les 10 premières valeurs de la suite.
3. Modifier le programme pour qu’il affiche en plus la somme suivante :
n
X
uk
k=0
Lycée Jean Calvin, Noyon
2016/2017
Structure itérative (boucle for)
5/5

Documents pareils