Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
LSodar
LSodar (abréviation de "Livermore Solver for Ordinary Differential equations, with Automatic method switching for stiff and nonstiff problems, and with Root-finding") est un solveur numérique fournissant une méthode efficace et stable pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Ordinaires (EDOs).
Description
Appelé par xcos, LSodar (abréviation de "Livermore Solver for Ordinary Differential equations, with Automatic method switching for stiff and nonstiff problems, and with Root-finding") est un solveur numérique fournissant une méthode efficace et stable pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Ordinaires (EDOs) de la forme :
LSodar est similaire à CVode sur de nombreux points:
- Son pas de temps est variable,
- Il est capable d'utiliser les méthodes d'intégration BDF et Adams,
- BDF et Adams étant des méthodes implicites stables, LSodar convient aussi bien à des problèmes raides que non-raides,
- Ils recherchent tous deux des racines sur l'intervalle.
La principale différence est que LSodar est automatisé, et choisit lui-même entre BDF et Adams, en vérifiant la raideur du problème à chaque pas.
Si le pas est considéré raide, alors BDF (avec ordre max = 5) est utilisé et la méthode de Newton modifiée 'Chord' iteration est sélectionnée.
Sinon, le programme utilise l'intégration d'Adams (avec ordre max = 12) et des itérations fonctionnelles (Functional).
La détection de raideur est effectuée par tentatives de pas et comparaison avec chaque méthode.
D'abord, si nous sommes actuellement en mode Adams et l'ordre est supérieur à 5, alors on considère le problème comme non-raide et on poursuit avec Adams.
Les vingt premiers pas utilisent la méthode Adams / Functional. Ensuite, LSodar calcule le pas idéal avec chaque méthode. Si le gain est d'au moins ratio = 5, alors la méthode actuelle est changée (Adams / Functional pour BDF / Chord Newton ou vice-versa).
Après chaque changement, LSodar passe vingt étapes, puis recommence à calculer les pas à chaque étape.
Une telle stratégie implique évidemment un ajout de calculs si la raideur du système est connue, mais est très efficace sur des problèmes qui requièrent une précision différenciée. Par exemple, les problèmes sensibles aux discontinuités.
Concernant la précision, les deux méthodes d'intégration/itération étant proches de celles de CVode, les résultats sont très similaires.
Exemples
Le bloc intégrale retourne son état continu, on peut l'évaluer avec LSodar en lançant l'exemple :
// Import du diagramme et réglage du temps final loadScicos(); loadXcosLibs(); importXcosDiagram("SCI/modules/xcos/examples/solvers/ODE_Example.zcos"); scs_m.props.tf = 5000; // Sélection de LSodar scs_m.props.tol(6) = 0; // Lancement du chrono, de la simulation et affichage du temps tic(); try xcos_simulate(scs_m, 4); catch disp(lasterror()); end t = toc(); disp(t, "Temps pour LSodar :");
La console Scilab affiche :
Temps pour LSodar: 9.546
Maintenant, dans le script suivant, on compare la différence de temps entre LSodar et CVode en lançant l'exemple avec les cinq solveurs tour à tour : Ouverture du script
Temps pour LSodar : 6.115 Temps pour BDF / Newton : 18.894 Temps pour BDF / Functional : 18.382 Temps pour Adams / Newton : 10.368 Temps pour Adams / Functional : 9.815
Ces résultats montrent que pour un problème non-raide, à même précision demandée, LSodar est significativement plus rapide. D'autres tests ont montré la proximité des résultats. En effet, on trouve que l'écart entre les solutions de LSodar et CVode est de l'ordre de la plus haute tolérance ( ylsodar - ycvode ≈ max(reltol, abstol) ).
Les solveurs d'EDO à pas variable ne sont pas appropriés pour des applications temps réel déterministes car le surplus de calcul au passage d'un pas de temps varie au cours de l'application.
Voir Aussi
Bibliographie
ACM SIGNUM Newsletter, Volume 15, Parution 4, Décembre 1980, Pages 10-11 LSode - LSodi
Histoire
Version | Description |
5.4.1 | LSodar ajouté |
Report an issue | ||
<< Solveurs | Solveurs | CVode >> |