salut a tous,
j'ai l'equation suivante: Int(Brut/1000)=146. Comment déterminer Brut?
Merci pour vos reponses.
Version imprimable
salut a tous,
j'ai l'equation suivante: Int(Brut/1000)=146. Comment déterminer Brut?
Merci pour vos reponses.
C'est pas des mathématiques élémentaires ça ?
-> Brut = 146*1000
Evidemment, la perte de précision du à la récupération de la partie entière est irrémmédiable ...
J'ai personnellement l'impression d'avoir répondu à côté, mais la question manque de précision ... ou de rapport avec delphi
je code en delphi
Voici l'equation complete:
150 0000=BRUT-0.036*BRUT-INT(BRUT/1000)*1000. alors si j'arrive a resoudre çapar exemple alors je pourrai resoudre la grande equation.Citation:
Int(Brut/1000)=146
je vais poser le problem autrement.
Int(130899/1000)*1000=130 000
comment obtenir 130 000 a partir de 130 899 sans passer par In ou par une fonction quelconque?
Mais quel est le rapport avec Delphi, c'est des maths !
Int te fait perdre la précision, donc en théorie retrouver brut est impossible ou en tout cas avec une marge d'erreur assez conséquente ....
EDIT : comme tu posèe le problème autrement, on peut y répondre autrement, ... et ce qui est intéressant c'est que cela n'a rien à voir
Voir la Fonction RoundTo(130899, 3); ça devrait fonctionner, dispo depuis D7 ou D6
Je suis d'accord c'est les maths. Mais je code en delphi.
justement je veux me passer des fonctions. Ceci me permettra de résoudre mon équation aisement.
Int renvoie la troncature. Int(x/1000)*1000 renvoie la troncature au millier le plus proche. L'équation Int(x/1000)*1000=130000 a donc pour solutions toutes les valeurs réelles comprises entre 130000 inclus et 131000 exclus (ex : 130574,52).
Les Fonctions Delphi produisent des arrondis !!! tu peux que juste les ignorés mais tu auras un calcul Faux, car Int n'a pas de réciproque, encore une fois c'est les BASES des mathématiques
Int(Brut/1000)=146 -> Brut = 146*1000
BRUT- 0.036 *BRUT - INT(BRUT/1000)*1000 = 150000
BRUT- 0.036 *BRUT = 150000 + INT(BRUT/1000)*1000
BRUT = 150000 + INT(BRUT/1000)*1000 / 0.964
BRUT - INT(BRUT/1000)*1000 / 0.964 = 150000 / 0.964
BRUT - BRUT / 0.964 = 150000 / 0.964
(BRUT * 0.964 + BRUT ) / 0.964 = 150000 / 0.964
BRUT * 1.964 / 0.964 = 150000 ...
bon après c'est des chiffres à virgule ... c'est lourd ... en tout cas le calcul est faux ! car la réciproque de "INT(BRUT/1000)*1000" donne une erreur d'arrondi ...
Faux.Citation:
Envoyé par ShaiLeTroll
Int(Brut/1000)=146 -> 146000 <= Brut < 147000
C'est faux, oui, je l'avais précisé dans mes deux messages, je voulais écrire une réponse pour donner une pseudo résolution d'équation, et je n'avais pas pensé à l'intervalle ... mais j'avais bien conscient de l'erreur, puisque je précisais que int n'avait pas de réciproque mathématique rendant la résolution peu fiable voire impossible !
Soit, j'ai été maladroit. Maintenant, une réponse assez drôle... ;)
La résolution d'une équation faisant intervenir une fonction en escalier est effectivement assez difficile, mais pas impossible. Il suffit de raisonner par intervalle.
Soit à résoudre : x - 0,036.x - 1000.E(x/1000) = 150000
E étant la fonction partie entière.
Je suppose x réel positif.
Soit n l'entier tel que l'arrondi au millier de x soit égal à 1000n (par exemple, pour x=154278, n=154).
En Delphi, n=Int(x/1000). En langage mathématique, n=E(x/1000).
On a donc par hypothèse : 1000n <= x < 1000(n+1), n entier naturel.
On peut aussi dire qu'on cherche les solutions dans l'intervalle [1000n ; 1000(n+1)[
L'équation devient alors :
x - 0.036 * x - 1000n = 150000
0,964x = 150000 + 1000n
x = (150000 + 1000n) / 0,964
Mais la validité de cette solution doit être vérifiée, car on a supposé 1000n <= x < 1000(n+1) !
Ce qui nous amène alors à la double inégalité suivante portant sur l'entier n (si on énumère les n possibles, on aura les x) :
1000n <= (150000 + 1000n) / 0,964 < 1000(n+1)
964n <= 150000 + 1000n< 964(n + 1)
L'inégalité de gauche est évidemment vérifiée. Celle de droite devient :
150000 + 1000n < 964n + 964
C'est-à-dire 36n < -149036, ce qui est impossible.
Donc l'équation n'a aucune solution positive ! :mrgreen:
Donc, soit il manque une parenthèse quelque part (ce qui ne serait pas étonnant, intuition de ma part...), soit le problème est mal posé.