Épreuve pratique 2009, sujet 11

dimanche 8 novembre 2009
par  Alain BUSSER

Calcul des 40 premiers termes

La suite est définie par récurrence, donc on commence par initialiser la variable u (terme courant de la suite) à zéro, puis on écrit une boucle dont l’indice va de 1 à 39, dans laquelle on remplace u par l’inverse de 2-u. Ensuite on affiche les valeurs de l’indice et de u :

/*Programme tp 11a
*/
var u=0;//terme général de la suite
for(indice=1;indice<40;indice=indice+1){
	u=1/(2-u);//relation de recurrence
	Println("|"+indice+"|"+u+"|");
}

Un problème se pose alors : JavaScript travaille en binaire et arrondit mal les nombres décimaux. On doit alors modifier le script précédent pour afficher u à 6 décimales :

Voir le script amélioré

/*Programme tp 11a
*/
var u=0;//terme général de la suite
for(indice=1;indice<40;indice=indice+1){
	u=1/(2-u);//relation de recurrence
	Println("|"+indice+"|"+Math.round(1000000*u)/1000000+"|");
}

L’exécution de ce script sous CaRMetal produit le tableau suivant :

n u
0 0
1 0.5
2 0.666667
3 0.75
4 0.8
5 0.833333
6 0.857143
7 0.875
8 0.888889
9 0.9
10 0.909091
11 0.916667
12 0.923077
13 0.928571
14 0.933333
15 0.9375
16 0.941176
17 0.944444
18 0.947368
19 0.95
20 0.952381
21 0.954545
22 0.956522
23 0.958333
24 0.96
25 0.961538
26 0.962963
27 0.964286
28 0.965517
29 0.966667
30 0.967742
31 0.96875
32 0.969697
33 0.970588
34 0.971429
35 0.972222
36 0.972973
37 0.973684
38 0.974359
39 0.975

Représentation graphique de la suite

Maintenant qu’on sait calculer les termes de la suite, il est aisé de les représenter puisque CaRMetal est un logiciel de géométrie :

/*Programme tp 11b
*/
var u=0;//terme général de la suite
for(indice=1;indice<40;indice=indice+1){
	u=1/(2-u);//relation de recurrence
	p=Point(indice,u);
	SetPointType(p,"cross");
}

Ce script produit alors la figure suivante (on a mis les points en forme de « + » pour la lisibilité de la figure) :


Conjecture

Pour la question 2, il suffit de rajouter une colonne au tableau précédent, donc un nombre dans l’affichage. Pour éviter les problèmes d’arrondi de JavaScript, on a intérêt à mettre des arrondis au nombre de décimales pertinent comme on l’a fait ci-dessus [1] :

/*Programme tp 11c
*/
var u=0;//terme général de la suite
for(indice=1;indice<40;indice=indice+1){
	u=1/(2-u);//relation de recurrence
	Println("|"+indice+"|"+u+"|"+1/(u-1)+"|");
}

Ce qui donne le tableau suivant, propre à l’émission de conjectures :

n u 1/(1-u)
0 0 1
1 0.5 -2
2 0.667 -3
3 0.75 -4
4 0.8 -5
5 0.833 -6
6 0.857 -7
7 0.875 -8
8 0.889 -9
9 0.9 -10
10 0.909 -11
11 0.917 -12
12 0.923 -13
13 0.929 -14
14 0.933 -15
15 0.938 -16
16 0.941 -17
17 0.944 -18
18 0.947 -19
19 0.95 -20
20 0.952 -21
21 0.955 -22
22 0.957 -23
23 0.958 -24
24 0.96 -25
25 0.962 -26
26 0.963 -27
27 0.964 -28
28 0.966 -29
29 0.967 -30
30 0.968 -31
31 0.969 -32
32 0.97 -33
33 0.971 -34
34 0.971 -35
35 0.972 -36
36 0.973 -37
37 0.974 -38
38 0.974 -39
39 0.975 -40

[1Le logiciel xcas possède un tableur qui fait du calcul formel, qu’on peut d’ailleurs installer sous OpenOffice avec cet outil. Cependant on peut s’interroger sur la pertinence du tableur dans ce genre d’activité, l’usage d’un langage de programmation apportant une touche de dynamisme, visible par exemple en ajoutant une instruction « Pause(500) » dans le script de la figure ci-dessus.


Commentaires