Besoin d'une formule de math.

Besoin d'une formule de math. - C++ - Programmation

Marsh Posté le 25-07-2005 à 20:14:25    

Bonjour, j'essaie de trouver une formule de math afin d'évaluer un rendement.
 
Admettons que j'ai un nombre: 25000
 
et que je veuille réduire celui-ci de 0.5% à chaque fois que je le réduit.
 
Est-ce qu'il y aurait une formule toute simple au lieu de faire quelque chose du genre:
 
25000 - ((25000 X 0.5)/100) = Z
 
Z - ((Z X 0.5)/100) = A
 
A - ((B X 0.5)/100) = C
 
et ainsi de suite dépendamment du nombre de fois que je veux réduire ce nombre.
 
Merci.  :hello:

Reply

Marsh Posté le 25-07-2005 à 20:14:25   

Reply

Marsh Posté le 25-07-2005 à 20:51:11    

Ca ressemble à une suite géométrique
 

Code :
  1. soit u la suite définie par
  2. u[n+1] = 0.95 u[n]
  3. u[0] = 25000
  4. u[n+1] / u[n] = 0.95 = q
  5. u est bien une suite géomètrique
  6. donc tu peux exprimer u[n] de cette façon :
  7. u[n] = q^n u[0]
  8. soit u[n] = 0.95^n * 25000


 
Ca fait (assez) longtemps mais c'est ce que je me souviens.

Reply

Marsh Posté le 25-07-2005 à 20:55:01    

Ah je l'ai trouvé :D
 
T = T - (T x (N x P))
 
Ou
 
T = total (25 000)
 
N = Nombre de fois qu'on le réduit
 
P = Pourcentage de réduction
 
Merci.  :jap:

Reply

Marsh Posté le 25-07-2005 à 20:56:36    

Heu
T = T - kekchose avec kekchose != 0 ça me semble bancal ^^

Reply

Marsh Posté le 25-07-2005 à 21:00:22    

Uh [:autobot]
 
Je n'ai pas compris ta remarque.  :hello:

Reply

Marsh Posté le 25-07-2005 à 21:48:59    

Elle te semble correcte ta formule ?
Parcequ'elle ne l'est que lorsque N,P ou T = 0

Reply

Marsh Posté le 26-07-2005 à 01:55:25    

Exo 7 a écrit :

Heu
T = T - kekchose avec kekchose != 0 ça me semble bancal ^^


ça dépend de comment tu surcharges operator==

Reply

Marsh Posté le 26-07-2005 à 14:36:41    

ta formule me parait pour le moins etrange:
en effet si P=5% et que tu reduis T 25 fois de suite de ce pourcentage ta formule donne comme resultat:
T = T - (T x (N x P)) = T-(T*25*5/100)=T-1.25T= -0.25T!!!!!! bref n'importe quoi car si tu augmentes le nombre de reduction ton nombre tend vers -l'infini, alors qu'il devrait tendre vers 0 !!!!  
la veritable formule est :
T= ( ((100-P)/100)^N) * T avec P le pourcentage et N le nombre de fois ou il est appliqué ce qui est l'algorithme proposé par exo7 sous la forme d'une suite.
 
rmq pour exo7: cette formule n'est pas une egalité mathematique mais une assignation informatique. Cela signifie que tu remets la valeur apres la reduction dans la variable T.


Message édité par sankukai8 le 26-07-2005 à 14:37:54
Reply

Marsh Posté le 26-07-2005 à 17:55:56    

Ok  :jap:  
 
Merci.  :)

Reply

Marsh Posté le 26-07-2005 à 18:08:06    

Taz a écrit :

ça dépend de comment tu surcharges operator==


[:itm]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-07-2005 à 18:08:06   

Reply

Marsh Posté le 26-07-2005 à 19:55:35    

J'aurais besoin d'une autre formule de math, celle-ci, par contre, je n'ai aucune idée de son concept alors en pseudo-code ça doit faire ceci:
 
Supposons que j'ai la valeur numérique 16706 qui est en fait l'équivalent de 'AB' en ascii.
 
Prenon un exemple plus long, admettons 'ABCDEF' qui est égal à:
 
