Matlab
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Matlab



  1. #1
    invite64697b31

    Matlab


    ------

    Bonjour à tous


    Je souhaiterai modéliser sur Matlab la variation de la charge à la rupture d'un composite en fonction de l'orientation des fibres. Exactement ce qui est fait sur le site

    http://www.mse.mtu.edu/~drjohn/my4150/class4/os1.html

    mais avec mes propres valeurs.

    Pour ce faire il me faudrait pour résumer pouvoir tracer sur le meme graphe

    sigma = X/ cos(tetha)^2 (X étant constant) (rupture 1)
    sigma = Y/ sin(thetha)^2 (Y étant connu) (rupture 2)
    sigma = 2Y/ sin(thetha)^2 (rupture 3)

    Enfin il me faudrait tracer une courbe totale qui représente la rupture dans le composite selon qu'elle soit régit par (rupture 1), (rupture 2),(rupture 3) comme le site l'explique


    Toutes idées même partielles seront les bienvenues!

    merci beaucoup

    Etienne

    -----

  2. #2
    invitea29b3af3

    Re : Matlab

    Salut,

    D'habitude j'aime pas trop balancer du code à la figure sans laisser les gens chercher un peu mais avec des logiciels comme Matlab, à moins d'y être déjà habitué, je sais qu'on peut passer un moment à chercher...
    Donc petit conseil quand même : lis bien mon code et dis-moi s'il y a un truc pas clair.
    Et pour la courbe totale, je te laisse te débrouiller, parce que 1) j'ai pas l'équation et 2) je sais pas exactement comment la trouver, à moins d'y aller par morceau ou je sais pas quoi

    PS: la prochaine fois, un titre un peu plus explicite que "Matlab", ça pourrait être bien

    Code:
    X = 240e6;
    Y = 50e6;
    
    theta_graph = 0:1:90;
    theta_radian = 0:pi/2/90:pi/2; %même longueur que theta_graph
    
    sigma1 = X ./ cos(theta_radian).^2;
    sigma2 = Y ./ sin(theta_radian).^2;
    sigma3 = 2*Y ./ sin(2*theta_radian);
    
    plot(theta_graph, sigma1); hold on;
    plot(theta_graph, sigma2); hold on;
    plot(theta_graph, sigma3); hold on;
    axis([0 90 0 300e6]);
    set(gca,'YTickLabel',{'0','50','100','150','200','250','300'}); %échelle en MPa

  3. #3
    invite64697b31

    Re : Matlab

    Bonjour

    Merci bien, j'avais aussi réussi à ploter les courbes grâce à Matlab, le problème étant de définir la courbe totale qui est définie par morceaux selon sigma le plus petit (qui correspond à un critère de rupture du matériaux).

    J'ai essayé le script suivant en m'inspirant de ce que tu m'avais donné, mais le sigmatot n'est pas bon !

    Un indice à me donner ?

    Merci de votre aide et bonnes fêtes de fin d'année


    Code:
    X = 240e6;
    Y = 50e6;
    
    theta_graph = 0:1:90;
    theta_radian = 0:pi/2/90:pi/2; %même longueur que theta_graph
    
    sigma1 = X ./ cos(theta_radian).^2;
    sigma2 = Y ./ sin(theta_radian).^2;
    sigma3 = 2*Y ./ sin(2*theta_radian);
    
    subplot(221)
    plot(theta_graph, sigma1);
    axis([0 90 0 300e6]);
    set(gca,'YTickLabel',{'0','50','100','150','200','250','300'}); 
     %échelle en MPa
    subplot(222)
    plot(theta_graph, sigma2); 
    axis([0 90 0 300e6]);
    set(gca,'YTickLabel',{'0','50','100','150','200','250','300'});
    subplot(223)
    plot(theta_graph, sigma3); 
    axis([0 90 0 300e6]);
    set(gca,'YTickLabel',{'0','50','100','150','200','250','300'});
    
    % j'ai essayé de définir par morceaux la fonction totale sigmatot qui
    % represente successivement la fonction sigma1,sigma2,sigma3; selon que le 
    % sigma le plus petit! 
    
    for theta_graph = 0:90
    if sigma1<sigma2 & sigma1<sigma3 
        sigmatot=sigma1;
        subplot(224)
    axis([0 90 0 300e6]);
    set(gca,'YTickLabel',{'0','50','100','150','200','250','300'});
    plot(theta_graph, sigmatot);hold on;  
    
    elseif sigma2<sigma1 & sigma2<sigma3
        sigmatot=sigma2;
        subplot(224)
        axis([0 90 0 300e6]);
        set(gca,'YTickLabel',{'0','50','100','150','200','250','300'});
        plot(theta_graph, sigmatot);hold on;     
    else sigma3<sigma1 & sigma3<sigma2
        sigmatot=sigma3;  
        subplot(224)
    axis([0 90 0 300e6]);
    set(gca,'YTickLabel',{'0','50','100','150','200','250','300'});
    plot(theta_graph, sigmatot);hold on; 
    end
    end

  4. #4
    invitea29b3af3

    Re : Matlab

    Oooh j'avais cru comprendre que tu n'arrivais pas à ploter les sigma1,2,3 non plus... ok.

    Il y a principalement 2 erreurs dans ton code :
    1) ta variable d'itération de ta boucle for s'appelle theta_graph, comme le vecteur qu'on utilise pour ploter. Donc quand t'essaies de ploter sigmatot en fonction de theta_graph, le vecteur a disparu et tu as juste un nombre (la dernière valeur atteinte par theta_graph dans la boucle for). C'est comme si tu faisais:
    Code:
    plot(17,sigmatot);
    ...alors forcément ça fait n'importe quoi
    Donc traduction : change le nom de ta variable du for, genre "i".

    2) quand tu fais :
    Code:
    if sigma1 < sigma2
    tu compares les vecteurs en entier! (chaque i-ème composante de sigma1 avec chaque i-ème composante de sigma2 à chaque fois!) Donc c'est plutôt:
    Code:
    if sigma1(i) < sigma2(i)
    qu'il faut faire.

    Code:
    for i = 1:91
        if sigma1(i)<sigma2(i) && sigma1(i)<sigma3(i)
            sigmatot(i)=sigma1(i);
        elseif sigma2(i)<sigma1(i) && sigma2(i)<sigma3(i)
            sigmatot(i)=sigma2(i);
        else
            sigmatot(i)=sigma3(i);
        end
    end
    
    subplot(224)
    plot(theta_graph, sigmatot); hold on;
    axis([0 90 0 300e6]);
    set(gca,'YTickLabel',{'0','50','100','150','200','250','300'});

  5. A voir en vidéo sur Futura

Discussions similaires

  1. [matlab] programmation : peut-on générer un arbre des fonctions d'un code Matlab ?
    Par inviteafe1cd13 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 09/07/2015, 11h12
  2. Matlab
    Par invite5fd1a0ec dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 23/11/2009, 09h42
  3. Matlab
    Par invitef41f23a0 dans le forum Électronique
    Réponses: 8
    Dernier message: 16/10/2009, 17h43
  4. [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
  5. matlab
    Par invitee8ac54cb dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 13/01/2005, 22h54