Moyenne pondérée au dessus du max
Réponses à toutes vos questions du CP à la 3ème
par KeketteStyle » 30 Juin 2017, 16:53
Bonjour, j'essaie de calculer une moyenne pondérée avec 3 points mais le résultat que j'obtiens dépasse le max de la valeur !
Je m'explique, j'ai 3 points :
100 | 100 | 100
15.7890789456456 | 5.1238739524789 | 10.4566167591291
La valeur est en % et les coefficients sont en réalités des distances (m). J'aimerai que la distance la plus petite (5,12.. ici) soit le coefficient le plus fort. Donc j'applique à chacune des distance 1/x pour trouver leur inverse.
Ce qui donne : (100*1/5.1238739524789 + 100 * 1/15.7890789456456 + 100* 1/10.4566167591291) / (1/5.1238739524789 + 1/15.7890789456456 + 1/10.4566167591291) = 100.00000000000001
Pourquoi ce 1 à la fin ? Peu importe les distances, je devrais trouver 100% non ?
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 13:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 30 Juin 2017, 18:13
Les nombres réels des ordinateurs et calculatrices sont stockés et calculés en base 2 sur 32 ou 64 bits pour être affichés en base 10.
Ils arrondissent les nombres.
Ils calculent souvent entre 15 et 19 chiffres suivant la norme utilisée puis arrondissent 'au mieux' en n'affichent pas le dernier chiffre
si des arrondis se font 'par excès', le résultat peut différer de celui attendu
Les calculettes ont des astuces pour les calculs de fraction et de racine carré, mais ne font pas de miracle sur des divisions de réels.
par KeketteStyle » 03 Juil 2017, 10:46
Tu as tout de suite cerné le problème ! Mon calcul est réalisé sur une application. Je pourrais arrondir pour arriver a 100 tout rond mais dans certains cas je ne dois pas arrondir car j'ai besoin de beaucoup de précision !
Une solution ?
-
pascal16
- Membre Légendaire
- Messages: 6663
- Enregistré le: 01 Mar 2017, 13:58
- Localisation: Angoulème : Ville de la BD et du FFA. gare TGV
-
par pascal16 » 03 Juil 2017, 11:23
on parle de 15 chiffres significatifs quand même, soit un millionième de milliardième !
C'est la précision des nombres entrés qui va faire la précision finale. N'hésite pas à tronquer le résultat de tes fractions ! (on peut même étudier les erreurs et limiter les calculs en fonction de la précison maximale qu'on peut obtenir)
Sol 1 :
si les nombres entré sont précis au cent-millième, on tronque les calculs au 10 millionième (tu tronques tes résultats de fraction), les calculs finaux donnent alors 100%.
Les calculatrices d'écolier tronques fortement : 0.333333333333333xy est affiché 1/3 quelque soit les valeurs x et y.
Sol 2 :
comme tu utilises des 1/x, passer en fraction peut donner des calculs exacts. Le codage 'entier long' est sur 32 bits, donc limité à 16 milliards, soit encore 15 chiffres significatifs.
Sol 3 :
dans small basic, et python/décimal, il y a une classe de calcul en décimal qui utilise 30 chiffres significatifs
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 49 invités