Un incrément de temps et un palier de temps
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Un incrément de temps et un palier de temps



  1. #1
    turbulent

    Un incrément de temps et un palier de temps


    ------

    Bonjour tout le monde;
    Je cherche à écrire un code Matlab qui calcule une fonction F(i,j) variable dans le temps et dans l'espace. Cette fonction dépend d'une autre fonction g(i) qui varie uniquement dans le temps: F(i,j)=g(i)*K(i,j).
    g(i) commence par une valeur initiale de 1 et puis augmente par un palier de temps delta_t=20 mn. La difficulté que je rencontre, réside dans le choix de l'incrément de temps i pour F(i,j) et K(i,j) et de celui de g(i). Faut-il créer 2 incréments de temps différents et comment? Merci.

    -----

  2. #2
    umfred

    Re : Un incrément de temps et un palier de temps

    ça dépend si K varie entre 2 delta_t

  3. #3
    turbulent

    Re : Un incrément de temps et un palier de temps

    F et K varient à chaque pas de temps i. g varie chaque palier de temps n=1800 secondes, sa courbe a une forme d'escalier en commençant par une valeur initiale de 1 et s'incrémente de 0.5.

  4. #4
    umfred

    Re : Un incrément de temps et un palier de temps

    1800 secondes ça fait 30minutes alors que tu disais initialement 20 minutes
    si tu prends i = 1s, alors g évoluera tous les 1800 (ou 1200) i
    si tu prends i = 5s alors g évoluera tous les 1800/5 (ou 1200/5) i
    à toi de voir la "précision" voulue

  5. A voir en vidéo sur Futura
  6. #5
    turbulent

    Re : Un incrément de temps et un palier de temps

    Je m'excuse de cette erreur. De toutes les façons, peu importe le palier de temps 20 mn ou 30 mn. Pour le choix, je choisie i=1s et g evoluera tous les 1800 s.

  7. #6
    turbulent

    Re : Un incrément de temps et un palier de temps

    Pour me faciliter la tâche, j'ai décomposé le problème. Tout d'abord, je me suis focalisé sur le calcul de g. J'ai établi ce code:
    Code:
    % Définir le vecteur g
    g = 1:0.18:3.36;
    
    % Générer le vecteur de temps en fonction du g
    time = linspace(0, 1800 * (length(g) - 1), length(g));
    
    % Ajuster le dernier élément du vecteur de temps pour créer un tronçon horizontal
    %time(end) = time(end-1) + 1800;
    
    % Tracé du graphe en forme d'escalier
    figure
    stairs(time, g, 'LineWidth', 2);
    xlabel('Temps (secondes)');
    ylabel('g');
    title('Évolution du g par Paliers');
    grid on;
    Là, j'ai un petit souci: le dernier segment de l'escalier est vertical; or, il doit être horizontal (une seule valeur de g pendant le dernier palier de temps). Comment faire pour réparer cela. Merci.

  8. #7
    umfred

    Re : Un incrément de temps et un palier de temps

    ou tu ajoutes le pallier suivant ou tu changes la valeur finale ou tu t'arrêtes juste avant le changement, selon le dernier état voulu du g
    Code:
    % Définir le vecteur g
    g = 1:0.18:3.36;
    g=[g g(length(g))]; % on répète la dernière valeur de g
    
    % Générer le vecteur de temps en fonction du g
    time = linspace(0, 1800 * (length(g) - 1), length(g));
    
    % Ajuster le dernier élément du vecteur de temps pour créer un tronçon horizontal
    %time(end) = time(end-1) + 1800;
    
    % Tracé du graphe en forme d'escalier
    figure
    stairs(time, g, 'LineWidth', 2);
    xlabel('Temps (secondes)');
    ylabel('g');
    title('Évolution du g par Paliers');
    grid on;

  9. #8
    turbulent

    Re : Un incrément de temps et un palier de temps

    Merci umfred, c'est parfait. Maintenant, je vais essayer d'intégrer ce code dans le code global et on va voir ce que ça donne.

  10. #9
    turbulent

    Re : Un incrément de temps et un palier de temps

    Excusez-moi, si ma question est bête: Le code global qui calcule F(i,j) est établi sous forme de 2 boucles de i et j et le sous-code celui de g est établi sous forme de séquence matricielle. Ma question, qui doit être adapté à l'autre et comment? Merci.

  11. #10
    turbulent

    Re : Un incrément de temps et un palier de temps

    Merci umred, je viens de résoudre le problème en transformant le code de g en fonction, ensuite l'appeler dans le code principal de F.

Discussions similaires

  1. Réponses: 33
    Dernier message: 05/10/2018, 09h30
  2. Réponses: 7
    Dernier message: 19/07/2017, 15h56
  3. Réponses: 1
    Dernier message: 14/01/2010, 17h35
  4. Réponses: 26
    Dernier message: 04/12/2008, 19h25