010000010100001001000011010001000100010101000110
 
qui vaut: 71752852194630
 
comment, au moment de la lecture d'un octet à la fois, ajouter leur valeur pour "construire" une notation simplifié comme 2^x + y qui serait = 71752852194630 ?
 
Puis ensuite, comment je pourrais prendre cette notation: 2^x + y pour refaire l'inverse ?
 
C'est-à-dire avoir quelque chose comme:
 
Z = portion de 2^x + y
 
calculer l'octet O de Z
 
retenir O
 
prendre une autre portion de 2^x + y (s'il en reste)
 
calculer l'octet O + 1
 
Puis à la fin de la boucle (quand il n'y a plus de portion) aditionner ou mettre ensemble tout les octets O pour que cela donne bien 'ABCDEF'
 
Merci.  :jap:

Reply

Marsh Posté le 26-07-2005 à 20:06:56    

Tu joues à quoi, là ? :heink:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-07-2005 à 20:07:54    

Ben j'expérimente des trucs, pourquoi ?


Message édité par NullDragon le 26-07-2005 à 20:08:38
Reply

Marsh Posté le 26-07-2005 à 20:17:42    

Ce que tu racontes est un peu une soupe.
 

Citation :

la valeur numérique 16706 qui est en fait l'équivalent de 'AB' en ascii.


Admettons, mais si c'est une supposition, c'est plutôt incongru.
 

Citation :

Prenon un exemple plus long, admettons 'ABCDEF' qui est égal à:
 
010000010100001001000011010001000100010101000110


J'aimais déjà pas le premier exemple...
 

Citation :

010000010100001001000011010001000100010101000110
 
qui vaut: 71752852194630
 
comment, au moment de la lecture d'un octet à la fois, ajouter leur valeur pour "construire" une notation simplifié comme 2^x + y qui serait = 71752852194630 ?


Changement de base arbitraire suivi de la partie 'math', hmmm... La lecture d'un octet à la fois alors que tu es passé de binaire à décimal ?
 
Cpa hyper clair. :heink:


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-07-2005 à 20:33:07    

AB = 16706 en valeur numérique je t'assures j'ai fait le calcul.
 
Ainsi que 'ABCDEF' = 010000010100001001000011010001000100010101000110
 
donc = 71752852194630
 
Si tu ne me crois pas, fait le calcul :)

Reply

Marsh Posté le 26-07-2005 à 20:50:43    

NullDragon a écrit :

AB = 16706 en valeur numérique je t'assures j'ai fait le calcul.
 
Ainsi que 'ABCDEF' = 010000010100001001000011010001000100010101000110
 
donc = 71752852194630
 
Si tu ne me crois pas, fait le calcul :)


Coco, j'ai fait le calcul mentalement et je vois que c'est ok, mais je pige rien aux restes de tes élucubrations.
 
Dire que "AB = 16706", c'est un raccourci qui n'a pas des masses de sens.
[:djswad]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-07-2005 à 20:53:04    

Ok :)
 
Mais qu'est-ce que tu ne comprends pas dans mon explication plus haut ?  :pt1cable:

Reply

Marsh Posté le 26-07-2005 à 20:53:46    

Rien.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 26-07-2005 à 21:10:31    

Euh ok,
 
dabord on sait que AB = 16706 vrai ?
 
alors si je décide que je veux écrire dans un fichier la valeur binaire 16706 il va m'écrire AB. Jusque là, ça va.
 
Mais supposons que je désire dabord changer mon nombre 16706 dans un format 2^x + y
 
donc on aurait: (2^14) + 322 = 16706
 
Mais je voudrais seulement travailler avec une notation courte 2^x + y au lieu du nombre, car dans le cas ou j'aurais un nombre de 5484411 .....e-308 1) c'est plus court à écrire sous la forme de 2^x + y et 2) c'est moins lourd en mémoire.
 
Maintenant je voudrais prendre une partie(décomposer) ma notation pour prendre une petite valeur pour le convertir graduellement à l'intérieur d'une boucle while pour pouvoir ravoir ma valeur 16706 de départ.

Reply

Marsh Posté le 26-07-2005 à 21:23:26    

