code matlab erroné
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

code matlab erroné



  1. #1
    invitec35bc9ea

    Arrow code matlab erroné


    ------

    bonsoir,
    l'un de vous pourrait-il me dire ce qui cloche dans ce code, car là je seche:
    Code:
    function temperature(l,h,t,max,r)
    %l=6;
    %r=7;
    %t=50;
    %max=60;
    n=1/(r-1);
    omega=ones(r,r) * 0;
    d1=ones(1,r) * t;
    d2=ones(1,r) * t;
    d3=ones(r,1)*t;
    d4=ones(r,1)*t;
    omega(:,1)=d1;
    omega(r,:)=d2;
    omega(1,:)=d3;
    omega(:,r)=d4;
    for m=1:1:max
        for i=2:1:r-1
            for j=2:1:r-1
                omega(i,j)=(4*omega(i,j)+omega(i-1,j)+omega(i,j-1)+omega(i+1,j)+omega(i,j+1))*0.25;
            end
        end
    end
    merci.

    PS: il s'jit d'un algo qui me cacule la temperature d'un domaine carré (rectangulaire dans le cas general) par differences finies.

    -----

  2. #2
    inviteaf2e78df

    Re : code matlab erroné

    Techniquement il n'y a rien qui cloche dans le code, il fonctionne. C'est dans la réponse qu'il te donne , ce qui semble te choquer ?

  3. #3
    invitec35bc9ea

    Re : code matlab erroné

    bonsoir,
    ça fonctionne mais me donne un resultat erroné:
    Code:
    omega =
    
      1.0e+023 *
    
        0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
        0.0000    0.0660    0.1740    0.3059    0.4034    0.3546    0.0000
        0.0000    0.1740    0.4588    0.8067    1.0638    0.9353    0.0000
        0.0000    0.3059    0.8067    1.4185    1.8705    1.6444    0.0000
        0.0000    0.4034    1.0638    1.8705    2.4666    2.1685    0.0000
        0.0000    0.3546    0.9353    1.6444    2.1685    1.9064    0.0000
        0.0000    0.0000    0.0000    0.0000    0.0000    0.0000    0.0000
    en effet, les valeurs dans les colonnes 1 et n et les lignes 1 et n, et que j'ai initialisé à 50 ne devraient normalement pas changer,
    Code:
        50    50    50    50    50    50    50
        50     0     0     0     0     0    50
        50     0     0     0     0     0    50
        50     0     0     0     0     0    50
        50     0     0     0     0     0    50
        50     0     0     0     0     0    50
        50    50    50    50    50    50    50
    or la vous remarquez bien qu'ils sont passés tous à 0. seul le domaine entre 2 et n-1 aurait du changer.

  4. #4
    inviteaf2e78df

    Re : code matlab erroné

    Ils sont toujours bien à 50 les valeurs dont vous parlez mais l'échelle étant de l'ordre de 10^23 Matlab le met à 0 lorsque vous visualisez le tableau. Tapez omega(1,1) pour vous en persuadez

    Maintenant ce que je ne sais pas c'est si les valeurs de 10^23 sont de l'ordre de grandeur que vous attendiez...

    et si ce sont des températures , j'en doute fortement

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

    Re : code matlab erroné

    Maintenant ce que je ne sais pas c'est si les valeurs de 10^23 sont de l'ordre de grandeur que vous attendiez...
    non
    et si ce sont des températures , j'en doute fortement
    effectivement! il y a qqch qui cloche, mais je ne sais quoi.

  7. #6
    invitec35bc9ea

    Re : code matlab erroné

    bonsoir,
    mon erreur venait de l'equation de la chaleur:
    Code:
    h=4;
    l=6;
    r=7;
    t=50;
    max=60;
    n=1/(r-1);
    omega=ones(r,r) * 0;
    d1=ones(1,r) * t;
    d2=ones(1,r) * t;
    d3=ones(r,1)*t;
    d4=ones(r,1)*t;
    omega(:,1)=d1;
    omega(r,:)=d2;
    omega(1,:)=d3;
    omega(:,r)=d4;
    for m=1:1:max
        for i=2:1:r-1
            for j=2:1:r-1
                omega(i,j)=(n^4*omega(i,j)+omega(i-1,j)+omega(i,j-1)+omega(i+1,j)+omega(i,j+1))/(4+n^2);
            end
        end
    end
    à present le programme fonctionne correnctement, et me donne:
    Code:
    omega =
    
       50.0000   50.0000   50.0000   50.0000   50.0000   50.0000   50.0000
       50.0000   48.7647   48.1879   48.0176   48.1879   48.7647   50.0000
       50.0000   48.1879   47.2705   46.9915   47.2705   48.1879   50.0000
       50.0000   48.0176   46.9915   46.6764   46.9915   48.0176   50.0000
       50.0000   48.1879   47.2705   46.9915   47.2705   48.1879   50.0000
       50.0000   48.7647   48.1879   48.0176   48.1879   48.7647   50.0000
       50.0000   50.0000   50.0000   50.0000   50.0000   50.0000   50.0000
    ce que je voudrais faire à present c'est afficher un carré de dimension celle de ma matrice (dans ce cas 7x7) ou l'on verrait la variation de la temperature en couleur, de facon que le point à la valeur la plus importante soir en rouge et celui à la plus faible en bleu, les valeur intemediaires s'affectant aux couleurs intermediaires.
    merci

  8. #7
    invitec35bc9ea

    Re : code matlab erroné

    dans un deuxieme lieu j'aimerais afficher un rectangle de dimensions lxh, discretisé avec un pas de r

  9. #8
    invite80950a2d

    Re : code matlab erroné

    essaie la commande contourf
    définit dans un premier temps tes points en X et Y genre:
    x=[0:1/r:l]
    y=[0:1/r:h]
    contourf(x,y,omega,50)
    je suis plus tout à fait sur si tu mets ton maillage en début de commande contourf ou après omega (regarde dans l'aide au pire).
    Et 50 est le nombre d'isothermes qu'il affichera. Tu peux en mettre plus ou moins, à toi de choisir le plus adapté.
    Bon courage
    Jo

Discussions similaires

  1. [MatLab] Sb2Sl => Matlab classique = pb intégration.
    Par invite6e6d5361 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/08/2005, 22h02
  2. Mélanger du code C et du code C++
    Par Bleyblue dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 04/07/2005, 15h40
  3. matlab
    Par invitee8ac54cb dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 13/01/2005, 22h54
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...