Un chat, des pigeons et une prog. géometrique...

Discussion générale entre passionnés et amateurs de mathématiques sur des sujets mathématiques variés
Bidi
Messages: 5
Enregistré le: 09 Fév 2012, 05:13

Un chat, des pigeons et une prog. géometrique...

par Bidi » 09 Fév 2012, 06:04

Bonjour,

J'écris un chat (bavarder: logiciel de clavardage). Un gardien (écrit en javascript) va vérifier de temps en temps, mais jamais plus de M=300 secondes (5mn) entre deux vérif, s'il n'y a pas un pigeon voyageur d'arriver. Le temps I initial entre deux vérifications est paramétrable par l'utilisateur (pour info: I=3, 5, 10, 30, 50 ou 100 secondes). L'utilisateur peut également paramétrer le nombre N de vérifications après lequel le maximum de 300 secondes est atteint (pour info, N=10, 30, 50, 100, 300 ou 500 verifs). Je suppose que pour la plupart d'entre vous, calculer T à partie de M, I et N, le temps que mettra le gardien après la première vérif, pour arriver à l'intervalle de M est trivial. Je vais commencer par faire boucler le programme N fois, mais je trouve cela un peu "tarte", pas vous?

Texte ci-dessous à caractères de largeur fixe:
[FONT=Lucida Console]
0 - - - - T |
1 2 3 4 N-1 N
[/FONT]

Si quelqu'un a la formule magique...

Merci pour votre attention et bon café à tous.



Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 09 Fév 2012, 07:30

salut,

pour moi c'est pas tres clair.
Ton schéma est inexploitable. Une image serait mieux...

L'utilisateur peut également paramétrer le nombre N de vérifications après lequel le maximum de 300 secondes est atteint (pour info, N=10, 30, 50, 100, 300 ou 500 verifs).

C'est quoi ce nombre de vérifications? Je comprends pas a quoi correspond ce nombre maximum de 300 secondes non plus.
Je suppose que pour la plupart d'entre vous, calculer T à partie de M, I et N, le temps que mettra le gardien après la première vérif, pour arriver à l'intervalle de M est trivial.

C'est quoi l'intervalle de M, alors que M c'est un nombre.

Je vais commencer par faire boucler le programme N fois, mais je trouve cela un peu "tarte", pas vous?

Quel rapport entre N un nombre de vérif et boucler N fois?
la vie est une fête :)

Bidi
Messages: 5
Enregistré le: 09 Fév 2012, 05:13

par Bidi » 10 Fév 2012, 02:36

Salut,

Merci "fatal_error" (brrrrrr) pour ta réponse. Je ne suis pas un matheux! Pour moi, les lettres, éventuellement groupées en mots, sont des noms de variables, et n'ont pas elle même de valeur sémantique. "N" n'a ici, rien à voir avec une suite d'entiers naturels, ou un quelconque ensemble... Nous (les gens qui programons) nous efforçons de donner aux variables des noms significatifs, mais ces symboles ne parlent guère qu'à nous même.

J'ai bien tenté une représentation à l'aide de caractère de largeur fixe, mais le texte est re-formaté. Je vais tout de même tenter une ré-explication:
Soit au temps T0, la vérification au pigeonnier nº 0,
La vérification nº 1 a lieu I secondes après la nº 0,
La vérification nº N est la dernière qui soit séparée de la précédente par un intervalle de temps non fixe,
Ensuite, les vérification ont lieu toutes les 300 secondes.
Je voudrais connaitre Tn-T0, ou autrement dit, au bout de combien de temps l'intervalle entre deux vérification est de 300 secondes.

Je crois que le plus simple est de vous montrer comment j'ai répondu à mon besoin:

Je commence par calculer le "coeff. d'augmentation" de l'intervalle entre deux vérifications, nommé "_k". Je sais, "coeff. d'augmentation" n'est pas le bon terme de math, mais j'espère être compris...
[INDENT]_k=Math.pow(300/I, 1/N);[/INDENT]
Après cette instruction, la variable "_k" sera affectée de la valeur racine "N"ème de (300 divisé par "I"). Dans cette instruction:
- "I" est le premier paramètre utilisateur (entre 3 et 50 [secondes]),
- "N" est et le second paramètre utilisateur (entre 10 et 500 [vérifications]),
- "300" [secondes] est une limite maximale de temps entre deux vérif., valeur que J'ai fixé arbitrairement à 5 minutes,
- Math.pow(a, b) retourne le paramètre "a" élevé à la puissance "b".
[INDENT]_T=0;[/INDENT]
Initialisation de la somme "_T" à zero.
[INDENT]for (_i=1; _i<N; _i++)
_T+=I*Math.pow(_k, _i);
[/INDENT]
Pour (une variable arbitraire) "_i", variant de 1 à "N"-1, ajouter à la somme "_T" le résultat du calcul de la grandeur "I" (des secondes) multipliée par ("_k" élevé à la puissance "_i")
Pour éviter le problème de signification des parenthèses, je pourrais écrire:
Pour (une variable arbitraire) "_i", variant de 1 à "N"-1, le résultat de "_k" élevé à la puissance "_i" est multiplié par "I", et Le résultat de cette dernière opération est ajouté à la somme "_T".