ca sent vaguement les exos tout ca ... ou alors je suis parano, ou alors je n'ai pas saisi l'ironie ambiante du topic :??:

Reply

Marsh Posté le 26-07-2005 à 22:16:53    

Encore une question :)
 
Plus simple cette fois.
 
Comment trouver l'inverse d'un exposant ?
 
Par exemple 2^8 = 256
 
mais si on a un nombre x, admettons x = 135
 
x = 2^? reste y(si ce n'est pas juste)  :pt1cable:

Reply

Marsh Posté le 26-07-2005 à 22:42:01    

c'est la définition du logarithme...

Reply

Marsh Posté le 27-07-2005 à 10:16:30    

comprends pas tout a ce que tu veux faire mais la formule est simple en effet.
 
n est le nombre en notation decimale que tu veux transformer en 2^x+y
alors:
 x=partie entiere (ln(n)/ln(2))  
car d'apres la forme que tu souhaites il parait evident que tu desires des entiers pour x et y.
pour y:
 y=n-2^x
voilou
 
pour la reciproque, si tu as x et y, je vois pas trop la difficultée pour retrouver n!
 

Reply

Marsh Posté le 27-07-2005 à 17:03:30    

Euh..je n'ai pas très bien compris ton explication.  :pt1cable:  
 
Que veux dire (ln(n)/ln(2)) ?

Reply

Marsh Posté le 27-07-2005 à 17:12:04    

...

Reply

Marsh Posté le 27-07-2005 à 17:16:15    

Je cherches une autre formule de math..  :whistle:  
 
Je voudrais pouvoir calculer le nombre minimal d'octets à enlever X sur un nombre d'octets N. Car une fois X octets enlevé, j'ajoute toujours à ce qui reste de N un nombre de bits égal à son nombre d'octets qui reste. Donc par rapport à ce que je rajoute, je voudrais savoir le minimum que je dois enlever au départ pour ne pas en rajouter plus que ce que j'en ait enlevé.
 
Par exemple:
N: 1024 octets
X: j'enlève 24 octets
R: Reste 1000 octets et j'ajoute 1000 bits donc 1000/8
J: j'ajoute 1000/8 octets donc 125 octets.  
 
Ce n'est pas bon car j'en ait enlevé 24 et j'en ait rajouté 125.
 
Mais si j'en enlève 128 c'est correct car il reste 896, 896/8 = 112 donc là je suis gagnant.
 
je cherches une formule pour calculer le minimum pour ne pas avoir à "tatonner" à la main. :D

Reply

Marsh Posté le 27-07-2005 à 17:24:26    

Bon...
 
- Aucun rapport avec C++;
- Descriptions alambiquées;
- Niveau de math insuffisant par rapport aux réponses reçues;
 
Faudrait peut-être penser à arrêter les frais. :o


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 27-07-2005 à 17:28:10    

sircam a écrit :

Bon...
 
- Aucun rapport avec C++;
- Descriptions alambiquées;
- Niveau de math insuffisant par rapport aux réponses reçues;
 
Faudrait peut-être penser à arrêter les frais. :o


 
Qui te dit que je ne cherches pas à faire ça en C++  :??:  
 
Et je l'ai décris avec un exemple, on ne peut avoir mieux comme explications.
 
Et pour mon niveau de math, c'est pour cela que je poses des questions.
 
Merci.

Reply

Marsh Posté le 27-07-2005 à 17:32:06    

j'ai toujours rien compris sur le but à atteindre ...

Reply

Marsh Posté le 27-07-2005 à 17:40:40    

NullDragon a écrit :

Qui te dit que je ne cherches pas à faire ça en C++  :??:


Les intentions importent peu. Pour l'instant, tu ne fais que poser des questions de math sans rapport avec C++.
 

NullDragon a écrit :

Et je l'ai décris avec un exemple, on ne peut avoir mieux comme explications.


Heu... Un exemple plus clair ? [:autobot]
 

NullDragon a écrit :

Et pour mon niveau de math, c'est pour cela que je poses des questions.


Et tu arrives systématiquement à la conclusion que tu ne comprends pas... Peut-être t'attaques-tu à des problèmes trop difficiles ?
 
 
=> Je ne suis manifestement pas le seul à ne pas bien saisir ce que tu veux.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 27-07-2005 à 17:55:21    

si tu comprends pas la notation ln il faut commencer par aller a l'ecole mon petit ami
d'autant plus qu'au niveau de ton expression, sans vouloir etre rabat joie ou redire la meme chose que tout le monde ici present, JE NE COMPREND RIEN A CE QUE TU DIS!!!!!!
alors pour conclure et au risque de me repeter retourne a l'ecole


Message édité par sankukai8 le 27-07-2005 à 17:55:56
Reply

Marsh Posté le 27-07-2005 à 18:13:57    

C'est bon j'ai trouvé la formule moi-même.
 
((N - x) + ((N - x)/8) = N - 2
 
si N = 1024 ..
 
(1024 - x) + ((1024 - x)/8) = 1022
 
Mais je dois encore isoler le x, mais mes notions de math sont loin. Quelqu'un peut-il m'aider ?  :hello:  
 

Reply

Marsh Posté le 27-07-2005 à 19:27:52    

laisse tomber, on comprends rien à ce que tu veux faire ...
 
si tu sais pas résoudre une équation du premier degré ...
 
c'est quand tu veux pour expliquer de quoi tu as besoin, sinon aurevoir

Reply

Marsh Posté le 27-07-2005 à 19:29:19    

Ben tout ce que je veux c'est comprendre comment isoler x dans cette équation, c'est tout. Oubliez le reste.

Reply

Marsh Posté le 27-07-2005 à 19:44:26    

mais elle correspond à quelle réalité cette équation ? On oublie pas le  reste. T'a pas le niveau 4eme en maths, on aimerait savoir c'est quoi le problème initial.

Reply

Marsh Posté le 27-07-2005 à 21:30:16    

Je l'ai expliqué plus haut, je veux savoir le nombre d'octets minimal à enlever sur N octets.

Reply

Marsh Posté le 27-07-2005 à 21:41:37    

- Je veux savoir comment faire X.
- Comprends pas. Quel est le but, le problème ?
- Je veux savoir comment faire X.
- A quoi ça correspond ?
- Je l'ai expliqué, je vaux savoir comment faire X.
 
Typique du manque de compréhension de la langue française.  
 
LE MONSIEUR TE DEMANDE LE BUT, L4APPLICATION PRATIQUE, CONCRETE, LA CAUSE, LA RAISON. Pas ce que tu veux faire.


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 27-07-2005 à 22:54:04    

Si je comprends bien ce qu'il veut faire:

Code :
  1. 25000 - ((25000 X 0.5)/100) = Z
  2. Z - ((Z X 0.5)/100) = A
  3. A - ((B X 0.5)/100) = C


Si on pose X, le resultat, Z le nombre de départ et N le pourcentage

Code :
  1. X = Z - (Z*N)/100
  2. X = Z*(100-N)/100


si on continu:

Code :
  1. X2 = X*(100-N)/100
  2. X2 = Z*((100-N)/100)^2


Si n est le nombre d'itération:

Code :
  1. Xn = Z*((100-N)/100)^n


CQFD :lol:

Reply

Marsh Posté le 27-07-2005 à 22:55:08    

tes notions de maths ne sont pas loin, elles sont inexistantes.
la voila ta solution:

Citation :

((N - x) + ((N - x)/8) = N - 2


donne 9/8 * (N-x)=N-2
donc N-x= 8/9 (N-2)
donc x= N-8/9(N-2)=1/9N+16/9=1/9(N+16)
 pour rappel, c'est du vrai programme de 4eme, et je sais de quoi je parle. je vois pas comment tu peux programmer sans maitriser un tant soit peu le calcul de base.


Message édité par sankukai8 le 27-07-2005 à 22:56:15
Reply

Marsh Posté le 28-07-2005 à 08:08:20    

Hmmm, je cherches une façon de mettre cette boucle en une seule et simple formule. Pour ne pas avoir à faire de boucle.
 
C'est possible ?
 
 for (i=1;i<=n;i++)  
 {
  s+= (n-i+1)*i;
 }

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed