J'essaie de résoudre une équation du type:
Où a un pôle simple à 0 , pour les N valeurs propres et vecteurs propres les plus petits . Les conditions aux limites sont: ψ ( 0 ) = 0 et ψ ( R ) = 0 , et je ne regarde que la fonction sur ( 0 , R ] .
Cependant, si je fais une méthode de différence finie très simple et uniformément espacée, la plus petite valeur propre est très inexacte "première valeur propre" devient la seconde, mais reste médiocre).
Qu'est-ce qui affecte la précision d'un tel schéma de différences finies? Je suppose que la singularité est à l'origine du problème et qu'une grille inégalement espacée améliorerait considérablement les choses. Mais peut-être qu'un schéma de différence d'ordre supérieur l'améliorerait davantage? Comment décidez-vous (ou est-ce simplement "essayez les deux et voyez")
note: mon schéma de différence finie est tridiagonal symétrique où les 3 diagonales sont:
la source
Réponses:
Si vous souhaitez augmenter la précision d'un schéma de différences finies, vous pouvez toujours essayer d'augmenter le degré de votre pochoir. Cependant, sur des points équidistants, cela peut conduire à des instabilités numériques. Pour éviter ces problèmes et toujours obtenir une grande précision, je suggère d'utiliser des méthodes spectrales .
Si votre problème a des pôles fixes, vous pouvez essayer de les contourner en divisant votre domaine et en résolvant deux problèmes couplés.
chebgui
chebgui
Mise à jour
Si vous voulez résoudre ce problème sans trop entrer dans Chebfun, tous les détails devraient être dans le chapitre 9 du livre de Nick Trefethen " Les méthodes spectrales dans Matlab ".
la source
Bien sûr, si vous faites déjà des éléments finis, vous pourriez aussi bien investir dans l'utilisation d'éléments d'ordre supérieur qui ne sont pas beaucoup plus difficiles en 1d non plus.
la source