Le plus pénible, c’est encore d’entrer les données. En JavaScript, on peut le faire avec des tableaux de nombres, l’un appelé $t$ pour les temps, l’autre appelé $D$ pour les densités.
Ces deux tableaux sont initialisés avec les nombres de l’énoncé.
Ensuite il suffit de créer les points dont l’abscisse est $t$ et l’ordonnée $D$ (« Dis, mère-grand, pourquoi les ordonnées ont-elles été divisées par 10 ? » - « C’est pour mieux les voir, mon enfant ») :
- var t=new Array(0,.1,.3,.57,.6,.7,.9,1.2,1.47,1.72,1.95);
- var D=new Array(10.2,11.2,13.5,17.2,17.7,19.5,23.5,30.5,39,49.2,61);
- for(i in t){
- a=Point(t[i],D[i]/10);
- }
L’exécution de ce script sous CaRMetal donne le nuage de points suivant :
Tableau
Une modification du script précédent pour, au lieu de représenter les points, calculer les variations, donne ceci :
- var t=new Array(0,.1,.3,.57,.6,.7,.9,1.2,1.47,1.72,1.95);
- var D=new Array(10.2,11.2,13.5,17.2,17.7,19.5,23.5,30.5,39,49.2,61);
- for(i=0;i<10;i=i+1){
- Deltat=t[i+1]-t[i];
- DeltaD=D[i+1]-D[i];
- Println("|"+DeltaD/Deltat+"|"+DeltaD/D[i]+"|"+DeltaD/D[i]/Deltat+"|");
- }
La sortie de ce programme est le tableau suivant :
$\frac{\Delta D}{\Delta t}$ | $\frac{\Delta D}{D}$ | $\frac{\Delta D}{D \Delta t}$ |
10 | 0.09803921568627452 | 0.9803921568627452 |
11.500000000000005 | 0.20535714285714293 | 1.0267857142857149 |
13.703703703703702 | 0.274074074074074 | 1.0150891632373114 |
16.666666666666654 | 0.029069767441860465 | 0.9689922480620147 |
18.00000000000001 | 0.10169491525423734 | 1.0169491525423735 |
19.999999999999993 | 0.20512820512820512 | 1.0256410256410253 |
23.33333333333334 | 0.2978723404255319 | 0.9929078014184399 |
31.48148148148148 | 0.2786885245901639 | 1.0321797207043106 |
40.80000000000001 | 0.2615384615384616 | 1.0461538461538464 |
51.304347826086946 | 0.23983739837398366 | 1.04277129727819 |
Comme $\frac{\Delta D}{D \Delta t}\simeq 1$, on cherche alors une fonction de la forme $ke^x$. Avec $k=10,2$ (valeur initiale), l’approximation n’est pas très bonne. Avec $k=9$, elle est meilleure :
- var t=new Array(0,.1,.3,.57,.6,.7,.9,1.2,1.47,1.72,1.95);
- var D=new Array(10.2,11.2,13.5,17.2,17.7,19.5,23.5,30.5,39,49.2,61);
- for(i in t){
- a=Point(t[i],D[i]/10);
- }
- i=CartesianFunction(0,2,"9*exp(x)/10");
Commentaires