Précédent   Forum des professionnels en informatique > Environnements de développement > MATLAB
MATLAB Forum d'entraide sur MATLAB. Avant de poster -> FAQ MATLAB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2012, 09h40   #1
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Algérie

Informations forums :
Inscription : novembre 2011
Messages : 16
Points : 0
Points : 0
Par défaut équation de convection-diffusion stationnaire

Bonjour, j'ai essayé de résoudre une équation de convection-diffusion par la méthode des différences finis, je me suis trouvée en fin à résoudre un système d'équation linéaire A c = B (c: vecteur concentration que je dois trouvée, et B vecteur qui présente les conditions aux limites), j'ai essayé de programmer ça avec MATLAB (c'est mon premier pas avec MATLAB alors je m'érite comeme des encouragements ) mais j'ai un problème qelq part, je ne sais pas ou
voila ce que j'ai fais:
Code :
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
% résolution d'une équation de convection-diffusion stationnaire
L = 1 ; %longeur du domaine
N = 5 ; %nombre d'itiration
deltax = L / N; %pas d'espace
n = N+L ; %nombre de noeds
D = 0.01; %diffusion (m2/s)
C0 = 3.5e-3; %concentration initiale (g/l)
C1 = 3.e-3; %concentration finale (g/l)
u = 0.91; %vitesse (m/s)
alfa = (D + u/(deltax/2));
beta = (D - u/(deltax/2));
% remplissage de la matrice A
A = [n,n];
for i = 1:(n);
    A(i,i) = -2 * D;
end
for i = 1:(n-1);
    A(i,i+1) = beta;
    A(i+1,i) = alfa,
end
%vecteur B
B = [1,n];
for i = 1;
    B(i) = (- alfa * C0);
end
    for i = n;
    B(i) = (- beta * C1);
    end
    for i = 2 : (n-1);
    B(i) = 0;
    end
%résolution
vecterc = [1,n];
for i = 1 : n;
    vecterc = A\B;
end
c = vecterc;
plot(c)
    end
et en pièce jointe ce la résolution par différences finis
Fichiers attachés
Type de fichier : zip diffrences finies stationnaire OK.zip (17,6 Ko, 1 affichages)
julinet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 13h16   #2
Membre expérimenté
 
Inscription : février 2010
Messages : 1 473
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 1 473
Points : 529
Points : 529
en fait ce forum est plutôt utilisé pour résoudre des demandes spécifiques sur matlab, du coup je pense que tu devrais plutôt expliquer quel est le probleme que tu rencontres sur matlab plutot que nous dire ce que tu veux faire au final.

par exemple dit nous où est on erreur ou qu'es ce que tu n'arrive pas à faire sur matlab et nous pourrons t'aider, ensuite le programme c'est à toi de le faire

- pourquoi dis tu qu'il y a une erreur ?
- matlab t'affiche un message en rouge ?
- sur quelle ligne ?
21did21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 15h42   #3
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Algérie

Informations forums :
Inscription : novembre 2011
Messages : 16
Points : 0
Points : 0
Citation:
Envoyé par 21did21 Voir le message
en fait ce forum est plutôt utilisé pour résoudre des demandes spécifiques sur matlab, du coup je pense que tu devrais plutôt expliquer quel est le probleme que tu rencontres sur matlab plutot que nous dire ce que tu veux faire au final.

par exemple dit nous où est on erreur ou qu'es ce que tu n'arrive pas à faire sur matlab et nous pourrons t'aider, ensuite le programme c'est à toi de le faire

- pourquoi dis tu qu'il y a une erreur ?
- matlab t'affiche un message en rouge ?
- sur quelle ligne ?
Merci Monsieur, en fait lorsque je lance mon programme sur MATLAB il me donne la matrice A juste (j'ai vérifier manuellement) mais il me donne pas le vecteur B.
julinet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 15h47   #4
Membre à l'essai
 
Inscription : avril 2007
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 83
Points : 21
Points : 21
Je comprends pas ton programme:

- "n" est définit où?
- pourquoi y'a t'il un "end" à la fin sans que ça corresponde à un "for" au début?
hollowdeadoss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h17   #5
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Algérie

Informations forums :
Inscription : novembre 2011
Messages : 16
Points : 0
Points : 0
Citation:
Envoyé par hollowdeadoss Voir le message
Je comprends pas ton programme:

- "n" est définit où?
- pourquoi y'a t'il un "end" à la fin sans que ça corresponde à un "for" au début?
n est défini au 5ème ligne c'est le noembre des noeuds que j'ai.
julinet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h20   #6
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Algérie

Informations forums :
Inscription : novembre 2011
Messages : 16
Points : 0
Points : 0
si vous voulez jetez un coup d'oeil au vecteur B qui représente les conditions aux limites (b1=-alfac0) et (b6 (n=6 j'ai 6 noeds) = -beta c1) les autres composantes sont nules. je croix que j'ai un problème à ce niveau????
julinet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h20   #7
Membre à l'essai
 
Inscription : avril 2007
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 83
Points : 21
Points : 21
Effectivement.

