équation de convection-diffusion stationnaire
amoula2784
-
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
Char Snipeur Messages postés 10112 Date d'inscription Statut Contributeur Dernière intervention -
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:
voila ce que j'ai fais:
% 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
A voir également:
- équation de convection-diffusion stationnaire
- Liste de diffusion whatsapp - Guide
- Editeur d'équation - Télécharger - Vie quotidienne
- Formule équation - Télécharger - Études & Formations
- Envoyer un mail à une liste de diffusion gmail - Guide
- Service de diffusion de données ✓ - Forum TNT / Satellite / Réception
2 réponses
Salut.
je pense que le principal problème c'est la définition de tes vecteur.
[n;m] cré un vecteur de deux valeurs : n et m.
si tu veux créer une matrice, mieux vaut faire ainsi :
A=zeros(n,m):
vecterc=A\B;
devrait suffire, je ne vois pas l'interet de faire une boucle sachant que tu recalcul n fois strictement la même chose pour tout mettre dans la même variable.
je pense que le principal problème c'est la définition de tes vecteur.
[n;m] cré un vecteur de deux valeurs : n et m.
si tu veux créer une matrice, mieux vaut faire ainsi :
A=zeros(n,m):
vecterc=A\B;
devrait suffire, je ne vois pas l'interet de faire une boucle sachant que tu recalcul n fois strictement la même chose pour tout mettre dans la même variable.
merci pour la réponse, mais j'ai une matrice nxn avec a11 = a22 = ...=a66 = -2D
et a12=a23=a34=a45=-alfa et a21=a32=a43=a54=-beta. donc si j'utilise une matrice nxm je complique les choses???? pour vecterc=A\B vous avez raison je dois pas faire une boucle.
lorsque je lance le calcul matlab me donne la matrice A correcte, mais il me donne pas le vecteur B, je croix que le problème est dans le vecteur B????
et a12=a23=a34=a45=-alfa et a21=a32=a43=a54=-beta. donc si j'utilise une matrice nxm je complique les choses???? pour vecterc=A\B vous avez raison je dois pas faire une boucle.
lorsque je lance le calcul matlab me donne la matrice A correcte, mais il me donne pas le vecteur B, je croix que le problème est dans le vecteur B????