Méthode des différences finies d'ordre 2 décentrée à gauche
Répondre à la discussion
Affichage des résultats 1 à 2 sur 2

Méthode des différences finies d'ordre 2 décentrée à gauche



  1. #1
    Methanoate

    Méthode des différences finies d'ordre 2 décentrée à gauche


    ------

    Bonjour,

    Je ne sais pas si c'est la bonne rubrique pour poser ma question...

    Je cherche à résoudre numériquement le système d'équations différentielles couplées sous C# suivant (étude réalisée sur 24h soit 24x60 minutes) :

    du/dt = F(u,v), où F(u,v) = -k (u - v)
    dv/dt = G(u,v), ou G(u,v) = -k (u² - v²)

    Pour cela j'utilise la méthode des différences finies d'ordre 2 décentrée à gauche.

    Après discrétisation, cela donne (h est le pas de temps) :

    u = 2/3 * [(2.0 * u1 - 0.5 * u2) + h * F(u,v)]
    v = 2/3 * [(2.0 * v1 - 0.5 * v2) + h * G(u,v)]

    u1 et u2 sont les valeurs de la fonction u aux temps n-1 et n-2 respectivement.
    v1 et v2 sont les valeurs de la fonction v aux temps n-1 et n-2 respectivement.

    Voici les principales lignes du code que j'ai écris sous C# (peut importe le langage en fait) :

    Code:
     double F = 0.0;
                double G = 0.0;
              
                double u = u0;
                double u1 = u;
                double u2 = u;
                double v = u0;
                double v1 = v;
                double v2 = v;
    
                double h = 0.1;
    
                solution.Add(u);
    
    for (int j = 0; j < 24 * 60; j++)
                {
                    for (int i = 0; i < 60 / h; i++)
                    {
                        
                        F = -k (u - v);
                        G = -k (u² - v²);
                                        
                        u = (2.0 / 3.0) * ((2.0 * u1 - 0.5 * u2) + h * F);
    		    v = (2.0 / 3.0) * ((2.0 * v1 - 0.5 * v2) + h * G);			
                                            
                        u2 = u1;
                        u1 = u;
    		    v2 = v1;
                        v1 = v;
                    }
    
                    solution.Add(u);
                }
    Ce code est tout à fait opérationnel. Cependant, je souhaiterais ajouter un terme supplémentaire qui dépend explicitement du temps afin de résoudre le système suivant :

    du/dt = F(u,v) + P(t)
    dv/dt = G(u,v)

    où P(t) = A*exp(-r*t) (fonction exponentielle décroissante).

    Comment doit-on faire apparaître ce terme dans le code précédent ?

    Merci pour vos réponses !

    -----
    Dernière modification par Methanoate ; 16/07/2020 à 16h07.

  2. #2
    Methanoate

    Re : Méthode des différences finies d'ordre 2 décentrée à gauche

    J'ai oublié de le préciser mais dans l'expression de P(t) = A*exp(-r*t), r est donnée en en s-1 et t en s.

Discussions similaires

  1. Méthode des différences finies en Python
    Par HanaChan dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 17/07/2019, 16h50
  2. Méthode des différences finies en langage C
    Par HanaChan dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 16/07/2019, 15h09
  3. Méthode des différences finies
    Par HanaChan dans le forum Mathématiques du supérieur
    Réponses: 27
    Dernier message: 03/07/2019, 19h39
  4. Discrétisation par la méthode des différences finies
    Par invite7013f439 dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 08/03/2011, 11h06
  5. methode des differences finies
    Par jonh35 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 26/07/2009, 14h12