Bonjour, J'ai un petit souci que je n'arrive pas à résoudre avec la bibliothèque odeint (qui permet de résoudre un système d'équations différentielles) de boost (version 1.55). En fait, j'arrive à résoudre le système, mais je n'obtiens pas le même résultat sous linux et sous windows (les deux étant en 64 bits). Sous linux, le programme sort même parfois la valeur NaN alors que ça fonctionne très bien sous windows. Voilà un exemple de code qui ne fonctionne pas :
Pour la compilation, je ne mets aucune option particulière mis à part le chemin vers boost. Sous linux, j'ai essayé avec gcc 4.1,4.4 et 4.8 et aussi icc, le résultat est le même : y[0] vaut NaN à la fin. Sous windows j'ai compilé avec mingw 4.7 et 4.8 et y[0] vaut environ 105. Si je mets 1E-14 en précision (au lieu de 1E-15), ça fonctionne aussi sous linux, mais je n'obtiens pas tout-à fait les mêmes valeurs : par exemple y[4] vaut 542116.37 sous linux et 542116.52 sous windows... Idem avec 1E-6.
Quelqu'un aurait-il une idée sur la question? Merci!
Marsh Posté le 06-07-2014 à 14:24:01
Bonjour,
J'ai un petit souci que je n'arrive pas à résoudre avec la bibliothèque odeint (qui permet de résoudre un système d'équations différentielles) de boost (version 1.55).
En fait, j'arrive à résoudre le système, mais je n'obtiens pas le même résultat sous linux et sous windows (les deux étant en 64 bits). Sous linux, le programme sort même parfois la valeur NaN alors que ça fonctionne très bien sous windows.
Voilà un exemple de code qui ne fonctionne pas :
Pour la compilation, je ne mets aucune option particulière mis à part le chemin vers boost.
Sous linux, j'ai essayé avec gcc 4.1,4.4 et 4.8 et aussi icc, le résultat est le même : y[0] vaut NaN à la fin.
Sous windows j'ai compilé avec mingw 4.7 et 4.8 et y[0] vaut environ 105.
Si je mets 1E-14 en précision (au lieu de 1E-15), ça fonctionne aussi sous linux, mais je n'obtiens pas tout-à fait les mêmes valeurs : par exemple y[4] vaut 542116.37 sous linux et 542116.52 sous windows... Idem avec 1E-6.
Quelqu'un aurait-il une idée sur la question?
Merci!