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 :

Equation aux derivees partielles - Comment coder sur matlab


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut Equation aux derivees partielles - Comment coder sur matlab
    Bonjour,
    je suis en train de faire un TP sur les équations différentielles et j'ai du mal a voir par ou commencer et comment coder sous Matlab. J'essaie tout d'abord de rentrer les données du probleme mais je bloque a sur l'importation de ces données a partir d'un fichier .txt
    Voici mon code :

    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
    %%Initialisation
    h=0.005;
    k=h;
    xi=zeros(1,101);
    yj=zeros(1,61);
    uij=zeros(61,101);
    xi(1)=0;
    for i = 1:100
        xi(i+1) = i*h;
    end
    yj(1)=0;
    for j=1:60
        yj(j+1)= j*k;
    end
    chargement = fopen('matlab.mat');
    donnee = fscanf(chargement,'%g %g %g',[3 inf]);
    En fait dans ce fichier .txt, il y a les valeur de f(x,y), j'essaie de les importer pour pouvoir l'utiliser avec mes équations aux différences. Pouvez-vous m'aider merci ?

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Utilise plutôt les fonctions load ou dlmread pour lire le contenu du fichier.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut
    Ok donc j'obtiens une matrice 6161*5 :
    i j x y f(x,y)
    avec
    i va de 1 a 101 (valeur)
    j va de 1 a 61 (valeur)
    Ce que j'aimerais c'est créer un maillage de ma plaque allant de i=1:101 et j=1:61, le probleme c'est que j'ai 6161 lignes pour i et j. Et je sais pas comment dire a Matlab quand j'ai i=1 et j=2, tu me donnes tel x, tel y, et tel f(x,y), vu que ma colonne i et j font 6161 lignes.

    Voila ce que j'ai codé :

    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
    %%Initialisation
    clear all
    clc
    M=dlmread('chargement.txt');
    h=0.005;
    k=h;
    n = 5000
    %%i=M(1:6161,1);
    %%j=M(1:6161,2);
    xi=M(1:6161,3);
    yj=M(1:6161,4);
    f=M(1:6161,5);
    u=zeros(6161,6161);
    E=10^-5;
    N=5000;
    %%Conditions limites
    u(1:6161,6161)=0;
    u(1:6161,6161)=0;
    u(1,1:6161)=0;
    u(6161,1:6161)=0;
    for l = 1:n
        for i = 2:6161
            for j = 2:6161
                u(1,j) = 1/21 * ( 0.005 * f(1:61) - ( u(i+2,j) + u(i,j+2) + u(i,j-2) - 8*u(i+1,j) - 8*u(i-1,j) - 8*u(i,j+1) - 8*u(i,j-1) + 2*u(i+1,j+1) + 2*u(i+1,j+1) + 2*u(i-1,j) + 2*u(i-1,j-1)));
            end
        end
    end

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut
    Voici mon code final, j'ai reussi a resoudre la plupart des problèmes. La je bloque juste sur une partie qui consiste a dessiner un graphique avec la commande contour (a la fin de mon code), j'ai rentre mon code mais rien ne sort. Est-ce que vous pouvez m'aider ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    %%Construction du graphique
    m = 101;
    n = 61;
    X = zeros(m,n);
    Y = zeros(m,n);
    for j = 1 : n
        X(:,j)= xi(:);
    end
    for j = 1 : m
        Y(j,:) = yj(:)';
    end
    [C,h] = contourf(X,Y,u');
    clabel(C,h);

Discussions similaires

  1. equation aux dérivées partielles
    Par bakaratoun dans le forum Mathématiques
    Réponses: 3
    Dernier message: 21/03/2010, 16h48
  2. Equation aux dérivées partielles
    Par willy_07 dans le forum MATLAB
    Réponses: 4
    Dernier message: 07/10/2009, 17h53
  3. Matlab equation aux derivees partielles
    Par saiyuki dans le forum Images
    Réponses: 1
    Dernier message: 10/08/2009, 11h27
  4. Réponses: 6
    Dernier message: 24/07/2009, 11h24
  5. Equation aux dérivées partielles.
    Par Mad__Max dans le forum MATLAB
    Réponses: 6
    Dernier message: 22/03/2007, 09h48

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