IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

equation avec ordres de grandeur différents


Sujet :

Algorithmes et structures de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut equation avec ordres de grandeur différents
    Bonjour tous,

    j'ai un petit soucis car je travail actuellement avec des ordres de grandeur très différent et j'aimerai savoir comment faire
    pour programmer ce que je souhaite faire.

    je souhaite programmer cette multiplication matricielle :
    ==> cf. PJ

    le soucis est que dans mon probleme j'ai des ordre de grandeur très différent !

    Par exemple :
    x_{10}=1e30
    x_{20}=0
    les valeur de b_1 et b_2 sont liées à ces valeurs de x
    si x_{10} est très grand c'est la meme chose pour b_1

    Ce que je cherche
    je cherche une petite technique mathématique pour ramener ceci à une equation qui manipule des ordres de grandeurs equivalent
    mais je ne sais pas trop comment faire sur ce cas simple.

    ps: voyez vous une astuce simple ? ou je dois faire du préconditionnement ? (je ne connais pas vraiment)

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    peut-être raisonner en pourcentage ??

    val min - max de x10
    val min - max de x20

    transformer tout en val-valmin/(val-max-valmin). Là tous tes coeffs seront entre 0 et 1.


    Une fois la solution trouvée, tu remets les bonnes valeurs :

    vraie valeur = val min + valeur*(valmax-valmin)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Si tes données sont des grandeurs physiques, tu choisis des unités mieux adaptées pour les exprimer, par exemple des nanosecondes ou des gigahertz.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci pour vos réponses.

    - je vais regarder si j'arrive à faire ceci avec les pourcentages car ça me semble une bonne solution

    - le changement d'unité je ne pense pas que ça revolve mon probleme :
    en fait j'ai une boite avec par exemple 10molecules et une autre 1e50 molecules et je ne peux peut pas faire vraiment autrement (ou je change l'unité d'une boite mais pas de l'autre.)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    peut-être raisonner en pourcentage ??
    val min - max de x10
    val min - max de x20
    transformer tout en val-valmin/(val-max-valmin). Là tous tes coeffs seront entre 0 et 1.
    Une fois la solution trouvée, tu remets les bonnes valeurs :
    vraie valeur = val min + valeur*(valmax-valmin)
    souviron j'ai beaucou ton idée mais j'ai un peu de mal à la mettre en place
    car je ne comprends pas vraiment tes notations, pourrais tu detailler un peu plus s'il te plait ?

    je te remercie

  6. #6
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par membreComplexe12 Voir le message
    le soucis est que dans mon probleme j'ai des ordre de grandeur très différent !
    Et alors? Concrètement, quel est le problème?
    Donne un exemple précis avec des valeurs pour qu'on comprenne.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    j'ai mon système qui va etre très mal conditionné si j'ai des ordres de grandeurs tres différent et donc une precision sur la solution mediocre ?

    ps : ici je n'ai pas presenté mon systeme sous forme classique car la matrice etait tres facile à inverser

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par membreComplexe12 Voir le message
    souviron j'ai beaucou ton idée mais j'ai un peu de mal à la mettre en place
    car je ne comprends pas vraiment tes notations, pourrais tu detailler un peu plus s'il te plait ?

    je te remercie
    Si l'on prend (je ne sais pas si c'est le cas) comme input tes x10 et x20...

    Ou quel que soit ce que tu as en entrée en fonction de ton nombre de molécules..

    Pour chaque entrée (dépendante) de x10, tu calcules d'abord le min et max. Puis tu remplaces ces valeurs par le pourcentage, en stockant le min et le max (pourcentage = (valeur-min)/(max - min)).

    Même chose pour les entrées () de x20..

    Là tu fais tes calculs avec que des quantités entre 0 et 1.

    Une fois tes calculs faits, pour avoir les bonnes valeurs de sortie, tu appliques la règle de trois inverse avec les min-max pour revenir dans le bon système.. (valeur = min + pourcentage*(max-min))

    ça revient au changement d'unité de FR119492 mais en faisant des unités relatives..



    Sinon, si la différence porte seulement sur le nombre (et pas les valeurs comme tu semblais le suggérer), alors tu remplaces chaque entrée par entrée/nombre, et tu multiplies chaque sortie par nombre..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par membreComplexe12 Voir le message
    j'ai mon système qui va etre très mal conditionné si j'ai des ordres de grandeurs tres différent et donc une precision sur la solution mediocre ?

    ps : ici je n'ai pas presenté mon systeme sous forme classique car la matrice etait tres facile à inverser
    Je ne comprends plus. Tu dois calculer un produit matrice-vecteur ou résoudre un système linéaire?

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Je crois que ce qu'il voulait dire au départ est que n'importe quel calcul (matriciel ou non) où les coeffs ont des écarts gigantesques peut être potentiellement biaisé, voire faux, à cause des problèmes numériques.. (arrondis, comparaisons..)

    Ce qui peut être amplifié par/pour des méthodes style pivot ou autre "convergence" ou autre..

    Si j'ai bien compris....
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #11
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Je crois que ce qu'il voulait dire au départ est que n'importe quel calcul (matriciel ou non) où les coeffs ont des écarts gigantesques peut être potentiellement biaisé, voire faux, à cause des problèmes numériques.. (arrondis, comparaisons..)
    Par définition, toutes les opérations entre flottants sont potentiellement biaisées, et rares sont les cas où les calculs sont exacts. C'est totalement indépendant de la présence de contrastes entre les flottants impliqués. La manière dont ces erreurs d'arrondis sont amplifiées au cours des calcul dépend bien évidemment des données ET de l'algorithme. Résoudre un système linéaire et calculer un produit matrice-vecteur, ce n'est pas la même chose du point de vue de la stabilité des calculs.

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Par définition, toutes les opérations entre flottants sont potentiellement biaisées, et rares sont les cas où les calculs sont exacts. C'est totalement indépendant de la présence de contrastes entre les flottants impliqués.
    A ce propos: Why was Pinball removed from Windows Vista?.

    We had several million lines of code still to port, so we couldn't afford to spend days studying the code trying to figure out what obscure floating point rounding error was causing collision detection to fail. We just made the executive decision right there to drop Pinball from the product.
    (désolé pour ce léger hors-sujet)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    Par définition, toutes les opérations entre flottants sont potentiellement biaisées, et rares sont les cas où les calculs sont exacts. C'est totalement indépendant de la présence de contrastes entre les flottants impliqués. La manière dont ces erreurs d'arrondis sont amplifiées au cours des calcul dépend bien évidemment des données ET de l'algorithme. Résoudre un système linéaire et calculer un produit matrice-vecteur, ce n'est pas la même chose du point de vue de la stabilité des calculs.
    oui et non...

    Dès qu'une addition/soustraction est impliquée, ça se sent...

    Vu que (par exemple en 32 bits) la précision double est de 10^-16, si l'on additionne 1 et 10^-20, on aura toujours 1, et même si on additionne 1 et 10^-17

    Donc, dès qu'une addition ou soustraction est impliquée, on a fortement intérêt à avoir des termes du "même ordre", ou tout au moins rentrant dans le cadre de la précision informatique.

    On ne peut donc pas dire que c'est "totalement indépendant". Et comme de nombreuses opérations matricielles ou vectorielles reposent sur des additions/soustracttions, il est très loin d'être absurde de vouloir avoir un ordre de grandeur comparable, ou tout au moins d'un ordre largement supérieur à la précision intrinsèque..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  14. #14
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    oui et non...

    Dès qu'une addition/soustraction est impliquée, ça se sent...

    Vu que (par exemple en 32 bits) la précision double est de 10^-16, si l'on additionne 1 et 10^-20, on aura toujours 1, et même si on additionne 1 et 10^-17

    Donc, dès qu'une addition ou soustraction est impliquée, on a fortement intérêt à avoir des termes du "même ordre", ou tout au moins rentrant dans le cadre de la précision informatique.

    On ne peut donc pas dire que c'est "totalement indépendant". Et comme de nombreuses opérations matricielles ou vectorielles reposent sur des additions/soustracttions, il est très loin d'être absurde de vouloir avoir un ordre de grandeur comparable, ou tout au moins d'un ordre largement supérieur à la précision intrinsèque..
    En additionnant deux flottants, tu restes à la précision machine et si tu additionnes un très grand et un très petit nombre et que la précision machine ne te convient pas, c'est qu'il te faut un type de flottant plus précis, voire la possibilité de faire de la précision mixte ou exacte. Reprocher à des doubles de ne pas fournir un meilleur ordre de précision que 1e-16 lorsqu'on ajoute deux nombres n'a pas de sens. Si tu choisis d'utiliser des doubles, c'est justement pour être sûr que l'erreur sera au plus de cet ordre en faisant ton addition. Et cet ordre de précision est bien totalement indépendant de la grandeur ou de la petitesse des nombres additionnés. J'espère que c'est clair parce que je n'ai aucune envie de débattre là-dessus.

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Points : 877
    Points
    877
    Par défaut
    merci pour vos messages je crois que je m'étais un peu emmêlé les pinceaux avec système linéaire.

    A+

  16. #16
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    oui c'est à dire ??

    Citation Envoyé par Aleph69 Voir le message
    J'espère que c'est clair parce que je n'ai aucune envie de débattre là-dessus.
    Non c'est pas clair, mais moi non plus j'ai pas envie de débattre là-dessus

    Joyeux Noel à tous..
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. numérique: ordre de grandeur différents
    Par membreComplexe12 dans le forum Mathématiques
    Réponses: 4
    Dernier message: 13/09/2013, 00h38
  2. Réponses: 3
    Dernier message: 24/09/2010, 01h03
  3. autoscale d'un graphique avec courbes de différents ordre de grandeur
    Par oliv27400 dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 28/06/2010, 14h04
  4. Réponses: 8
    Dernier message: 09/03/2005, 10h47
  5. UNION de deux SELECT avec nombre d'arguments différents
    Par orus8 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/07/2004, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo