Bonjour à tous,
j'ai besoin de résoudre une équation de Laplace. Mon domaine est un carré de coté 1. Je découpe donc des cellules élémentaires dans mon domaine et essaie de me ramener à un système linéaire du type AX=b.
Mes conditions aux frontières du domaine sont X=0. En tenant compte de ces conditions j'obtiens une matrice singulière...donc pas possible de résoudre le système. Je me sens vraiment perdu car lorsque j'essaie de construire la matrice à la main (en découpant mon domaine en 9 cellules élémentaires par exemple...) mon résultat semble correct...
je joins le code , je comprends vraiment pas où est l'erreur...tous les conseils sont les bienvenus
merci d'avance
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 function [ A ] = mat( nx ) %matrix to solve laplace equation % parameter are the number of point, assuming the same number of point % for x axis and y axis dx=1/(nx-1); k=0.01; b=0.5; for j=1:nx*nx%éléments diagonaux A(j,j)=1/(dx^2)*(-4*k)+b; if j-1>=1 A(j-1,j)=-k/dx^2; end %contribution des éléments autour du point considéré if j+1<=nx*nx A(j+1,j)=-k/dx^2; end if j-nx>=1 A(j,j-nx)=-k/dx^2; end if j+nx<=nx*nx A(j,j+nx)=-k/dx^2; end end %conditions au limites du domaine for i=1:nx*nx for j=1:nx*nx if j>=1 && j<=nx A(i,j)=0 end if j>=nx*nx-nx+1 && j<=nx*nx A(i,j)=0 end if rem(j,nx)==1 A(i,j)=0 end if rem(j,nx)==0 A(i,j)=0 end end end end
Partager