TP4 : Révisions sur les structures itératives (2/2)

Download Report

Transcript TP4 : Révisions sur les structures itératives (2/2)

ECE2-B
2014-2015
TP4 : Révisions sur les structures itératives (2/2)
Pré-requis : l’objectif des 4 premières séances de TP est de faire le point sur des fonctionnalités
importantes de Scilab qui ont été vues en première année. Je vous invite à consulter les chapitres
de cours correspondants sur ma page : support informatique.
Pour ce TP, on pourra en particulier se reporter au CH 8 (sur les structures itératives) ainsi
qu’au CH 6 (pour les options de tracés) et au CH 5 (pour les options de tracés).
I Dans votre dossier Info_2a, créez le dossier TP_4.
I. Calcul du premier élément d’une suite vérifiant une condition
On considère de nouveau (cf TP 3) la suite (un )n∈N∗ définie par :
∀n ∈ N∗ , un+1 = 2un + n + 1
u1 = 1
On dispose du programme Scilab suivant.
val = input("Entrez une valeur : ");
i = 1;
u = 1;
while u < val
u = 2?u+i+1
i = i+1
end
I Récupérez le fichier suiteCond.sce et enregitrez-le dans le dossier TP_4.
Ouvrez ensuite cet élément dans l’éditeur SciNotes et exécutez-le (touche F5).
I Ajoutez deux lignes au script suiteCond.sce afin qu’il réalise l’affichage de la valeur de
chacune des deux variables u et i. (on utilisera la fonction disp)
I Cette boucle while s’arrête lorsque la condition u < val n’est plus vérifiée. Cette condition
est-elle raisonnable ? Est-on sûr d’éviter que cette boucle s’exécute indéfiniment ?
I Si val prend la valeur 1500, que valent i et u ?
Vérifiez ces valeurs à l’aide de l’expression de un trouvée dans le TP précédent.
1
ECE2-B
2014-2015
I De manière générale, que contient la variable u à la fin de la boucle while ? Et la variable i ?
On considère maintenant le programme Scilab suivant.
val = input("Entrez une valeur : ");
m = input("Entrez une valeur pour m : ");
[u,w] = calculSuite(m);
indices = find(u >= val);
res = min(indices);
disp(res);
I Récupérez le fichier suiteCondBis.sce et enregistrez-les dans le dossier TP_4.
Ouvrez ensuite cet élément dans l’éditeur SciNotes et exécutez-le (touche F5).
I Rappelez l’intérêt de la fonction find (cf CH 5).
I Testez ce script avec val = 1500 et m = 100. Quel est le résultat obtenu ?
Décrire alors précisément ce que réalise ce programme.
On décrira notamment le contenu de la variable indices.
I Comparez les avantages et inconvénients de ces deux méthodes.
•
Espace mémoire utilisé (nombre d’éléments stockés) :
•
Nombre de calculs effectués :
•
Condition d’arrêt :
2
ECE2-B
2014-2015
II. Étude de suites assistée par Scilab
On considère deux suites (un ) et (vn ) définies pour tout entier naturel n ∈ N∗ par :
n 
P1


− ln n
un =



k=1 k

n P1


vn =
− ln(n + 1)



k=1 k

n = input("Entrez une valeur pour n : ");
m = 1:n;
u = cumsum(1 ./ [1:n]) - log([1:n]);
v = cumsum(1 ./ [1:n]) - log([2:n+1]);
scf();
plot(m,u,'rx', m,v,'gx')
Le script en regard des définitions de (un ) et (vn ) va nous permettre d’étudier ces suites.
I Récupérez le fichier plotSuites.sce et enregitrez-le dans le dossier TP_4.
Ouvrez ensuite cet élément dans l’éditeur SciNotes.
I Que calcule l’appel 1 ./ [1:5] ? Et l’appel 1 / [1:5] ?
On pourra se reporter à la rubrique d’aide correspondante (help slash).
I Que calcule l’appel cumsum(1 ./ [1:5]) ? Et l’appel log([1:5]) ?
Conclure de ces tests le contenu des variables u et v du programme.
I Écrire un programme qui demande à l’utilisateur un entier n et qui calcule z, vecteur ligne
de taille n contenant les n premiers éléments de la suite (zn ) de terme général zn =
n 1
P
.
k=1 k
On devra nécessairement utiliser une structure itérative.
3
ECE2-B
2014-2015
I Exécutez le programme plotSuites.sce en choisissant n = 100.
Quelle conjecture pouvez-vous faire sur les suites (un ) et (vn ) ?
I Démontrez la conjecture précédente.
I En déduire qu’il existe un réel c tel que :
n 1
P
= ln n + c + αn
k=1 k
où (αn ) est une suite telle
que lim αn = 0.
n→+∞
I Par lecture graphique, déterminez une valeur approchée de c.
On considère enfin le programme Scilab suivant.
prec = input("Entrez une valeur pour prec : ");
u = 1;
v = 1 - log(2);
z = 1;
i = 1;
while abs(u-v) >= prec
i = i + 1;
z = z + 1/i;
u = z - log(i);
v = z - log(i+1);
end
disp(v)
4
ECE2-B
2014-2015
I Récupérez le fichier approche_c.sce et enregitrez-le dans le dossier TP_4.
Ouvrez ensuite cet élément dans l’éditeur SciNotes.
I Quel est le calcul réalisé par ce script ?
Que contient la variable i à la fin du programme ?
Quelle est l’utilité de la variable z ?
I Modifiez la dernière ligne du programme afin de réaliser l’affichage d’une phrase annonçant
la valeur des variables v et i.
I Donnez une valeur approché de c à 10−4 près.
5