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 :

Comprendre un programme Matlab?


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut Comprendre un programme Matlab?
    Bonjour,

    J'aimerai s'il vous plaît que quelqu'un puisse m'aider à comprendre ce programme c'est assez urgent, je comprends les premiéres lignes mais dés qu'il y a des boucles je suis perdu. Merci de votre attention

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    %----------------------------------------------------------------------------
    %  Script de calcul par differences finies 2D, stationnaire.
    %  E. Lefrancois, 12/2008
    %
    %  Resolution de l'equation de la chaleur :
    %
    %                      kd (T,xx + T,yy) + f0 = 0
    %
    %  sur un domaine rectangulaire de longueur L (selon x) et hauteur H (selon y)
    %
    %  Conditions aux limites :
    %                      T(x,0)= 10 C
    %               T(O,y)=T(L,y)=T(x,H)=100
    %
    %  Maillage :     i=1,nx selon x et j=1,ny selon y
    %
    %  Variables classees avec sens de lecture horizontal : T(1,1); T(2,1)...
    %
    %
    %  Forme discrete : ligne (i,j) indice : (j-1)nx+i
    %
    %    A1*T(i,j-1)+A2*T(i-1,j)+A3*T(i,j)+A4*T(i+1,j)+A5*T(i,j+1)+f(i,j)=0 
    %
    %  avec : A1=kd/dy^2, A2=kd/dx^2, A3=-2(kd/dy^2+kd/dy^2), A4=kd/dx^2, A5=kd/dy^2
    %
    %                                   "5"
    %  Les indices associes sont :                    (i,j+1)
    %    (i,j-1) =>     N1 = i+(j-2)*nx                  |
    %    (i-1,j) =>     N2 = i-1+(j-1)*nx              |
    %    (i, j)  =>     N3 = i+(j-1)*nx        (i-1,j)-----(i,j)-----(i+1,j)
    %    (i+1,j) =>     N4 = i+1+(j-1)*nx      "2"         |"3"      "4"
    %    (i,j+1) =>     N5 = i+j*nx                  |
    %                               (i,j-1) 
    %                                 "1"
    %----------------------------------------------------------------------------
    clear all               % nettoyage de la memoire
    close all               % fermeture des fenetres graphiques
     
    %----- parametres physiques
    L = 10;                % longueur du domaine m
    H = 10;                % hauteur du domaine m
    kd=2;             % coeff de conductivite w/°c-m
    f0=30;                   % production     w/m3
     
    %----- parametres numeriques
    nx=25; %input('Entrer le nombre de noeuds : ');
    ny=25; %input('Entrer le nombre de noeuds : ');
    dx = L / (nx - 1);  dy = H / (ny - 1);   % pas de discretisation
    nnt=nx*ny;  % nombre de noeuds total
    k=zeros(nnt,nnt);       % initialisation de la matrice
    f=zeros(nnt,1);         % initialisation du second membre
    %
    %----- Generation du maillage
    for j=1:ny
        for i=1:nx
            X(i,j)=(i-1)*dx;
            Y(i,j)=(j-1)*dy;
        end
    end
    %
    %----- Coefficients de la matrice
    Ax=kd./dx^2; Ay=kd/dy^2; fij=-f0;
    %
    for j=2:ny-1
        for i=2:nx-1
    %        Calcul de l'indice du noeud (i,j)
            N1 = i+(j-2)*nx;
            N2 = i-1+(j-1)*nx;
            N3 = i+(j-1)*nx;    % Noeud (i,j) !!
            N4 = i+1+(j-1)*nx;
            N5 = i+j*nx;
    %
    %        On remplit la ligne "N3" du systeme
            k(N3,[N1 N2 N3 N4 N5])=[Ay Ax -2*(Ax+Ay) Ax Ay];
            f(N3)=fij;
        end        
    end
     
    %----- conditions aux limites de Dirichlet
    % T=10 en (x,O)
    liste=1:nx;
    for m=1:nx
        k(liste(m),liste(m))=1; f(liste)=10;
    end
    % T=100 en (x,H)
    liste=(ny-1)*nx+[1:nx];
    for m=1:nx
        k(liste(m),liste(m))=1; f(liste)=100;
    end
    % T=100 en (0,y)
    liste=[1:nx:nnt];
    for m=1:ny
        k(liste(m),liste(m))=1; f(liste)=100;
    end
    % T=100 en (L,y)
    liste=[nx:nx:nnt];
    for m=1:ny
        k(liste(m),liste(m))=1; f(liste)=100;
    end
     
    %----- resolution
    T = k\f;                 % calcul et affichage de la solution 
     
    %----- affichage
    m=0;
    for j=1:ny
        for i=1:nx
           m=m+1;
           matT(i,j)=T(m);
        end
    end
     
    surf(X,Y,matT)
    xlabel('X (m)')
    ylabel('Y (m)')
    zlabel('Temperature (C)')

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Ce code est pourtant déjà bien commenté.
    Peux-tu préciser un peu plus ce que tu ne comprends pas ?
    Quelle boucle en particulier ?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Ce code est pourtant déjà bien commenté.
    Peux-tu préciser un peu plus ce que tu ne comprends pas ?
    Quelle boucle en particulier ?

    En fait je travaille la dessus mais ce n'est pas du tout mon domaine donc je ne comprends pas la partie "des indices associés " comment on arrive à ces relations il y a aussi le fonctionnement des boucles tout cela est confu pour moi? si vous connaissez un peu ce langage vous me serez d'une grande utilité je travaille la dessus depuis une semaine et je ne comprends toujours pas

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    La partie des "indices associés" qui est dans le commentaire est plus du domaine de l'agorithmique pour moi.
    C'est la définition donnée pour pouvoir résoudre l'équation donnée au-dessus.
    Ce n'est pas mon domaine, ce n'est pas vraiment du MATLAB, c'est une définition.

    Ensuite le code MATLAB met effectivement en forme ce qui est mis dans le commentaire.

    Pour les boucles le plus simple serait surement de lancer le code en mode DEBUG en pas-à-pas pour comprendre ce qu'il fait.

    Je vais essayer d'en expliquer une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %----- Generation du maillage
    for j=1:ny
        for i=1:nx
            X(i,j)=(i-1)*dx;
            Y(i,j)=(j-1)*dy;
        end
    end
    Là il fait une double boucle sur les lignes et les colonnes :
    Pour chaque ligne i,
    Pour chaque colonne j
    il affecte (i-1)*dx dans X(ligne i, colonne j)
    il affecte (j-1)*dy dans Y(ligne i, colonne j)


    Ce qui d'ailleurs pourrait être simplifié puisque :
    Chaque élément de la ligne i de X est (i-1)*dx (tous les éléments d'une même ligne sont égaux)
    Chaque élément de la colonne j de Y est (j-1)*dy (tous les éléments d'une même colonne sont égaux)

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    La partie des "indices associés" qui est dans le commentaire est plus du domaine de l'agorithmique pour moi.
    C'est la définition donnée pour pouvoir résoudre l'équation donnée au-dessus.
    Ce n'est pas mon domaine, ce n'est pas vraiment du MATLAB, c'est une définition.

    Ensuite le code MATLAB met effectivement en forme ce qui est mis dans le commentaire.

    Pour les boucles le plus simple serait surement de lancer le code en mode DEBUG en pas-à-pas pour comprendre ce qu'il fait.

    Je vais essayer d'en expliquer une :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    %----- Generation du maillage
    for j=1:ny
        for i=1:nx
            X(i,j)=(i-1)*dx;
            Y(i,j)=(j-1)*dy;
        end
    end
    Là il fait une double boucle sur les lignes et les colonnes :
    Pour chaque ligne i,
    Pour chaque colonne j
    il affecte (i-1)*dx dans X(ligne i, colonne j)
    il affecte (j-1)*dy dans Y(ligne i, colonne j)


    Ce qui d'ailleurs pourrait être simplifié puisque :
    Chaque élément de la ligne i de X est (i-1)*dx (tous les éléments d'une même ligne sont égaux)
    Chaque élément de la colonne j de Y est (j-1)*dy (tous les éléments d'une même colonne sont égaux)
    Merci pour cette explication mais je n'ai vraiment pas compris

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par nejm59 Voir le message
    Merci pour cette explication mais je n'ai vraiment pas compris
    Ca va être dur de t'aider plus

    Déjà pourquoi utiliser un programme que tu ne comprends pas ?
    D'où vient-il et quel est ton objectif ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Caro-Line Voir le message
    Ca va être dur de t'aider plus

    Déjà pourquoi utiliser un programme que tu ne comprends pas ?
    D'où vient-il et quel est ton objectif ?

    Bonjour,

    Pour tout vous expliquer je suis actuellement en stage, au début j'étais venu pour travailler sur les phénoménes de transferts de chaleur mais au fur et à mesure que j'avançais dans mon projet on c'est apperçu qu'il fallait que j'utilise les différences finies et comme outil de réolutions Matlab ( ou Scilab) c'est la seule méthode qui me permettra de résoudre mon probléme. Un professeur de mon école me donne des exercices pour m'initier au logiciel au début je travaillais sur du monodimensionnel aucun probléme et maintenant je travaille sur du 2D (c'est le programme que j'essaie de comprendre) et qui normalement m'aidera à résoudre le probéme de mon stage. Cela fait une semaine que j'essaie de le comprendre mais en vain Ce matin j'ai envoyé un mail à mon prof pour lui expliquer mon bloquage et je n'ai toujours pas de réponse. Le temps passe et je n'ai toujours rien pour mon stage cela fait 4 mois que j'y suis il me reste à peine deux mois cela va être trés juste parce que le probléme que je devrais traiter seras 30 fois plus conséquent (enfin si je réussie à l'écrire) que celui que je ne comprends pas actuellement. Bref, désolé pour ce roman et ce n'est pas grave si vous ne pouvez pas plus m'aider merci déjà d'avoir pris la peine de regardez mon programme je trouverais certainement quelqu'un enfin j'espére

    Cordialement

  8. #8
    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!
    on c'est apperçu qu'il fallait que j'utilise les différences finies et comme outil de réolutions Matlab ( ou Scilab) c'est la seule méthode qui me permettra de résoudre mon probléme
    Avant d'écrire ou d'utiliser une ligne de code, il est essentiel d'avoir bien compris la méthodes que tu vas utiliser, en l'occurrence les différences finies. Alors, première question: as-tu bien compris cette méthode. Si non, étudie-la attentivement. Si oui, tu peux commencer à la programmer. Pour ça, tu peux utiliser un langage comme C ou Fortran, aussi bien que Matlab ou Scilab. Mais, pour ces deux dernier, si tu es débutant, je te recommande de commencer par les utiliser de la manière la plus primitive, sans en utiliser toutes les subtilités. Le résultat ne sera pas optimal du point de vue de la vitesse d'exécution mais, si je t'ai bien compris, ce qui est critique pour toi, c'est le temps que tu vas passer à développer (max. 2 mois) et non le temps que ton ordinateur va passer pour traiter un jeu de données (quelques minutes).
    Jean-Marc Blanc

  9. #9
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Salut

    Essaye de faire tourner ça sous Matlab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    X=[1 1 1 ; 1 1 1 ; 1 1 1]       %matrice 3*3
     
    for i= 1:1:3                    %incrémentation sur les lignes (on commence a 1 par pas de 1 jusqu'à 3)
        for j=1:1:3                 %incrémentation sur les colonnes
            X(i,j)=2
        end
    end
    et essaye de comprendre ce que fais ce petit programme. Avec ça, tu devrais comprendre ce qui se passe dans la double boucle for.

    Bon courage

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut!

    Avant d'écrire ou d'utiliser une ligne de code, il est essentiel d'avoir bien compris la méthodes que tu vas utiliser, en l'occurrence les différences finies. Alors, première question: as-tu bien compris cette méthode. Si non, étudie-la attentivement. Si oui, tu peux commencer à la programmer. Pour ça, tu peux utiliser un langage comme C ou Fortran, aussi bien que Matlab ou Scilab. Mais, pour ces deux dernier, si tu es débutant, je te recommande de commencer par les utiliser de la manière la plus primitive, sans en utiliser toutes les subtilités. Le résultat ne sera pas optimal du point de vue de la vitesse d'exécution mais, si je t'ai bien compris, ce qui est critique pour toi, c'est le temps que tu vas passer à développer (max. 2 mois) et non le temps que ton ordinateur va passer pour traiter un jeu de données (quelques minutes).
    Jean-Marc Blanc

    Bonjour,

    J'ai bien compris la méthode des différences finies c'est le passage à la programmation qui me perturbe. J'utilise Scilab ( clône de matlab) et je ne cherche pas les subtilités juste à comprendre la réolution d'un systhéme analytique qui utilise les matrices.

    MERCI pour votre contribution

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Dam2227 Voir le message
    Salut

    Essaye de faire tourner ça sous Matlab :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    X=[1 1 1 ; 1 1 1 ; 1 1 1]       %matrice 3*3
     
    for i= 1:1:3                    %incrémentation sur les lignes (on commence a 1 par pas de 1 jusqu'à 3)
        for j=1:1:3                 %incrémentation sur les colonnes
            X(i,j)=2
        end
    end
    et essaye de comprendre ce que fais ce petit programme. Avec ça, tu devrais comprendre ce qui se passe dans la double boucle for.

    Bon courage
    Bonjour,

    OK je vais le tester

    MERCI BIEN

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par nejm59 Voir le message
    Bonjour,

    OK je vais le tester

    MERCI BIEN
    Bonjour,

    Je viens de tester votre programme et je l'ai trés bien compris. En fait, on fixe tout d'abord i=1 et on effectue la seconde boucle j=1 cela va donner X(1,1)=2 on aura donc un 2 dans la premiére ligne de la deuxiéme colonne de la matrice ensuite on passe à j=2 (avec i= toujours à 1) et refais la même chose que précedemment on aura X(1,2) donc un 2 dans la premiére ligne de la deuxiéme colonne et ainsi de suite jusqu'a avoir des 2 dans toutes la matrices. C'est bien ça?

  13. #13
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Citation Envoyé par nejm59 Voir le message
    En fait, on fixe tout d'abord i=1 et on effectue la seconde boucle j=1 cela va donner X(1,1)=2 on aura donc un 2 dans la premiére ligne de la deuxiéme colonne de la matrice
    2 dans la première ligne de la première colonne de la matrice^^.

    Mais oui, sinon, c'est exactement ça.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Dam2227 Voir le message
    2 dans la première ligne de la première colonne de la matrice^^.

    Mais oui, sinon, c'est exactement ça.
    Bonjour,

    Autant pour moi c'est bien un 2 dans la premiére ligne et premiére colonne.

    Merci bien mais n'empêche je ne comprends toujours pas mon programme

  15. #15
    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!
    c'est le passage à la programmation qui me perturbe
    A programmer, c'est tout simple:
    1. Soit n le nombre de noeuds sur lesquels la température est inconnue; tu définis une matrice carrée vide A(n*n) et un vecteur colonne vide B(n*1) par la fonction zeros.
    2. Tu parcours tes noeuds et tu remplis A et B.
    3. Tu tapes X=A\B et tu as la réponse.

    Jean-Marc Blanc

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par FR119492 Voir le message
    Salut!

    A programmer, c'est tout simple:
    1. Soit n le nombre de noeuds sur lesquels la température est inconnue; tu définis une matrice carrée vide A(n*n) et un vecteur colonne vide B(n*1) par la fonction zeros.
    2. Tu parcours tes noeuds et tu remplis A et B.
    3. Tu tapes X=A\B et tu as la réponse.

    Jean-Marc Blanc

    Bonjour,

    Merci pour ta contribution mais je savais déjà faire

    Peut être que tu pourras m'aider à comprendre le programme que j'ai mis un peu plus haut.

    Merci, cordialement

  17. #17
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Citation Envoyé par nejm59 Voir le message
    Merci pour ta contribution mais je savais déjà faire

    Peut être que tu pourras m'aider à comprendre le programme que j'ai mis un peu plus haut.
    Ce n'est pas clair du tout

    Tu dis que tu sais déjà programmer les différences finies en 2D, mais que tu ne comprends pas un code qui résout ce même problème (quelque soit le langage utilisé)...

    Le code est pourtant clairement commenté.
    Les indices N créés dans les boucles servent à identifier les éléments voisins de l'élément où tu fais le calcul (et ce pour chaque élément).

    Donc pour résumer, tu souhaites résoudre un problème classique de résolution par méthode numérique et tu as dans le fichier :
    • l'algorithme clairement expliqué
    • un code avec des commentaires


    On t'a montré comment fonctionnait les structures FOR-END sous MATLAB, je ne vois vraiment ce qu'on peut faire de plus.

    Ou bien alors je n'ai toujours pas compris ce qui te bloque.

    Et si c'est juste le fait de passer d'un problème 1D à un problème 2D, c'est un problème d'algorithme, pas de programmation MATLAB, non ?

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Dut Voir le message
    Ce n'est pas clair du tout

    Tu dis que tu sais déjà programmer les différences finies en 2D, mais que tu ne comprends pas un code qui résout ce même problème (quelque soit le langage utilisé)...

    Le code est pourtant clairement commenté.
    Les indices N créés dans les boucles servent à identifier les éléments voisins de l'élément où tu fais le calcul (et ce pour chaque élément).

    Donc pour résumer, tu souhaites résoudre un problème classique de résolution par méthode numérique et tu as dans le fichier :
    • l'algorithme clairement expliqué
    • un code avec des commentaires


    On t'a montré comment fonctionnait les structures FOR-END sous MATLAB, je ne vois vraiment ce qu'on peut faire de plus.

    Ou bien alors je n'ai toujours pas compris ce qui te bloque.

    Et si c'est juste le fait de passer d'un problème 1D à un problème 2D, c'est un problème d'algorithme, pas de programmation MATLAB, non ?
    Bonjour,

    Je n'ai pas dit que je savais programmer les différences finies 2D, j'ai simplement dit que je comprenais la méthode des différences finies à savoir discrétiser les équations. J'ai compris effectivement les boucles for/end et pour vous dire ce qui me bloque c'est le programme lui même comment en sommes nous arrivés à ce programme c'est cela que j'essaie de comprendre. Certes il y a certaines lignes qui me reste incompréhensible notemment en ce qui concerne les conditions limites mais moi pour l'instant c'est ce qui m'intéresse le plus c'est la partie conceranant les coefficients de la matrice. Je suis parti de l'équation de chaleur je l'ai discrétisé et j'ai mis le systhème d'équation sous forme matriciel (j'ai biensur dimuné le nombre de noeuds c'était juste pour voir à quoi ressemblerai la matrice) mais bon je ne vois toujours pas comment passer de ce qu j'ai obtenu au programme qu'on m'a confié.

    Cordialement

  19. #19
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 308
    Points : 52 891
    Points
    52 891
    Par défaut
    Citation Envoyé par nejm59 Voir le message
    pour vous dire ce qui me bloque c'est le programme lui même comment en sommes nous arrivés à ce programme c'est cela que j'essaie de comprendre.
    Imagine que tu aies à résoudre ce problème en Fortran avec un code Fortran qu'on t'aurait donné (idem en C, C++, Python, ...)... ben tu ne serais pas plus avancé qu'avec ce qu'on te demande de faire en MATLAB

    Ton problème est donc clairement découplé de tout langage de programmation, c'est donc un problème d'algorithmique => Comment traduire un problème physique réel (équation de la chaleur par différences finies) en opérations élémentaires traitées par un ordinateur (codage informatique) ?

    As-tu au moins étudié l'algorithmique pendant ton cursus ?

  20. #20
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par Dut Voir le message
    Imagine que tu aies à résoudre ce problème en Fortran avec un code Fortran qu'on t'aurait donné (idem en C, C++, Python, ...)... ben tu ne serais pas plus avancé qu'avec ce qu'on te demande de faire en MATLAB

    Ton problème est donc clairement découplé de tout langage de programmation, c'est donc un problème d'algorithmique => Comment traduire un problème physique réel (équation de la chaleur par différences finies) en opérations élémentaires traitées par un ordinateur (codage informatique) ?

    As-tu au moins étudié l'algorithmique pendant ton cursus ?

    Bonjour,

    Vous avez tout compris ce qui bloque chez moi c'est bien le passage du probléme physique en opérations traitées sur ordinateur.

    Non je n'ai jamais étudié l'algorithmique je n'ai jamais fais d'informatique ce n'est vraiment pas mon domaine d'où les difficultées que je rencontre mais apparemment je suis obligé de passer par la pour résoudre mon probléme

    Cordialement

Discussions similaires

  1. Comprendre un programme multi-langues (Python, C++, matlab)
    Par AnthoB dans le forum Langages de programmation
    Réponses: 7
    Dernier message: 18/02/2013, 08h35
  2. Réponses: 1
    Dernier message: 25/08/2007, 23h14
  3. Aide programme Matlab
    Par thouraya_ad dans le forum MATLAB
    Réponses: 6
    Dernier message: 06/03/2007, 18h59
  4. Exécuter un programme MATLAB sur un pc sans MATLAB
    Par zuly12 dans le forum MATLAB
    Réponses: 4
    Dernier message: 10/01/2007, 15h44
  5. Réponses: 1
    Dernier message: 18/05/2006, 12h52

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