IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Probleme de boucle for


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 38
    Points : 24
    Points
    24
    Par défaut Probleme de boucle for
    Bonjour à tous,

    J'aimerais réussir à faire une boucle for avec ce type d'équation

    x(a un moment T+dt) = x (au moment T)*8

    Pour un x allant de 1 a 100
    avec un dt petit
    Voici mon début de code mais cela ne me donne rien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    dt=0.01
    %Temperature sans pertes
     
    u(1)=0;
    for t=1:dt:100
    t(i+1)=t(i)*8
    u(i+1)=u(i)+t1(i)*dt 
    end
    Merci de votre aide !

  2. #2
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Deux remarques:
    Tout d'abord, tu n'as pas initialisé T(1).
    Ensuite, pour intégrer une équation différentielle, tu utilises la méthode d'Euler, dont on a dit: "Admirez, mais n'appliquez pas".
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Mais en fait je ne veux pas du tout intégrer

    je veux simplement tracer le graphique d'une courbe qui avance en fonction de sa valeur précédente

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    ta demande et ton code ne sont pas clairs du tout... pourrais-tu réexpliquer ce que tu souhaites faire?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Quand je tape cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    clc
    clear all;
    dt=1
     
    u=0;
    x=0;
    for w=1:100
    u=u+1
    x=x+1
    end
    plot(x,u)
    Mon plot ne marche pas que dois-je faire?

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par mostyx Voir le message
    Mon plot ne marche pas
    ben si... tu affiches un point de coordonnées (100,100), en lui-même le code n'est pas faux, il ne génère pas de message d'erreur (même si j'ai bien compris qu'il ne réalise pas ce que tu souhaites faire).
    Citation Envoyé par mostyx Voir le message
    que dois-je faire?
    Nous ré-expliquer ce que tu souhaites faire précisément?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    Mon plot ne marche pas
    A mon avis il "marche" seulement tu essaye de tracer uns calaire donc c'est un unique point aux coordonnées (100,100)
    tu veux peut-être faire quelque chose comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    maxlim=100;
    u=zeros(1,maxlim);
    x=u;
    u(1)=0;
    x(1)=0;
    for w=2:maxlim
    u(w)=u(w-1)+1;
    x(w)=x(w-1)+1;
    end
    plot(x,u)
    ensuyite la bonne question est celle de Magelan : que cherches-tu à faire exactement ? Si c'est la résolution d'un équation différentielle il existe des schémas suivant le type d'équation.
    Tu as des cours sur internet comme celui-ci ou encore celui-là pour les équations aux dérivées partielles.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    En fait , ce que je cherche réellement a faire , c'est mettre cette équation
    dans matlab.

    et d'en obtenir le graphique

    Ou plutot : Tb(t+Δt)= Tb(t) (PcombΔt + 4α + √( Pcomb2Δt 2 + 8α PcombΔt + 4α2))/6α

    Le code en est a ca :
    dt=0.1;
    t=1:dt:2;
    for i=1:50
    t(i+1)=t(i)+dt ;
    T(i)=T(1)*(Pcarbu*dt+4*alpha+(Pcarbu^2*dt^2+8*alpha*Pcarbu*dt+ 4*alpha^2)^0.5)/(6*alpha);
    end
    alpha , Pcarbu et dt sont des valeurs définie au début.
    Mais malheureusement , je recois en rouge des erreurs me disant que les vecteurs ne sont pas de même longueur

    Je vérifie cela je tape donc length(T) et length(t) et je vois qu'il sont effectivement différent :s
    Comment remedier a cela?


    Ps mes question précédente avait pour but de savoir si je comprenais bien comment fonctionnait les boucles )

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par mostyx Voir le message
    Ps mes question précédente avait pour but de savoir si je comprenais bien comment fonctionnait les boucles )
    Tes boucles for sont mal construites mais comme on ne savait pas ce que tu voulais faire, c'est difficile de te répondre...

    Bon j'essaie de résumer :
    tu as donc un vecteur T pour différentes valeurs de t (par exemple pour t=1, T(1)=... pour t=2, T(2)=..., etc). Et tu voudrais calculer T(t+dt) avec par exemple dt=0.1 en appliquant ta formule, tu obtiendrais alors T(1.1), T(2.1), etc...
    C'est bien ça?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Merci de votre aide mais j'ai réussi !
    Ce fut fastidieux mais maintenant c'est fait!

    Sinon tu ne saurais pas par hasard comment lancer un fichier matlab (.m) depuis matlab une commande ?
    Genre launch(superfichierdelamort.m) ?

  11. #11
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Citation Envoyé par mostyx Voir le message
    Merci de votre aide mais j'ai réussi !
    Ce fut fastidieux mais maintenant c'est fait!
    Par curiosité (et pour donner un peu de sens à ce fil) tu aurais pu nous montrer ton code...

    Citation Envoyé par mostyx Voir le message
    Sinon tu ne saurais pas par hasard comment lancer un fichier matlab (.m) depuis matlab une commande ?
    Genre launch(superfichierdelamort.m) ?
    Dans Matlab? il suffit de taper le nom de ton fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >> superfichierdelamort
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2010
    Messages : 38
    Points : 24
    Points
    24
    Par défaut
    Voici la solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %Temperature sans pertes
    T(1)=293;
    t(1)=0 
    dt=0.1;
     
    Tb(1)=293
    for i=1:30000  %Pour 2000 secondes
    t(i+1)=t(i)+dt ;
    T(i+1)=T(i)*(Pcarbu*dt+4*alpha+(Pcarbu^2*dt^2+8*alpha*Pcarbu*dt+ 4*alpha^2)^0.5)/(6*alpha);
    end
    plot(t,T);
    Et merci pour l'execution d'un sous fichier

Discussions similaires

  1. probleme avec boucle "for"
    Par kentaro dans le forum ActionScript 1 & ActionScript 2
    Réponses: 16
    Dernier message: 30/01/2008, 20h15
  2. probleme de boucle for
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/10/2007, 17h30
  3. Probleme de boucle for
    Par rawkus dans le forum Flash
    Réponses: 2
    Dernier message: 14/05/2007, 20h15
  4. [Tableaux] Probleme de boucle for
    Par keumlebarbare dans le forum Langage
    Réponses: 12
    Dernier message: 20/09/2006, 14h29
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo