Soutenez-nous
Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 16 sur 16
  1. #1
    Membre chevronné
    Inscrit en
    février 2010
    Messages
    1 923
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 1 923
    Points : 776
    Points
    776

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 134
    Points : 12 719
    Points
    12 719

    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/Modérateur

    Homme Profil pro Jean-Marc Blanc
    Comme retraité, des masses
    Inscrit en
    avril 2007
    Messages
    2 926
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Marc Blanc
    Âge : 73
    Localisation : Suisse

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

    Informations forums :
    Inscription : avril 2007
    Messages : 2 926
    Points : 4 474
    Points
    4 474

    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 chevronné
    Inscrit en
    février 2010
    Messages
    1 923
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 1 923
    Points : 776
    Points
    776

    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 chevronné
    Inscrit en
    février 2010
    Messages
    1 923
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 1 923
    Points : 776
    Points
    776

    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 Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    mars 2010
    Messages
    1 175
    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 175
    Points : 1 531
    Points
    1 531

    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 chevronné
    Inscrit en
    février 2010
    Messages
    1 923
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 1 923
    Points : 776
    Points
    776

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 134
    Points : 12 719
    Points
    12 719

    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 Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    mars 2010
    Messages
    1 175
    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 175
    Points : 1 531
    Points
    1 531

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 134
    Points : 12 719
    Points
    12 719

    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 Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    mars 2010
    Messages
    1 175
    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 175
    Points : 1 531
    Points
    1 531

    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/Modérateur
    Avatar de pseudocode
    Homme Profil pro Xavier Philippeau
    Architecte système
    Inscrit en
    décembre 2006
    Messages
    9 962
    Détails du profil
    Informations personnelles :
    Nom : Homme Xavier Philippeau
    Âge : 41
    Localisation : France, Hérault (Languedoc Roussillon)

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

    Informations forums :
    Inscription : décembre 2006
    Messages : 9 962
    Points : 15 080
    Points
    15 080

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 134
    Points : 12 719
    Points
    12 719

    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 Expert
    Homme Profil pro
    Chercheur
    Inscrit en
    mars 2010
    Messages
    1 175
    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 175
    Points : 1 531
    Points
    1 531

    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 chevronné
    Inscrit en
    février 2010
    Messages
    1 923
    Détails du profil
    Informations forums :
    Inscription : février 2010
    Messages : 1 923
    Points : 776
    Points
    776

    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 Confirmé Sénior

    Inscrit en
    janvier 2007
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : janvier 2007
    Messages : 10 134
    Points : 12 719
    Points
    12 719

    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •