|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre chevronné
![]() Inscription : février 2010 Messages : 1 799 ![]() |
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) |
|
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 594 ![]() |
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 |
|
|
10
|
|
|
#3 |
![]() ![]() Jean-Marc Blanc Inscription : avril 2007 Messages : 2 840 ![]() |
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) |
|
|
10
|
|
|
#4 |
|
Membre chevronné
![]() Inscription : février 2010 Messages : 1 799 ![]() |
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.) |
|
|
00
|
|
|
#5 | |
|
Membre chevronné
![]() Inscription : février 2010 Messages : 1 799 ![]() |
Citation:
car je ne comprends pas vraiment tes notations, pourrais tu detailler un peu plus s'il te plait ? je te remercie |
|
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
|
|
|
00
|
|
|
#7 |
|
Membre chevronné
![]() Inscription : février 2010 Messages : 1 799 ![]() |
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 |
|
|
00
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 594 ![]() |
Citation:
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 |
|
|
|
10
|
|
|
#9 |
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
Je ne comprends plus. Tu dois calculer un produit matrice-vecteur ou résoudre un système linéaire?
|
|
|
00
|
|
|
#10 |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 594 ![]() |
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 |
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
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.
|
|
|
00
|
|
|
#12 | ||
![]() ![]() Xavier PhilippeauArchitecte système Inscription : décembre 2006 Messages : 9 819 ![]() |
Citation:
Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||
|
00
|
|
|
#13 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 594 ![]() |
Citation:
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 |
|
|
|
00
|
|
|
#14 | |
|
Membre Expert
![]() Chercheur Inscription : mars 2010 Messages : 1 143 ![]() |
Citation:
|
|
|
|
10
|
|
|
#15 |
|
Membre chevronné
![]() Inscription : février 2010 Messages : 1 799 ![]() |
merci pour vos messages je crois que je m'étais un peu emmêlé les pinceaux avec système linéaire.
A+ |
|
|
00
|
|
|
#16 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 9 594 ![]() |
oui c'est à dire ??
Citation:
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 |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com