0% ont trouvé ce document utile (0 vote)
47 vues3 pages

Code Matlab

Transféré par

Lawry Dicsipline
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
47 vues3 pages

Code Matlab

Transféré par

Lawry Dicsipline
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

% Dimensions du domaine

Lx = 1.0;

Ly = 1.0;

% Nombre de divisions dans chaque direction

nx = 10;

ny = 10;

% Espacement des noeuds

hx = Lx / (nx-1);

hy = Ly / (ny-1);

% Coordonnées des noeuds

x = linspace(0, Lx, nx);

y = linspace(0, Ly, ny);

% Nombre total de noeuds

N = nx * ny;

% Matrice de raideur et vecteur de charge

A = sparse(N, N);

b = zeros(N, 1);

% Fonction source

f = @(x, y) 10 * sin(pi * x) .* sin(pi * y);

% Assemblage des matrices

for i = 2:nx-1

for j = 2:ny-1

% Index global du noeud (i,j)


k = j + (i-1) * ny;

% Coordonnées du noeud

xi = x(i);

yj = y(j);

% Remplissage de la matrice A (utilisation de la méthode des différences finies)

A(k, k) = -2 * (1/hx^2 + 1/hy^2);

A(k, k-1) = 1/hy^2;

A(k, k+1) = 1/hy^2;

A(k, k-ny) = 1/hx^2;

A(k, k+ny) = 1/hx^2;

% Remplissage du vecteur b

b(k) = f(xi, yj);

end

end

% Conditions aux limites (Dirichlet)

for i = 1:nx

for j = 1:ny

k = j + (i-1) * ny;

if i == 1 || i == nx || j == 1 || j == ny

A(k, :) = 0;

A(k, k) = 1;

b(k) = 0;

end

end

end
% Résolution du système linéaire

u = A\b;

% Reshape du vecteur solution en une matrice pour l'affichage

U = reshape(u, ny, nx);

% Affichage de la solution

[X, Y] = meshgrid(x, y);

figure;

surf(X, Y, U);

xlabel('x');

ylabel('y');

zlabel('u');

title('Solution de l''équation de Poisson par la méthode des éléments finis');

Vous aimerez peut-être aussi