Bonjour tt le monde,
SVP qqn aurait-il une idée sur la résolution de l'équation ci-dessous à l'aide de la méthode des différences finies ?
a * d²u /dx² + b * du/dx + c*u = 0 avec x appartenant à [0,L].
Merci de votre aide
-----
Bonjour tt le monde,
SVP qqn aurait-il une idée sur la résolution de l'équation ci-dessous à l'aide de la méthode des différences finies ?
a * d²u /dx² + b * du/dx + c*u = 0 avec x appartenant à [0,L].
Merci de votre aide
Bonjour,
D'après ce que je comprend, il s'agit d'une équation différentielle homogène de second ordre à coefficients constants. Il y a donc une procédure pour trouver l'expression des solutions analytiques (il y en a une infinité).
Si vous souhaitez la résoudre par la méthode des différences finies, il vous faut discrétiser les dérivées premières et secondes (voyez par exemple si wikipédia). Cependant, il vous faut aussi les conditions frontières.
Bonjour Paraboloide_Hyperbolique,
Merci de votre réponse. Effectivement, je voudrais résoudre l'équation par la méthode des différences finies et il y'a bien des conditions frontières que j'avais oublié de mentionner.
Voici ce que j'ai fait jusqu'à présent, mais je bloque sur l'inversibilité de la matrice A.
Ok, je vois que vous avez déjà fait une bonne partie du travail.
Il me semble qu'il y a juste une petite confusion dans les indices et dans l'application des conditions frontières dans le modèle différences finies.
Pour plus de clarté, je suppose que vous utilisez N points de discrétisations numéroté de 1 à N. Dans ce cas, posons les conditions frontières comme vous l'avez fait, mais en changeant légèrement la notation afin d'éviter une confusion et .
Par ailleurs, on a alors le pas de discrétisation qui vaut .
Avec les conventions ci-dessus, votre équation discrète me semble à priori correcte (pas le temps de vérifier en profondeur). Dans la représentation matricielle de votre équation, le membre de droite ne contient pas d'inconnue, mais des zéros sauf pour le premier et le dernier termes qui valent respectivement et
Merci encore une fois. Juste une question concernant la matrice A : je vois bien qu'elle est tridiagonale, mais comment faire pour m'assurer qu'elle est inversible ?
Je dirais que l'on peut s'en assurer indirectement (et sans calcul) en constatant que l'équation différentielle et les conditions initiales satisfont au problème de Cauchy qui garanti dans ce cas l'existence et l'unicité d'une solution.
Ok, merci bien
Bonjour,
J'espère que vous allez bien
SVP j'ai une autre équation à résoudre cette fois-ci (tjs avec les diff finies) :
∂/∂x (a(x) ∂u/∂x)+c u= ε ∂u/∂t ,x ϵ [0,1] et t ϵ [0,T]
u(0,t) = 2 ; u(1,t) = 1 ; u(x,0) = 1.5
Je me demandais comment faire pour choisir l'approximation adéquate (décentrée à droite, à gauche, ...) pour chaque dérivée ? Ou bien, je peux choisir celle que je veux ?!
Bonsoir,
Il s'agit d'une équation de diffusion (+ un terme linéaire). Du point de vue spatial (variable x), la quantité diffusée (fonction u) l'est dans toutes les directions de l'espace (ici -x et +x). Il est dès-lors plus adéquat de choisir une différence centrée qui ne favorise aucune direction.
Bonjour,
Merci de votre réponse
J'ai appliqué le schéma d'approximation centrée pour ε = 0. Voici ce que j'ai obtenu :
(Je suppose que j'utilise N+2 points de discrétisation numérotés de 0 à N+1)
A ce que je vois, j'ai là N-2 (i=2, 3, ..., N-1) équations pour N (u1, u2, ...,uN) inconnues, ou bien j'ai commis une erreur quelque part ?
Bonjour,
Désolé pour le délais de réponse.
Discrétiser deux fois de suite une dérivée seconde n'est pas toujours une bonne idée. Je vous recommande de réécrire le premier membre de votre terme de gauche ainsi:
Utilisez alors la discrétisation pour la dérivée première que vous avez employée, et pour la dérivée seconde la formule de discrétisation:
Attention, il manque un a(x) dans la première égalité :
Cordialement.
Merci, je vais l'essayer
Bonjour,
J'ai appliqué ce que vous avez dit et j'ai obtenu les courbes ci-dessous pour N=10, N=100, N=1000 et N=10000 pour ε=0 et a(x)=x² avec x ϵ [0,1]. Les conditions de bord sont u(0)=2 et u(1)=1. Je me demandais comment faire pour m'assurer que la solution numérique est correcte du moment qu'il y'a pas moyen de la comparer avec la solution analytique ?
1.PNG
2.PNG
3.PNG
4.PNG
Merci de votre aide
Bonjour,
En demandant à Wolfram Alpha (https://www.wolframalpha.com/input/?...u%5Bx%5D,+x%5D), j'obtiens un solution analytique générale de la forme:
où et sont des constantes dépendantes des conditions frontières et et sont des constantes positives dépendantes du paramètre c (supposé être un réel positif).
Cette solution n'est pas définie en 0.
Je vois trois possibilités: le domaine considéré n'est pas bon, l'équation différentielle contient une erreur ou le paramètre c n'est pas positif.
Bonjour,
Merci de votre réponse
Effectivement, le paramètre c qu'on m'a demandé de choisir est égal à -1.
Bonjour,
Je pense que c'est bon. Cependant, avec c = -1, il me semble que la solution analytique tend vers 0 en x = 0 (c'est d'ailleurs ce que fait votre solution numérique). Je me demande s'il est dès lors pertinent d'imposer la condition frontière u(0) = 2.
Solution analytique pour c =-1:
Où A et B sont deux constantes dépendantes des conditions frontières.
Bonjour,
Je vois, merci de votre réponse
Bonjour,
SVP comment écrire cette équation : (∂x² ∂u/∂x)/∂x - u= ∂u/∂t sur https://www.wolframalpha.com/example...ial-equations/
J'ai essayé cette écriture https://www.wolframalpha.com/input/?...,t%5D,+x,+t%5D mais il semble pas reconnaître le terme de la dérivée par rapport au temps ...
Bonjour,
Voyez l'aide: https://reference.wolfram.com/language/ref/NDSolve.html (le paragraphe: "Solve the heat equation in one dimension" donne un exemple).
Bonjour,
Ok, merci
Je suis vraiment désolée pour le dérangement, j'ai essayé de suivre l'exemple que vous avez mentionné mais ça n'a rien donné !
https://www.wolframalpha.com/input/?...Bx,+0,+1%7D%5D
Je comprends vraiment pas pourquoi ...
Je viens de tester: il s'agit d'une limitation de la version gratuite de Wolfram Alpha qui ne permet pas le calcul.
Ah, je vois. Merci en tout cas
Bonjour,
J'espère que vous allez bien.
J'avais résolu (toujours par la méthode des différences finies) l'équation suivante :
-d²u /dx² + 0.1 du/dx + u = 0 pour x appartenant à [0,1], avec u(1) = 2 et u(1) = 1.
Pour un nombre de noeuds N = 10, 100 , 1000, j'obtiens deux courbes confondues pour les solutions numérique et analytique, mais pour N = 10000 par exemple, ce n'est plus le cas (voir figure ci-dessous).
Auriez-vous une idée pourquoi les courbes ne restent plus confondues?
Merci de votre aide.
Bonjour,
Je soupçonne une accumulation d'erreurs d'arrondis (quoique pour N = 10000 cela devrait encore aller. Il faudrait voir votre code pour pouvoir en dire plus). En effet, pour N grand, le pas h devient petit. Lors du calcul des différences finies (comme (f(x+h)-f(x)) / h) le numérateur et le dénominateur sont tout les deux proches de 0. Si l'on utilise pour le calcul des nombres en virgule flottante (comme dans le cas de Matlab), il peut avoir perte des chiffres significatifs. Le résultat obtenu par ce calcul devient alors incohérent.