Voici les solveurs implémentés par MATLAB.
ode45 est basé sur une formule explicite Runge-Kutta (4,5), la paire Dormand-Prince . Il est en une seule étape solveur - dans le calcul de y (tn), il faut seulement la solution à la suite précédentes point dans le temps, y (tn-1). En générale, ode45 est la meilleure fonction pour appliquer comme premier essai pour la plupart des problèmes .
L'ode23 est une implémentation d'une paire de Runge-Kutta explicite (2,3) de Bogacki et Shampine. Il peut être plus efficace que ode45 aux tolérances et en présence de rigidité modérée. Comme ode45, ode23 est un solveur en une étape.
L'ode113 est un solveur variable PECE Adams-Bashforth-Moulton. Il peut être plus efficace que ode45 à des tolérances strictes et lorsque la fonction de fichier ODE est particulièrement cher à évaluer. ode113 est un solveur multi-pas - il faut normalement les solutions à plusieurs points précédents pour calculer la solution actuelle .
Les algorithmes ci-dessus sont destinés à résoudre les systèmes non-rigides. Si elles apparaissent trop lentes, essayez l'une des solutions suivantes: .
ode15s est un solveur à ordre variable basé sur les formules de différentiation numérique (NDF). Optionnellement, il utilise les formules de différenciation vers l'arrière (BDF, également connu sous le nom de méthode Gear) qui sont généralement moins efficaces. Comme ode113, ode15s est un solveur multi-étapes. Essayez ode15s lorsque ode45 échoue, ou est très inefficace, et vous soupçonnez que le problème est raide, ou lors de la résolution un problème différentiel-algébrique.
ode23s est basé sur une formule Rosenbrock modifiée d'ordre 2. Comme il est un résolveur en une seule étape, il peut être plus efficace que ode15s à brut tolérances. Il peut résoudre certains types de problèmes rigides pour lesquels ode15s n'est pas efficace.
L'ode23t est une implémentation de la règle trapézoïdale utilisant un interpolant "libre" . Utilisez ce solveur si le problème n'est que modérément rigide et vous avez besoin d'une solution sans amortissement numérique . ode23t peut résoudre les DAE.
ode23tb est une implémentation de TR-BDF2, une implicite formule de Runge-Kutta avec une première étape qui est une étape de règle trapézoïdale et un second étage qui est une formule de différenciation arrière d'ordre deux. Par construction, la même matrice d'itération est utilisée pour évaluer les deux étages. Comme les odes23, ce solveur peut être plus efficace que les ode15 aux tolérances .
Arrière Euler est une méthode implicite. Vous devriez résoudre 'y = y (i) + h * f (x (i + 1), y)' à un moment donné. Je ne suis pas convaincu que tu le fais. – sigfpe
@ user207442, vérifiez les deux dernières lignes de la boucle 'for', c'est précisément ce qui se passe. – Jay
... il ressort que le problème est que je ne suis pas en train de résoudre mais d'estimer ... – m0s