Écrire une boucle pour avoir ce résultat me paraît le reflet de mon incompétence en math, ce qui touche mon ego. Ce post me semble tout à fait avoir sa place ici, puisque j'ai une solution. Voici donc un sujet typique de "conversation de comptoir".

Qui peut m'écrire la fonction "f" me donnant le résultat (sans boucler!): _T=f(300, I, N) ? Je crois l'avoir aperçue par ailleurs sur le Web, mais bon...

Merci, et bon café!

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 10 Fév 2012, 07:36

tu cherches a calculer

bien sur, il faut traiter le cas I = 0 à part (à cause de 300/I qui est une div par zero)
style
si I=0,
return 0;
return I*(1-pow(k,N))/(1-k) -I

edit: normalement, t'es justement en info censé donner des noms de variables explicits pour faciliter la lecture du code. Apres si tu developpes pour toi, et que tu comptes pas repasser sur ton code plus tard, ouais pourquoi pas.
ps2: la variable que t'appeles I/l, ca fait méga ticker!!!
la vie est une fête :)

Bidi
Messages: 5
Enregistré le: 09 Fév 2012, 05:13

par Bidi » 14 Fév 2012, 15:11

fatal_error a écrit: ... I*(1-pow(k,N))/(1-k) -I
Merci bien à vous, Fatal_error...

J'ai mis du temps à comprendre... que ce que je refusais dans ce que j'ai lu antérieurement est que la solution passe par deux calculs: celui de k puis la somme. Bien sûr, on pourrait remplacer le k de la formule ci-dessus par l'expression de son calcul, mais c'est évidemment ridicule, étant utilisé deux fois, et je suppose que cela ne simplifierait rien.

fatal_error a écrit:...des noms de variables explicits...
Mais si. C'est bien ce que j'ai écrit. Ce qui est explicite pour ceux qui passent leur temps à parler de math ne l'est pas nécessairement pour celui qui programme, 35 ans après avoir entendu parlé de math par ceux-là même! De toute façon, c'est foutu: relire son propre code 6 mois après l'avoir écrit, c'est galère, et le code des autres c'est encore plus galère...

fatal_error a écrit:ps2: la variable que t’appelles I/l, ca fait méga ticker!!!
J'ai du jeter un oeil pour savoir ce que veut dire "ticker"... j'ai pas compris malgré les explications trouvées... Que voulez-vous dire? Je cherche effectivement à 1º - connaître le temps qu'un visiteur passe sur la page et à 2º permettre un système de messagerie + ou - instantanée. Pour le 1º, un intervalle de 5 minutes est suffisant, et pour le 2º, les requêtes ne sont jamais assez rapides, l'utilisateur pouvant se plaindre de lenteur des échanges. J'ai pensé à cette méthode pour atteindre mon objectif. L'utilisateur ne changera probablement jamais les paramètres par défaut: à moi de les ajuster pour le cas général qui sera probablement la non utilisation du chat comme tel. En ce qui concer le point 1º, il faut également préciser que les fureteurs ne sont pas tous polis: tous ne savent pas dire "au revoir" (pour des raison de sécurité ou de confidentialité, cherchez «HTML onUnload» et «HTML onBeforeUnload» sur le net...). Opera, Safari et Seamonkey sont parmi les plus odieux (pour une fois que ce n'est pas Microsoft IE!) et comme le serveur doit servir tous les genres de fureteur...

Merci encore, Fatal_error pour m'avoir prêté attention et répondu. Si vous êtes prof, ce que je suppute, voici un exemple pratique de progression géométrique pour les élèves. Je l'ai voulu sympa dans la présentation, en parlant de chat et de pigeon (-: . J'ai eu du mal à me faire comprendre auprès de vous, tout de même. Alors la perspective d'expliquer le fonctionnement du chat à des utilisateurs péruviens au niveau de culture générale un peu faible m’inquiète un peu je dois dire, d'autant que l'espagnol n'est pas mon fort (non plus /-: )...

Bon café à tous.

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 14 Fév 2012, 16:38

ticker, c'etait dans le sens ca fait bondir. C'est super penible d'avoir des variables I ou l parce qu'on les confond a la lecture.

sinon nan chui pas prof de math chui dev en informatique :lol3:
la vie est une fête :)

Bidi
Messages: 5
Enregistré le: 09 Fév 2012, 05:13

par Bidi » 15 Fév 2012, 01:50

fatal_error a écrit:sinon nan chui pas prof de math chui dev en informatique
Bah! Personne n'est parfait! (((-:

 

Retourner vers ⚜ Salon Mathématique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 5 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite