Page 1 sur 1
autoscale
Publié : dim. mars 24, 2013 3:27 pm
par alb
O:=point(0,0);A:=point(1,0);B:=point(0,1);
Ce:=cercle(O,1);
D:=point(3,0);C:=point(-1,0);
l'autoscale refuse de montrer le point D.
Re: autoscale
Publié : dim. mars 24, 2013 5:49 pm
par parisse
L'algorithme utilisé pour l'autoscale consiste à créer la liste des abscisses (ou ordonnées) des points (pour les cercles plusieurs points régulièrement répartis sur le cercle sont pris en compte). Puis on calcule le 1er et le 9ème décile de la liste et on fait un léger zoom out par rapport à ces valeurs. Ceci afin d'éviter qu'un point très éloigné mais très isolé ne modifie trop les échelles.
Evidemment ce n'est pas toujours très bien adapté... mais je ne vois pas d'algorithme parfait pour faire ça de toutes façons!
Re: autoscale
Publié : dim. mars 24, 2013 8:59 pm
par alb
Très intéressant et parfaitement compréhensible par les élèves de seconde qui connaissent les notions de quartiles.
A quel endroit du source peut-on trouver les lignes de code qui correspondent à la recherche de ces déciles ?
Re: autoscale
Publié : lun. mars 25, 2013 8:09 am
par parisse
C'est dans tex.cc, mais je ne sais pas si c'est tres pedagogique comme code...
Code : Tout sélectionner
void autoscaleminmax(vector<double> & v,double & m,double & M){
int s=v.size();
if (s>1){
sort(v.begin(),v.end());
m=v[s/10];
M=v[9*s/10];
if (2*(M-m)>(v[s-1]-v[0])){
M=v[s-1];
m=v[0];
zoom(m,M,1.1);
}
else
zoom(m,M,1/0.8);
}
}
La fonction zoom sert a faire un zoomin/out en fonction de la valeur du 3eme parametre:
Code : Tout sélectionner
static void zoom(double &m,double & M,double d){
double x_center=(M+m)/2;
double dx=(M-m);
if (dx==0)
dx=1;
dx *= d/2;
m = x_center - dx;
M = x_center + dx;
}
Re: autoscale
Publié : mer. mars 27, 2013 4:12 pm
par alb
Vraiment très intéressant à expliquer aux élèves ! Pour comprendre ce qui se passe quand on clique sur le bouton auto.
1/ écrire en langage Xcas les deux fonctions autoscaleminmax et zoom.
2/ commenter en utilisant le vocabulaire de cette classe: définition des déciles, écart inter-décile, étendue d'une série, milieu et longueur d'un segment.
3/ Illustrer avec seq(point(k,k),k,0,1,0.1);A:=point(2,0);B:=point(-2,0);