-
Runge Kutta d'ordre 4
Voila je travaille sur la dynamique d'un laser solide pompé en continu. Deux equations differentielles couplées decrivent cette dynamique. Il se trouve que ma Range Kutta d'ordre 4 écrite en Fortran par moi meme (verifiée bien sure, sur un cas simple et tourne donc bien),celle ci fonctionne que pour un pas bien particulier et diverge pour d'autres plus grands. Je pensais résoudre ce probleme par une normalisation, mais celle ci n'a rien donnée. Pour trouver des résultats dans une echelle temporelle assez grande je suis obligé de faire tourner mon prgm sur 30 millions de points. d'ou un temps de calcul enorme et un temps d'importation en code ASCII pour tracer les graphiques enorme. En résumé des journées de boulot et des fichiers data impossibles a stocker (enfin si mais bcp de place).
Ma question est la suivante.: le pas de calcul a t'il une influence sur les résultats (les resultats peuvent il croitre infiniment) et comment le choisir sans allourdir les calculs qui le sont deja. Merci
Je vous signal que le pas est pris tres petit car le domaine ou je dois travailler est tres petit; de l'ordre de quelques micro-secondes.
-
Salut,
bien entendu que le pas d'intégration joue un rôle sur la solution finale. Le théorie des EDO dit "plus h tend vers 0 et plus ton erreur sera petite" (h étant le pas d'intégraton).
Typiquement, pour une RK d'ordre 4, l'erreur est en h^5 (je crois...)
Pour ma part, je résouds des EDO et mon pas d'intégration est < 10^{-9} s !!
Mais il y a plus astucieux : avoir un pas d'intégration variable : tu peux l'adapter en fonction de la raideur de ta pente.
Un bon solveur : CVOde ! Ce solveur (en Fortran ou C) est bien mieux que n'importe quel solveur de matlab !!
Pour tes données, tu peux les stocker en binaire sur ton DD. Tu gagneras un peu de place.