Bonjour à tous,
Dans un programme je dois résoudre une équation differentielle de type
y=f(y,t).
Pour ce faire je me suis tourné vers les différents solver disponible en fortran.
J'ai essayé rkf45 qui ne semble pas tt a fait approprié pour mon problème. (trop d'évaluations)
Une alternative qui semble intéressante et efficace est lsoda.
La routine demande les arguments suivant:
Mon problème vient de JAC qui est dit optionnel si JT vaut 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SUBROUTINE DLSODA (F, NEQ, Y, T, TOUT, ITOL, RTOL, ATOL, ITASK, 1 ISTATE, IOPT, RWORK, LRW, IWORK, LIW, JAC, JT) EXTERNAL F, JAC INTEGER NEQ, ITOL, ITASK, ISTATE, IOPT, LRW, IWORK, LIW, JT DOUBLE PRECISION Y, T, TOUT, RTOL, ATOL, RWORK DIMENSION NEQ(*), Y(*), RTOL(*), ATOL(*), RWORK(LRW), IWORK(LIW)
JAC est une matrice jacobienne et je ne veux pas la fournir au programme, si JT vaut 2, la matrice jacobienne est calculée par une subroutine de DLSODA.
Dans la documentation il est bien écrit que JAC est optionnel et que si on ne souhaite pas fournir de matrice jacobienne il suffit d'envoyer " a dummy argument".
C'est la que je suis perdu, pour moi un dummy est un argument qu'on passe a une fonction, ou subroutine. Alors la je veux bien donner un argument mais quoi?
Voici un lien vers la subroutine qui contient la documentation.
http://www.shocksolution.com/math_to...cs/dlsoda.html
Si quelqu'un pouvait m'aider je sèche...
OJ
Partager