Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Português - 日本語 - Русский

Please note that the recommended version of Scilab is 6.0.0. This page might be outdated.
See the recommended documentation of this function

Aide de Scilab >> Xcos > Solveurs > LSodar

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 - 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.

Bibliographie

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

Documentation Sundials

Histoire

VersionDescription
5.4.1 LSodar ajouté
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 02 13:54:43 CEST 2014