@Hamza : Ce que dit AC, c'est que la définition utilisée par la calculette pour le calcul des quartiles n'est pas la même que celle spécifiée dans le système éducatif français ! Jamais il n'a été dit que les calculatrices ne savaient pas calculer les quartiles...
@kadtexas : Pour le calcul de la médiane, il suffit de vérifier si l'effectif moitié de l'effectif total fait partie de la liste des ECC ou non.
Si ton effectif total est N, tu cherches donc l'indice i tel que ECC[i]<= N/2 et ECC[i+1]>N/2. Si ECC[i] n'est pas égal à N/2, la médiane est la valeur list[i], sinon c'est la valeur (list[i]+list[i+1])/2 (et c'est valable même si N est impair... auquel cas, la deuxième possibilité ne survient jamais).
programe les quartiles
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Messages: 5666
- Inscription: 11 Mar 2008, 00:00
- Localisation: Lyon
- Genre:
- Calculatrice(s):→ MyCalcs profile
Re: programe les quartiles
Bonjour
Merci pour vos réponses, mais je crois que vous n'avez pas compris mon problème.
Bien sûr si la médiane tombe entre deux valeurs, le plus simple on détermine la moyenne arithmétique des deux valeurs....
Ma calculette TI Voyage 200 calcule la médiane et les quartiles Q1 et Q3 mais avec la méthode américaine.
Mon problème c'est la programmation d'un algorithme de la médiane sur ma calculette.
Voici ce que j'ai expliqué dans mon premier message:
Pour Q1 et Q3 pas de problème.
Le problème est celui de la médiane. Si l’effectif total est impair, aucun problème, mais s’il est pair alors il y a problème.
Exemple :
Valeurs : …………20;20;20 ;30 ;…….............. dans la list1
ECC :……………...46 ;50……………………….92 dans la list2
Ici 92/2=46
Si le dernier 20 est de rang 46 alors médiane=(20+30)/2=25
Si le dernier 20 n’est pas de rang 46 alors médiane=(20+20)/2=20
Mais ça on ne le sait pas avec les ECC
Mais comment faire un algorithme qui résout le problème en utilisant les ECC (effectifs cumulés croissants)
Personnellement je n’ai aucune idée pour l’instant.
Merci pour vos réponses, mais je crois que vous n'avez pas compris mon problème.
Bien sûr si la médiane tombe entre deux valeurs, le plus simple on détermine la moyenne arithmétique des deux valeurs....
Ma calculette TI Voyage 200 calcule la médiane et les quartiles Q1 et Q3 mais avec la méthode américaine.
Mon problème c'est la programmation d'un algorithme de la médiane sur ma calculette.
Voici ce que j'ai expliqué dans mon premier message:
Pour Q1 et Q3 pas de problème.
Le problème est celui de la médiane. Si l’effectif total est impair, aucun problème, mais s’il est pair alors il y a problème.
Exemple :
Valeurs : …………20;20;20 ;30 ;…….............. dans la list1
ECC :……………...46 ;50……………………….92 dans la list2
Ici 92/2=46
Si le dernier 20 est de rang 46 alors médiane=(20+30)/2=25
Si le dernier 20 n’est pas de rang 46 alors médiane=(20+20)/2=20
Mais ça on ne le sait pas avec les ECC
Mais comment faire un algorithme qui résout le problème en utilisant les ECC (effectifs cumulés croissants)
Personnellement je n’ai aucune idée pour l’instant.
-
kadtexas
Niveau 9: IC (Compteur Infatigable)- Messages: 283
- Inscription: 29 Jan 2015, 19:32
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: etudiant
Re: programe les quartiles
Salut
une ébauche d'algorithme:
Si N=nbre d'éléments au total et si N pair ( N /2.0 entier )
alors soit m1=N/2 et m2=m1+1 positions des 2 items milieu de population, et mediane =(valeur m1 + valeur m2)/2.0
Comment retrouver les valeurs en position m1 et m2 ? -> une petite boucle qui parcourt les effectifs, et si on atteint m1 (m2 ? ) on a la 1ere (et 2e valeur) puis idem (en même temps) pour m2 ...
Ca le fait, non ? ( Je n'ai pas de ti89.. )
une ébauche d'algorithme:
Si N=nbre d'éléments au total et si N pair ( N /2.0 entier )
alors soit m1=N/2 et m2=m1+1 positions des 2 items milieu de population, et mediane =(valeur m1 + valeur m2)/2.0
Comment retrouver les valeurs en position m1 et m2 ? -> une petite boucle qui parcourt les effectifs, et si on atteint m1 (m2 ? ) on a la 1ere (et 2e valeur) puis idem (en même temps) pour m2 ...
Ca le fait, non ? ( Je n'ai pas de ti89.. )
-
Extra44Premium
Niveau 11: LV (Légende Vivante)- Messages: 591
- Images: 1
- Inscription: 20 Jan 2011, 00:00
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: S.I.
Re: programe les quartiles
salut
Pas encore bien compris!
J'ai bien préciser: en utilisant la liste des Effectifs Cumulés Croissants.
Sinon pour une liste des valeurs ou' chaque valeur est répétée autant de fois que son effectif ne pose aucun problème.
Il y a une fonction de la calculette qui calcule la médiane juste pour une seule liste mais pas pour deux, l'une des valeurs et l'autre des éffectifs associés.
Donc moi j'ai voulu faire un programme pour calculer la médiane avec la liste des valeurs et la liste des effectifs cumulée croissants.
Pas encore bien compris!
J'ai bien préciser: en utilisant la liste des Effectifs Cumulés Croissants.
Sinon pour une liste des valeurs ou' chaque valeur est répétée autant de fois que son effectif ne pose aucun problème.
Il y a une fonction de la calculette qui calcule la médiane juste pour une seule liste mais pas pour deux, l'une des valeurs et l'autre des éffectifs associés.
Donc moi j'ai voulu faire un programme pour calculer la médiane avec la liste des valeurs et la liste des effectifs cumulée croissants.
-
kadtexas
Niveau 9: IC (Compteur Infatigable)- Messages: 283
- Inscription: 29 Jan 2015, 19:32
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: etudiant
Re: programe les quartiles
En espérant ne pas faire trop de fautes, et en reprenant ton code : voici ce que ça donne :
--EDIT : pour nombre effectiftotal pair ici ! :
Est ce compréhensible ... ?
--EDIT : pour nombre effectiftotal pair ici ! :
- Code: Tout sélectionner
effectiftotal/2 -> m1
m1+1 -> m2
1 -> drapeauM1
1 -> drapeauM2
Loop
i=i+1
If list3[i]>=effectiftotal/4 and drapeau=1 then
If mod(effectiftotal,4)=0 then
drapeau=0
list1[i] -> Q1
Else
list1[i+1] -> Q1
drapeau=0
Endif
Endif
if list3[i]>=m1 and drapeauM1=1 then
0->drapeauM1
list1[i] -> valM1
endif
if list3[i]>=m2 and drapeauM2=1 then
0->drapeauM2
list1[i] -> valM2
endif
(valM1+valM2)/2 -> mediane
.
.
Q3=…
Exit
Endloop
Est ce compréhensible ... ?
-
Extra44Premium
Niveau 11: LV (Légende Vivante)- Messages: 591
- Images: 1
- Inscription: 20 Jan 2011, 00:00
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: S.I.
Re: programe les quartiles
Le lien du programme du site faisant les calculs en utilisant la définition choisie pour les programmes du secondaire:
archives_voir.php?id=1935
Ce programme calcule aussi les déciles et s'occupe des calculs dans le cas des caractères continus.
Il y a une version TI 89 et une version Voyage 200.
archives_voir.php?id=1935
Ce programme calcule aussi les déciles et s'occupe des calculs dans le cas des caractères continus.
Il y a une version TI 89 et une version Voyage 200.
-
ACPremium
Niveau 10: GR (Guide de Référence)- Messages: 162
- Inscription: 26 Fév 2009, 00:00
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: Prof retraité
Re: programe les quartiles
@Kadtexas : Ma réponse convenait parfaitement à ta question... mais visiblement tu n'as pas compris.
Et Extra44 a fait à peu près la même réponse.
Si tu ne comprends pas, dis-le... mais ne dis pas qu'on répond à côté.
Et Extra44 a fait à peu près la même réponse.
Si tu ne comprends pas, dis-le... mais ne dis pas qu'on répond à côté.
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Messages: 5666
- Inscription: 11 Mar 2008, 00:00
- Localisation: Lyon
- Genre:
- Calculatrice(s):→ MyCalcs profile
Re: programe les quartiles
Bonjour Bisam
Ton programme marche un coup sur deux
Exemple
Valeurs :15 ;15 ;17 ; 20 ; 20 ;20 ;30 ;30 ;35 ;40 : ici la médiane est 20
Voici le tableau classique:
Valeurs 15 ;17 ;20 ;30 ;35 ;40 :dans list1
Effectifs 2 ;1 ;3 ;2 ;1 ;1 : dans list2
ECC 2 ;3 ;6 ;8 ;9 ;10 : dans list3
effectif total/2=10/2=5
Pour i = 2 on a :ECC[2]<=5 et ECC[3]>5, ta condition est valide
Donc (list1[2]+list1[3])/2=(17+20)/2=18,5
Donc ça ne marche pas
C'est ce cas qui pose problème, lorsque la médiane tombe entre deux valeurs confondues, ici 20
(20+20)/2=20
@kadtexas : Pour le calcul de la médiane, il suffit de vérifier si l'effectif moitié de l'effectif total fait partie de la liste des ECC ou non.
Si ton effectif total est N, tu cherches donc l'indice i tel que ECC[i]<= N/2 et ECC[i+1]>N/2. Si ECC[i] n'est pas égal à N/2, la médiane est la valeur list[i], sinon c'est la valeur (list[i]+list[i+1])/2 (et c'est valable même si N est impair... auquel cas, la deuxième possibilité ne survient jamais).
Ton programme marche un coup sur deux
Exemple
Valeurs :15 ;15 ;17 ; 20 ; 20 ;20 ;30 ;30 ;35 ;40 : ici la médiane est 20
Voici le tableau classique:
Valeurs 15 ;17 ;20 ;30 ;35 ;40 :dans list1
Effectifs 2 ;1 ;3 ;2 ;1 ;1 : dans list2
ECC 2 ;3 ;6 ;8 ;9 ;10 : dans list3
effectif total/2=10/2=5
Pour i = 2 on a :ECC[2]<=5 et ECC[3]>5, ta condition est valide
Donc (list1[2]+list1[3])/2=(17+20)/2=18,5
Donc ça ne marche pas
C'est ce cas qui pose problème, lorsque la médiane tombe entre deux valeurs confondues, ici 20
(20+20)/2=20
-
kadtexas
Niveau 9: IC (Compteur Infatigable)- Messages: 283
- Inscription: 29 Jan 2015, 19:32
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: etudiant
Re: programe les quartiles
Bonsoir
Dans ton exemple, ce que je fais (si pas d'erreur) (dans mon algo) :
on est bien dans le cas N pair : on trouve donc :
m1=10/2=5
m2=6
pour chaque iteration :
Iteration i= 1 : ECC[1] (vaut 2 donc ) non >= m1 donc rien et ECC[1] non >= m2 donc rien
Iteration i= 2 : ECC[2] (vaut 3 donc ) non >= m1 donc rien et ECC[2] non >= m2 donc rien
Iteration i= 3 : ECC[3] (vaut 6 donc ) >= m1 donc drapeauM1 mis à 0 et valM1=val[3]=20 et ECC[3] >= m2 donc drapeauM2 mis à 0 et valM2= val[3]=20
(oubli de ma part dans l'algo du message precedent, calculer la mediane que si valM1 et valM2 déterminé (et qu'une seule fois) : )
-> donc ici : (valM1 + valM2)/2 = (20+20)/2=20
iterations suivantes : drapeauM drapeauM1 et drapeauM2 deja a 0 donc on ne fait rien de plus par rapport a la mediane ...
AHH : je crois avoir compris où tu n'as pas compris : ce n'est pas (list1[2]+list1[3] ) /2 qu'on trouve mais (list1[2]+list1[2] ) /2
C'est l'élément "suivant", mais pas dans la liste des effectifs cumulés croissant !
Non ?
Dans ton exemple, ce que je fais (si pas d'erreur) (dans mon algo) :
on est bien dans le cas N pair : on trouve donc :
m1=10/2=5
m2=6
pour chaque iteration :
Iteration i= 1 : ECC[1] (vaut 2 donc ) non >= m1 donc rien et ECC[1] non >= m2 donc rien
Iteration i= 2 : ECC[2] (vaut 3 donc ) non >= m1 donc rien et ECC[2] non >= m2 donc rien
Iteration i= 3 : ECC[3] (vaut 6 donc ) >= m1 donc drapeauM1 mis à 0 et valM1=val[3]=20 et ECC[3] >= m2 donc drapeauM2 mis à 0 et valM2= val[3]=20
(oubli de ma part dans l'algo du message precedent, calculer la mediane que si valM1 et valM2 déterminé (et qu'une seule fois) : )
- Code: Tout sélectionner
if drapeauM1=0 and drapeauM2=0 and drapeauM=1 then
(valM1+valM2)/2 -> mediane
drapeauM=0
endif
-> donc ici : (valM1 + valM2)/2 = (20+20)/2=20
iterations suivantes : drapeauM drapeauM1 et drapeauM2 deja a 0 donc on ne fait rien de plus par rapport a la mediane ...
AHH : je crois avoir compris où tu n'as pas compris : ce n'est pas (list1[2]+list1[3] ) /2 qu'on trouve mais (list1[2]+list1[2] ) /2
C'est l'élément "suivant", mais pas dans la liste des effectifs cumulés croissant !
Non ?
-
Extra44Premium
Niveau 11: LV (Légende Vivante)- Messages: 591
- Images: 1
- Inscription: 20 Jan 2011, 00:00
- Genre:
- Calculatrice(s):→ MyCalcs profile
- Classe: S.I.
Re: programe les quartiles
@Kadtexas : effectivement, j'ai répondu un peu vite et mon algorithme ne fonctionne pas, car j'ai fait une petite erreur expliquée plus bas... mais toi aussi tu t'es trompé en appliquant l'algorithme !
Voici l'algorithme corrigé avec l'explication permettant de prouver qu'il fonctionne :
On détermine i tel que ECC[i]<=N/2 et ECC[i+1]>N/2.
1er cas : Si ECC[i]=N/2 (ce qui impose que N soit pair, mais ce n'est pas utile de le tester), cela signifie que la moitié des éléments sont inférieurs ou égaux à list[i] et l'autre moitié supérieurs ou égaux à list[i+1]. Donc on renvoie la valeur (list[i]+list[i+1])/2 comme médiane.
2ème cas : Si ECC[i]<N/2, cela signifie que la médiane est atteinte au milieu du paquet d'éléments égaux à list[i+1] et on renvoie alors list[i+1] comme médiane (et non list[i] comme je l'avais écrit par erreur plus haut).
Voici l'algorithme corrigé avec l'explication permettant de prouver qu'il fonctionne :
On détermine i tel que ECC[i]<=N/2 et ECC[i+1]>N/2.
1er cas : Si ECC[i]=N/2 (ce qui impose que N soit pair, mais ce n'est pas utile de le tester), cela signifie que la moitié des éléments sont inférieurs ou égaux à list[i] et l'autre moitié supérieurs ou égaux à list[i+1]. Donc on renvoie la valeur (list[i]+list[i+1])/2 comme médiane.
2ème cas : Si ECC[i]<N/2, cela signifie que la médiane est atteinte au milieu du paquet d'éléments égaux à list[i+1] et on renvoie alors list[i+1] comme médiane (et non list[i] comme je l'avais écrit par erreur plus haut).
-
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)- Messages: 5666
- Inscription: 11 Mar 2008, 00:00
- Localisation: Lyon
- Genre:
- Calculatrice(s):→ MyCalcs profile
23 messages
• Page 2 sur 3 • 1, 2, 3
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 6 invités