Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Répondre
Résumé de la discussion (messages les plus récents en premier)
- Wiwaxia
- 03-05-2024 09:28:01
Bonjour,
Les fonctions citées g(x) = (enx - 1)/(enx + 1) font en fait intervenir la fonction tangente hyperbolique:
g(x) = Tanh(nx) ;
et comme le résultat attendu est un entier (0 ou ±1), il faut procéder à un transtypage par recours à l'arrondi à l'entier le plus proche, en utilisant
g1(x) = Round(Tanh(nx)) ,
ce qui évite de confier au processeur l'approximation douteuse g(x) ≈ 1 pour x > 0 .
On a de plus: Tanh(1) = 0.761594 ce qui permet l'emploi d'une fonction plus simple:
g2(x) = Round(Tanh(x)) .
Enfin, la solution envisagée présente une complication calculatoire extravagante par rapport à la définition algorithmique de fa fonction Sgn(x), qui ne demande aucune opération arithmétique ni recours à une fonction transcendante.
... Et je le répète, la fonction en cause f = (S+|S|*Sgn(x))/2 + x = f(x, S) dépend non pas d'une seule mais de deux variables (voir #18); mais elle résume l'algorithme à mettre en œuvre.
- Ernst
- 02-05-2024 23:17:52
Merci pour vos réponses, voulez-vous dire qu'il est possible de remplacer par ${\Large{\frac {{{\rm e}^{100\,x}}-1}{{{\rm e}^{100\,x}}+1}}}$ dans votre formule $ f(x)=\frac{S}{2}+\frac{\left | S \right |\left | x \right |}{2x}+x $ ?
Bonsoir EC67675
Pas la peine, sur ce coup la formule originelle fonctionne très bien.
L’idée de base, c’est d’exprimer le nouveau score en fonction de l’ancien score et de ${x}$. Si les deux sont de même signe, on les ajoute, s’ils sont de sens contraire on repart sur ${x}$ tout seul. Fallait donc trouver le moyen, mathématiquement parlant, d’exprimer le signe d’une valeur ici par ${+1}$ ou par ${-1}$, et également d’annuler entièrement le score ou pas du tout.
En informatique c’est simple puisqu’on a des instructions signe, partie entière, vrai, faux, si ceci alors cela, etc. En mathématiques il est plus difficile d’exprimer les choses avec une formule et une seule. Écrire ${\Large{\frac { \left| x \right| }{x}}}$ marche très bien tant que ${x}$ est différent de zéro – et c’était le cas dans le petit problème proposé. Sauf que voilà, il aurait suffit que ${x}$ puisse prendre d’autres valeurs dont zéro pour que cela ne marche plus du tout, la division par zéro étant déclarée impossible.
Dans ce cas, je disais qu’à la place de ${\Large{\frac { \left| x \right| }{x}}}$ il faut plutôt écrire ${\Large{\frac {{{\rm e}^{nx}}-1}{{{\rm e}^{nx}}+1}}}$ qui renvoie également le signe selon les valeurs de ${x}$ même quand il est égal à zéro. Sauf qu’une fois encore, attention, faut quand même que ${n}$ soit grand. Par exemple si ${n=10}$ cela commence à se rapprocher de ce que l’on souhaite, mais si on calcule en virgule flottante cela risque de poser problème à cause des décimales. Avec ${n=100}$ il n’y a plus aucun problème même si on calcule en quadruple précision puisque ça sort effectivement ${-1}$,${0}$ ou ${1}$.
Petite démonstration avec Maple :
Avec ${n=10}$ on voit que pour des valeurs assez grandes ça marche, mais avec ${-1}$ ou ${1}$ on a une floppée de décimales gênantes. Avec ${n=100}$ c’est ${-1}$, ${0}$ ou ${1}$ quoi qu’il arrive.
- EC67675
- 02-05-2024 20:31:39
Bonsoir Ernst,
Merci pour vos réponses, voulez-vous dire qu'il est possible de remplacer par ${\Large{\frac {{{\rm e}^{100\,x}}-1}{{{\rm e}^{100\,x}}+1}}}$ dans votre formule $ f(x)=\frac{S}{2}+\frac{\left | S \right |\left | x \right |}{2x}+x $ ?
Merci et bonne soirée
- Ernst
- 02-05-2024 00:24:31
Pour WolframAlpha, il suffit de taper en entrée du site: Heaviside step function.
Bonsoir,
C’est toujours bien de le savoir, mais je ne pense pas que cela soit bien nécessaire dans la mesure où avec WolframAlpha la fonction ${sgn()}$ marche déjà très bien : elle sort directement ${-1 / 0 / 1}$ en fonction de valeurs négatives / nulles / positives sans avoir besoin ni d’initialisation, ni de formule.
Ceci dit, depuis nos échanges je me suis penché sur la fonction ${sgn()}$ telle que la présente Wikipédia. D’une part je suis content d’avoir trouvé tout seul la formule ${\Large{\frac { \left| x \right| }{x}}}$ et d’autre part j’ai testé la fonction ${\Large{\frac {{{\rm e}^{100\,x}}-1}{{{\rm e}^{100\,x}}+1}}}$ qui sur ce problème donne le signe exact même en quadruple précision, et cela sans avoir à faire d’exception sur ${x}$.
- Wiwaxia
- 01-05-2024 19:09:31
Bonjour,
... Par aillers je m'aperçois que ni WolframAlpha ni Maple18 ne connaissent de fonction H(x), c'est plutôt embêtant ça, difficile de s’en servir...
Pour WolframAlpha, il suffit de taper en entrée du site: Heaviside step function.
- Ernst
- 29-04-2024 10:37:56
Bonjour Wiwaxia,
Ici je voulais une formule mathématique, vu qu'avec un algorithme de programmation le problème était trivial. Et comme j’étais sûr d’éviter la division par zéro puisque x ne prenait que la valeur 1 ou -1, et comme cela marche aussi quel que soit S entier zéro compris, cela répondait bien à la demande je pense.
Par aillers je m'aperçois que ni WolframAlpha ni Maple18 ne connaissent de fonction H(x), c'est plutôt embêtant ça, difficile de s’en servir...
- Wiwaxia
- 28-04-2024 17:19:35
Bonjour,
Wiwaxia a écrit :La fonction de Heavyside est directement liée au signe d'une grandeur réelle:
Sgn(x) = 2*H(x) - 1 .
Bonjour Wiwaxia,
... / ... Dans ce cas autant définir directement la fonction sgn(x) = -1 si x <0 et 1 sinon, non ? ...
Pas exactement, parce que le signe du zéro n'est pas défini, et la fonction doit alors retourner zéro (faute de mieux).
Il suffit d'écrire l'algorithme complet et symétrique:
FUNCTION Sgn(x: Reel):ShortInt;
VAR s: ShortInt;
BEGIN
IF (x>0) THEN s:= 1
ELSE IF (x<0) THEN s:= -1
ELSE s:= 0;
Result:= s
END;
Remarque: J'espère que l'indentation est respectée.
On obtient le même résultat en utilisant la fonction H(x).
- Ernst
- 28-04-2024 13:42:54
La fonction de Heavyside est directement liée au signe d'une grandeur réelle:
Sgn(x) = 2*H(x) - 1 .
Bonjour Wiwaxia,
Cool. Je ne savais pas qu'on pouvait écrire des fonctions avec des si. Dans ce cas autant définir directement la fonction sgn(x) = -1 si x <0 et 1 sinon, non ? D'autant que j’ai l’impression que WolframAlpha est capable de gérer le truc sans problème, exemple.
- Wiwaxia
- 28-04-2024 11:29:52
Bonjour,
... / ... En informatique on a une fonction dédiée souvent appelée SGN mais en mathématiques je n’en connais pas ... .
La fonction de Heavyside est directement liée au signe d'une grandeur réelle:
Sgn(x) = 2*H(x) - 1 .
L'expression donnée de f(x) est astucieuse, mais il s'agit en fait d'une relation de récurrence entre deux valeurs consécutives du score; elle donne la nouvelle valeur de (S) en fonction de l'ancienne, et de la dernière réponse donnée:
Sn+1 = f(Sn, xn+1) .
- Ernst
- 27-04-2024 19:13:36
Bonsoir tout le monde,
En me relisant je m’aperçois que j’aurais plutôt dû écrire que la fonction renvoyait une valeur correspondant au nouveau score en tenant compte de la règle du jeu vu que S en lui-même conserve sa valeur, mais bon, l’essentiel me semblait être de trouver la formule qui allait bien.
Ma démarche a été d’abord de savoir comment trouver le signe du score et également de x. En informatique on a une fonction dédiée souvent appelée SGN mais en mathématiques je n’en connais pas. Ensuite elle a été de trouver comment garder le score ou l’annuler en fonction de ces signes. Si je le garde on ajoute x vu que c’est de même signe, et si on l’annule on ajoute x aussi puisqu’il est de signe contraire – et donc on passe à l’unité de l’autre côté du zéro, donc dans tous les cas on ajoute x.
Restait à trouver comment garder ou annuler. Et là je me suis dit que ça marchait avec un score divisé par deux suivi d'un signe + ou - devant le score lui aussi divisé par deux. Soit j'ajoute les deux et j'obtiens bien le score originel, soit je retire le deuxième au premier et comme c'est la même chose il se retrouve à zéro.
Voili voilou.
- Ernst
- 27-04-2024 16:05:08
J’aimerais vous demander s’il est possible de formuler une équation permettant d’obtenir S à partir de x (x serait la seule inconnue), quelles que soient leurs valeurs respectives…
Bonjour Jean
Si j’ai bien compris, il s’agit d’établir une équation avec x comme seule variable, S étant un paramètre fixe au moment du tirage, à savoir le score qu’il convient de modifer, et x ne pouvant prendre que deux valeurs, 1 ou -1. L’équation est la suivante :
$ f(x)=\frac{S}{2}+\frac{\left | S \right |\left | x \right |}{2x}+x $
S=3 et x=1. C’est un gain supplémentaire, S passe à 4.
S=3 et x=-1. Oups, perte donc annulation du score qui passe à -1.
...
S=-3 et x=-1. La perte continue, S passe à -4.
S=-4 et x=1. Yé, gain, on annule tout et S repart à 1.
- Bernard-maths
- 27-04-2024 12:43:01
Re,
cela me fait penser à une notation du genre ± 2n+1
mais à bidouiller ?
B-m
- Bernard-maths
- 27-04-2024 12:29:35
Bonjour à TOUS, et un peu à Yoshi !
MOI j'ai répondu en 3 minutes, mon algo est juste ... (?)
Après, c'est TOUT ! Cela dépend des tirages (réponses) successifs, qui ne dépendent pas de moi ...
Cette façon de compter n'est pas équitable ...
prenons 2 joueurs sur 5 réponses :
- le 1er répond F, F, F, F, J : il a finalement +1
- le 2ème répond J, J, J, J, F : il a finalement -1
Cordialement, B-m-w
- yoshi
- 27-04-2024 12:18:16
Re,
@Bernard-maths
Alors, où en es-tu ?
Moi, j'ai pris de l'avance ;-D....
@+
- yoshi
- 25-04-2024 14:38:00
J'ai corrigé avec $S\geq 0$ et $S\leq 0$
(c'est la planification de l'affichage qui m'a pris le plus de temps...)
Maintenant ça roule (tirages aléatoires de l'état de la réponse : 0 fausse 1 juste)
Exemple de sortie:
Réponse n° 2 Ancienne somme -1 Bonne Réponse Nouvelle Somme 1
Réponse n° 3 Ancienne somme 1 Bonne Réponse Nouvelle Somme 2
Réponse n° 4 Ancienne somme 2 Bonne Réponse Nouvelle Somme 3
Réponse n° 5 Ancienne somme 3 Bonne Réponse Nouvelle Somme 4
Réponse n° 6 Ancienne somme 4 Mauvaise réponse Nouvelle Somme -1
Réponse n° 7 Ancienne somme -1 Bonne Réponse Nouvelle Somme 1
Réponse n° 8 Ancienne somme 1 Bonne Réponse Nouvelle Somme 2
Réponse n° 9 Ancienne somme 2 Mauvaise réponse Nouvelle Somme -1
Réponse n° 10 Ancienne somme -1 Mauvaise réponse Nouvelle Somme -2
Réponse n° 11 Ancienne somme -2 Mauvaise réponse Nouvelle Somme -3
Réponse n° 12 Ancienne somme -3 Bonne Réponse Nouvelle Somme 1
Réponse n° 13 Ancienne somme 1 Mauvaise réponse Nouvelle Somme -1
Réponse n° 14 Ancienne somme -1 Bonne Réponse Nouvelle Somme 1
Réponse n° 15 Ancienne somme 1 Bonne Réponse Nouvelle Somme 2
Réponse n° 16 Ancienne somme 2 Mauvaise réponse Nouvelle Somme -1
Réponse n° 17 Ancienne somme -1 Mauvaise réponse Nouvelle Somme -2
Réponse n° 18 Ancienne somme -2 Mauvaise réponse Nouvelle Somme -3
Réponse n° 19 Ancienne somme -3 Bonne Réponse Nouvelle Somme 1
Réponse n° 20 Ancienne somme 1 Bonne Réponse Nouvelle Somme 2
Le script est ici : https://www.bibmath.net/forums/viewtopi … 45#p111645
@+