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


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

Description

Appelé par xcos, Dormand-Prince est un solveur numérique fournissant une méthode explicite efficace pour résoudre des Problèmes à Valeur Initiale 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}

CVode et IDA utilisent un pas variable dans l'intégration.

Le défaut de cela est l'imprévisibilité du temps de calcul. Avec Runge-Kutta, on ne s'adapte pas à la complexité du problème, mais on garantit un temps de calcul stable.

Cette méthode est explicite, donc non concernée par les itérations fonctionnelles ou de Newton, et est déconseillée pour les problèmes raides.

C'est une amélioration de la méthode d'Euler, qui approxime yn+1 en tronquant le développement de Taylor.

Par convention, pour utiliser des pas fixes, le programme commence par calculer un pas h qui approche le paramère de simulation max step size.

Une différence notable de Runge-Kutta par rapport à Sundials est qu'il calcule jusqu'à la septième dérivée de y, alors que les autres n'utilisent que des combinaisons linéaires de y et y'.

Ici, la valeur suivante yn+1 est déterminée par la valeur actuelle yn plus la moyenne pondérée de six incréments, où chaque incrément est le produit du pas, h, et une estimation de la pente spécifiée par la fonction f(t,y) :

  • k1 est l'incrément basé sur la pente au début de l'intervalle, utilisant yn (méthode d'Euler),
  • k2, k3, k4 et k5 sont les incréments basés sur la pente à repectivement 0.2, 0.3, 0.8 et 0.9 de l'intervalle, s'utilisant mutuellement,
  • k6 est l'incrément basé sur la pente à la fin de l'intervalle, utilisant des combinaisons des autres ki.

On peut voir qu'avec les ki, on progresse dans les dérivées de yn . Dans le calcul des ki, on utilise délibérément des coefficients qui donnent une erreur en O(h5) à chaque pas.

L'erreur totale est donc en nombre de pas * O(h5) . Et puisque par définition nombre de pas = taille de l'intervalle / h, l'erreur totale est en O(h4) .

Cette analyse d'erreur a baptisé la méthode Dormand-Prince 4(5): O(h5) par pas de temps, O(h4) au total.

Bien que le solveur fonctionne bien pour max step size jusqu'à 10-3 , des erreurs d'arrondi surviennent parfois quand l'on approche 4*10-4 . En effet, le scindage de l'intervalle ne peut pas être effectué correctement et l'on obtient des résultats imprévisibles.

Exemples

Le bloc intégrale retourne son état continu, on peut l'évaluer avec Dormand-Prince 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 Dormand-Prince et réglage de la précision
scs_m.props.tol(6) = 5;
scs_m.props.tol(7) = 10^-2;

// 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 Dormand-Prince :", t);

La console Scilab affiche :

Temps pour Dormand-Prince:
 9.197
            

Maintenant, dans le script suivant, on compare la différence de temps entre Dormand-Prince et CVode en lançant l'exemple avec les cinq solveurs tour à tour : Open the script

Temps pour BDF / Newton :
 18.894

Temps pour BDF / Functional :
 18.382

Temps pour Adams / Newton :
 10.368

Temps pour Adams / Functional :
 9.815

Temps pour Dormand-Prince :
 7.842
            

Ces résultats montrent que pour un problème non-raide, pour à peu près la même précision demandée et en forçant la même taille de pas, Dormand-Prince est plus rapide.

Voir Aussi

  • 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).
  • 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).
  • 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
  • impl — differential algebraic equation

Bibliographie

Journal of Computational and Applied Mathematics, Volume 15, Parution 2, 2 Juin 1986, Pages 203-211 Dormand-Prince Method

Documentation Sundials

Histoire

VersionDescription
5.4.1 Dormand-Prince 4(5) ajouté
Report an issue
<< Runge-Kutta 4(5) Solveurs Implicit Runge-Kutta 4(5) >>

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:
Mon Jun 17 17:52:33 CEST 2024