Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2025.0.0 - Français


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 :

\begin{eqnarray}
                \dot{y} = f(t,y), \hspace{3 mm} y(t_0) = y_0, \hspace{3 mm} y \in R^N
                \end{eqnarray}

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("Temps pour LSodar :",t);

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 - ycvodemax(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

  • CVode — CVode (abréviation de "C-language Variable-coefficients ODE solver") est un solveur numérique fournissant une méthode efficace et stable pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Ordinarires (EDOs). Il utilise BDF ou Adams comme méthode d'intégration, et des itérations fonctionnelles ou de Newton.
  • IDA — "Implicit Differential Algebraic equations system solver" est un solveur numérique fournissant une méthode efficace et stable pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Algebriques (EDAs).
  • Runge-Kutta 4(5) — Runge-Kutta est un solveur numérique fournissant une méthode explicite efficace pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Ordinarires (EDOs).
  • Dormand-Prince 4(5) — Dormand-Prince est un solveur numérique fournissant une méthode explicite efficace pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Ordinarires (EDOs).
  • Runge-Kutta Implicite 4(5) — Solveur numérique fournissant une méthode implicite efficace et stable pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Ordinarires (EDOs)
  • Crank-Nicolson 2(3) — Crank-Nicolson est un solveur numérique basé sur le schéma Runge-Kutta fournissant une méthode implicite efficace et stable pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Ordinaires (EDOs). Appelé par xcos.
  • DDaskr — "Double-precision Differential Algebraic equations system Solver with Krylov method and Rootfinding" : solveur numérique fournissant une méthode efficace et stable pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Algebriques (EDAs).
  • Comparaisons — Cette page compare les solveurs pour déterminer lequel est le mieux adapté au le problème étudié.
  • ode — solveur d'équations différentielles ordinaires
  • ode_discrete — ordinary differential equation solver, discrete time simulation
  • ode_root — ordinary differential equation solver with roots finding
  • odedc — discrete/continuous ode solver
  • dae — Solveur de système d'Equations Différentielles Algébriques

Bibliographie

ACM SIGNUM Newsletter, Volume 15, Parution 4, Décembre 1980, Pages 10-11 LSode - LSodi

Documentation Sundials

Historique

VersionDescription
5.4.1 LSodar ajouté
Report an issue
<< Solveurs Solveurs CVode >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 24 11:16:04 CEST 2024