Mais ça n'explique pas le "end" à la fin
hollowdeadoss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2012, 16h52   #8
Membre expérimenté
 
Inscription : février 2010
Messages : 1 473
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 1 473
Points : 529
Points : 529
bonjour,

je n'ai pas tout vérifié mais il y avait en moins 2 problemes:
1°) tout d'abord tu as mis un 'end' à la fin qui était seul
2°) à un moment tu dis de résoudre le systeme Ax=B en faisant A\B
mais si tu fais ça il faut que le vecteur B soit un vecteur colonne et pas un vecteur ligne

du coup j'ai fais quelques corrections et ça donne ceci:
Code :
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
% résolution d'une équation de convection-diffusion stationnaire
L = 1 ; %longeur du domaine
N = 5 ; %nombre d'itiration
deltax = L / N; %pas d'espace
n = N+L ; %nombre de noeds
D = 0.01; %diffusion (m2/s)
C0 = 3.5e-3; %concentration initiale (g/l)
C1 = 3.e-3; %concentration finale (g/l)
u = 0.91; %vitesse (m/s)
alfa = (D + u/(deltax/2));
beta = (D - u/(deltax/2));
% remplissage de la matrice A
A = [n,n];
for i = 1:(n);
    A(i,i) = -2 * D;
end
for i = 1:(n-1);
    A(i,i+1) = beta;
    A(i+1,i) = alfa,
end
%vecteur B
B = [1,n];
for i = 1;
    B(i) = (- alfa * C0);
end
B=B';
    for i = n;
    B(i) = (- beta * C1);
    end
    for i = 2 : (n-1);
    B(i) = 0;
    end
%résolution
vecterc = [1,n];
for i = 1 : n;
    vecterc = A\B;
end
c = vecterc;
plot(c)
21did21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 09h25   #9
Membre à l'essai
 
Inscription : avril 2007
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 83
Points : 21
Points : 21
Citation:
Envoyé par 21did21 Voir le message
bonjour,

je n'ai pas tout vérifié mais il y avait en moins 2 problemes:
1°) tout d'abord tu as mis un 'end' à la fin qui était seul
2°) à un moment tu dis de résoudre le systeme Ax=B en faisant A\B
mais si tu fais ça il faut que le vecteur B soit un vecteur colonne et pas un vecteur ligne

du coup j'ai fais quelques corrections et ça donne ceci:
Code :
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
% résolution d'une équation de convection-diffusion stationnaire
L = 1 ; %longeur du domaine
N = 5 ; %nombre d'itiration
deltax = L / N; %pas d'espace
n = N+L ; %nombre de noeds
D = 0.01; %diffusion (m2/s)
C0 = 3.5e-3; %concentration initiale (g/l)
C1 = 3.e-3; %concentration finale (g/l)
u = 0.91; %vitesse (m/s)
alfa = (D + u/(deltax/2));
beta = (D - u/(deltax/2));
% remplissage de la matrice A
A = [n,n];
for i = 1:(n);
    A(i,i) = -2 * D;
end
for i = 1:(n-1);
    A(i,i+1) = beta;
    A(i+1,i) = alfa,
end
%vecteur B
B = [1,n];
for i = 1;
    B(i) = (- alfa * C0);
end
B=B';
    for i = n;
    B(i) = (- beta * C1);
    end
    for i = 2 : (n-1);
    B(i) = 0;
    end
%résolution
vecterc = [1,n];
for i = 1 : n;
    vecterc = A\B;
end
c = vecterc;
plot(c)
Arf. J'essayais de l'emmener doucement vers certaines incohérences
hollowdeadoss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 10h01   #10
Membre expérimenté
 
Inscription : février 2010
Messages : 1 473
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 1 473
Points : 529
Points : 529
Citation:
Envoyé par hollowdeadoss Voir le message
Arf. J'essayais de l'emmener doucement vers certaines incohérences
ok, désolé d'avoir grillé les etapes
21did21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 10h53   #11
Membre à l'essai
 
Inscription : avril 2007
Messages : 83
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 83
Points : 21
Points : 21
Citation:
Envoyé par 21did21 Voir le message
ok, désolé d'avoir grillé les etapes
hollowdeadoss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/02/2012, 18h02   #12
Invité de passage
 
Femme
Inscription : novembre 2011
Messages : 16
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Algérie

Informations forums :
Inscription : novembre 2011
Messages : 16
Points : 0
Points : 0
merci mes amis .... excuser moi pour les erreurs (bêtes) que j'ai fait parcque c'est ma première tentative avec MATLAB. merci encore une fois.
julinet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/02/2012, 21h51   #13
Membre expérimenté
 
Inscription : février 2010
Messages : 1 473
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 1 473
Points : 529
Points : 529
c'est bizarre ta variable nombre de noeuds ?

=> moi j'aurais plutôt mis une variable : "nombreElements"
=> et une variable "nombreNoeuds" = nombreElements+1

???
21did21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h15.


 
 
 
 
Partenaires

Hébergement Web