Méthodes numériques pour les ODE rs discontinus

15

quelles sont les méthodes de pointe pour la solution numérique des ODE à côté droit discontinu? Je suis surtout intéressé par les fonctions du côté droit par morceaux, par exemple le signe.

J'essaie de résoudre l'équation d'un type suivant:

X˙=vv˙={(|Fexterne|-|Ffriction|)signe(Fexterne):|Fexterne|<|Ffriction|0:autrement
Andrey Shevlyakov
la source
Salut @AndreyShevlyakov et bienvenue sur Scicomp! Y a-t-il une classe particulière d'ODE qui vous intéresse?
Paul
Salut Paul! Oui, j'essaie actuellement de mettre en œuvre une sorte de modèle de friction bâton-glissement.
Andrey Shevlyakov
Pourriez-vous intégrer les équations que vous souhaitez résoudre dans votre question? Cela vous aidera à affiner les méthodes particulières applicables à votre problème.
Paul
J'ai ajouté un exemple au message
Andrey Shevlyakov
1
Lorsque je travaillais sur ACSL, il comprenait un root-finder, vous pouvez donc le faire rechercher le moment où la vélocité est égale à zéro, puis recommencer à partir de ce point avec les nouveaux rhs.
Mike Dunlavey

Réponses:

13

Voir le nouveau livre (2011) de David Stewart sur ce sujet, Dynamics with Inequality: Impacts and Hard Constraints . Les problèmes de frottement coulombien sont mentionnés à plusieurs reprises dans les chapitres d'analyse.

Le chapitre 8 est consacré aux méthodes numériques pour les ODE et DAE non lisses. Il préconise principalement des méthodes Runge-Kutta totalement implicites avec un traitement spécial de la non-douceur. Remarque Section 8.4.4 qui souligne que si vous ne localisez pas avec précision les points de non-lissage, toutes les méthodes se dégradent au premier ordre de précision , donc Euler implicite (avec des modifications pour la non-douceur) est populaire dans la pratique. En outre, les solutions de problèmes avec les inégalités de dimension infinie ne sont généralement pas lisses par morceaux, par conséquent , la théorie ne fournit que O ( h 1 / 2 ) la convergence, bien que dans la pratique, O ( h )O(h)O(h1/2)O(h) est souvent observée.

Jed Brown
la source
Grand merci! Savez-vous si des implémentations sont disponibles quelque part?
Andrey Shevlyakov
Pas que je sache, mais la mise en œuvre de schémas simples ne devrait pas être trop difficile si vous avez un solveur pour les inégalités variationnelles statiques.
Jed Brown
2

Comme Mike Dunlavey l'a déjà souligné dans un commentaire, cela se fait souvent en utilisant des fonctions dites de passage par zéro , c'est-à-dire des fonctions qui passent de > 0 à < 0 (ou vice versa) lorsque le RHS a une discontinuité.g(t,X(t))R>0<0

Par exemple, si vous avez une masse mobile avec un bloc, la distance entre la masse et le bloc peut être utilisée comme une fonction de passage à zéro.

De nombreux solveurs ODE (par exemple SUNDIALS CVODE) vérifient automatiquement si l'une des fonctions de passage par zéro a changé de signe au cours du dernier pas de temps. Si tel est le cas, une méthode de recherche de racine est utilisée pour déterminer l'emplacement exact de la racine. Le solveur peut ensuite être redémarré à cette position particulière. Cela se fait soit automatiquement par le solveur lui-même, soit manuellement par le code appelant.

Florian Brucker
la source
Aux fins de recherche: on peut également parler de "lieu de l'événement"; Hairer / Nørsett / Wanner a une belle discussion à ce sujet.
JM