Un travail d’algorithmique et d’histoire des mathématiques a été donné en début d’année (3 septembre 2010). Le point de départ était un TP de l’IREM de Strasbourg, Première S, collection ISTRA :
Le sujet du travail à faire
Calculs, calculs
A/ Calcul de E
L’expression à calculer : 9*10864^4-18817^4+2*18817^2
Calcul avec bc
Calcul avec un javascript dans CarMetal
Calcul avec gp
Calcul avec MagicNumber
Calcul avec Maxima
Calcul avec Open Office Calc
Calcul avec Processing
Calcul avec Python (contribution Alain Busser)
B/ Vocabulaire mathématique
Voir la séance d’exemples en classe.
C/ Calcul exact de E
On pourra voir les calculs faits par les élèves dans les deux exemples fournis dans la conclusion.
D/ Autour des entiers naturels tels que $y^2-3*x^2=1$ $R$
Remarquons avec les élèves que si $(x,y)$ est un couple de réels vérifiant (R) avec $y$ positif, alors $(x,y)$ se trouve sur cette courbe, et les couples d’entiers $(x,y)$ s’éloignent de plus en plus. Cela peut se voir dans CarMetal avec un simple roulement de molette pour zoomer.
E/ Point d’histoire
[1]
Equation Diophantienne
Qui est Diophante ?
Equation de Pell-Fermat
Théorème de Fermat, son histoire
Qui est Fermat ?
Qu’est-ce qu’un triplet pythagoricien ?
Ce sont les triplets d’entiers naturels de la forme $(x,y,z)$ avec $z^2=y^2+x^2$.
Il n’existe qu’un unique triplet pythagoricien d’entiers naturels consécutifs :
Posons $y=x+1$ et $z=x+2$
On a alors $(x+2)^2=(x+1)^2+x^2$, équation qui conduit à une équation du second degré dont l’unique solution positive est $x=3$.
Le seul triplet pythagoricien d’entiers naturels consécutifs est donc : $(3,4,5)$.
F/ Algorithmique
Script du calcul de l’expression avec CarMetal
Calcul des couples (x’, y’) de nombres de plus en plus grands vérifiant (R)
x et y de plus en plus grands avec CarMetal
for (x=1; x<10000; x=x+1){
y=Math.sqrt(1+3*x*x);
if (y-Math.round(y)==0){
x1=2*x*y; y1=3*x*x+y*y;
Println("x= "+x+" y= "+y+" x'= "+x1+" y'= "+y1);
}
}
Cela donne avec la coloration syntaxique d’un bon éditeur de textes :
Avec Processing
int x=0; float y=0; int yy;
int x1=0, y1=0;
for(x=1; x < 10000; x++) {
y=1+3*x*x;
y=sqrt(y);
if (y - round(y) == 0) {
yy=int(y);
x1=2*x*yy; y1=3*x*x+yy*yy;
println("x = "+x+" y= "+ yy +" "+ " x' = 2xy = "+ x1 + " y'= 3x^2+y^2 = "+y1);
}
}
Cela donne avec la coloration syntaxique d’un bon éditeur de textes :
Avec la calculatrice TI82
:For(X,1,100)
1+3*X^2→X
√(Y)→Y
If (Y-int(Y)=0)
Then
2*X*Y→Z
3*X^2+Y^2→T
Disp "X = ",X," Y= ",Y," Z =",Z," T =",T
End
End
Les triplets pythagoriciens (rendu QtiPlot (logiciel d’analyse et de visualisation de données)).
Avec CarMetal
Triplets Pythagoriciens avec boucle for simple :
for (x=1; x<100; x=x+1){
for (y=x; y100; y=y+1){
z=Math.sqrt(x*x+y*y);
if (z-Math.round(z)==0){
Println("x= "+x+" y= "+y+" z= "+Math.round(z));
} else {
}
}
}
Triplets Pythagoriciens avec départ de boucle aléatoire en y :
for (x=1; x<100; x=x+1){
x=Math.round(Math.random()*100)+1;
for (y=x; y<x+100; y=y+1){
z=Math.sqrt(x*x+y*y);
if (z-Math.round(z)==0){
Println("x= "+x+" y= "+y+" z= "+Math.round(z));
} else {
}
}
}
Cela donne avec la coloration syntaxique d’un bon éditeur de textes :
- TripletsPythagoriciens
- TripletsPythagoriciensAvecBoucleForSimple
On obtient par exemple :
x= 95 y= 168 z= 193
x= 65 y= 72 z= 97
x= 65 y= 156 z= 169
x= 5 y= 12 z= 13
x= 48 y= 55 z= 73
x= 48 y= 64 z= 80
x= 48 y= 90 z= 102
x= 48 y= 140 z= 148
x= 36 y= 48 z= 60
x= 36 y= 77 z= 85
x= 36 y= 105 z= 111
x= 40 y= 42 z= 58
x= 40 y= 75 z= 85
x= 40 y= 96 z= 104
x= 40 y= 42 z= 58
x= 40 y= 75 z= 85
x= 40 y= 96 z= 104
x= 96 y= 110 z= 146
x= 96 y= 128 z= 160
x= 96 y= 180 z= 204
x= 50 y= 120 z= 130
x= 42 y= 56 z= 70
x= 87 y= 116 z= 145
x= 96 y= 110 z= 146
x= 96 y= 128 z= 160
x= 96 y= 180 z= 204
x= 78 y= 104 z= 130
x= 78 y= 160 z= 178
x= 13 y= 84 z= 85
x= 8 y= 15 z= 17
x= 25 y= 60 z= 65
x= 69 y= 92 z= 115
x= 39 y= 52 z= 65
x= 39 y= 80 z= 89
x= 40 y= 42 z= 58
x= 40 y= 75 z= 85
x= 40 y= 96 z= 104
x= 5 y= 12 z= 13
x= 66 y= 88 z= 110
x= 66 y= 112 z= 130
x= 40 y= 42 z= 58
x= 40 y= 75 z= 85
x= 40 y= 96 z= 104
x= 16 y= 30 z= 34
x= 16 y= 63 z= 65
x= 28 y= 45 z= 53
x= 28 y= 96 z= 100
x= 93 y= 124 z= 155
x= 69 y= 92 z= 115
x= 16 y= 30 z= 34
x= 16 y= 63 z= 65
x= 69 y= 92 z= 115
x= 7 y= 24 z= 25
x= 8 y= 15 z= 17
x= 22 y= 120 z= 122
x= 99 y= 132 z= 165
x= 99 y= 168 z= 195
Avec Processing
float z=0;
for(int x=1; x < 100; x++) {
for(int y=x; y < 100; y++) {
z=x*x+y*y;
z=sqrt(z);
if (z - round(z) == 0) {
println("x = "+x+" y= "+ y + " z = "+int(z));
}
}
}
Triplets Pythagoriciens avec départ de boucle aléatoire en y :
int x=0, y=0;
float z=0;
for(int i=0; i < 100; i++) {
x=int(random(1,1000));
for(y=x; y < x+100; y++) {
z=x*x+y*y;
z=sqrt(z);
if (z - round(z) == 0) {
println("x = "+x+" y= "+ y + " z = "+int(z));
}
}
}
|
|
Avec Scratch
- TripletsPythagoriciens
- TripletsPythagoriciens2
On peut voir le programme tourner sur le site de Scratch.
Avec la calculatrice TI82
:For(X,1,100)
For(Y,X,100)
X*X+Y*Y→Z
√(Z)→Z
If (Z-int(Z)=0)
Then
Disp "X = ",X," Y= ",Y," Z =",Z
End
End
- TripletsPythagoriciensCodeTI82
- TripletsPythagoriciensxAleatoireCodeTI82
Conclusion
Le TP était riche et a permis d’aborder beaucoup de sujets passionnants.
Les élèves ont largement répondu aux attentes de ce travail de groupe, pour lequel ils ont eu presque deux mois de délai (ils l’ont rendu le 25 octobre, le sujet ayant été distribué le 3 septembre).
Un groupe d’élèves (Rachelle, Amandine et Sarah) a fourni un travail remarquable que l’on peut télécharger ici.
Un autre groupe (Khaira, Julie, Alexandre et Soumayyah) a réalisé un travail tout aussi riche et appronfondi, à lire ici.
Le barême était sur 24. Ces deux groupes ont eu 20.
Les élèves dans l’ensemble m’ont surprise par la diversité des calculs effectués.
Commentaires