2017-04-19 1 views
0

Si R est la région du plan (0,1) x (0,2), Soit L l'opérateur Laplace 2-d et considère l'équation de Poisson Lu = 4 sur R. solution est la fonction v (x, y) = (xy)^2. Soit g la restriction de v à la frontière de R. Pour l'obtenir, on met h = k = 1/2, et m = 3, n = 5.Méthode des différences finies pour les équations elliptiques

Voici mon code: mais cela ne fonctionne pas.

function w=poisson(xl,xr,yb,yt,M,N) 
[email protected](x,y) 0; % define input function data 
[email protected](x) (x^2-2*x+1); % define boundary values 
[email protected](x) (x^2-4*x+4); % Example 8.8 is shown 
[email protected](y) y^2; 
[email protected](y) y^2; 
m=M+1;n=N+1; mn=m*n; 
h=(xr-xl)/M;h2=h^2;k=(yt-yb)/N;k2=k^2; 
x=xl+(0:M)*h; % set mesh values 
y=yb+(0:N)*k; 
A=zeros(mn,mn);b=zeros(mn,1); 
for i=2:m-1 % interior points 
    for j=2:n-1 
    A(i+(j-1)*m,i-1+(j-1)*m)=1/h2;A(i+(j-1)*m,i+1+(j-1)*m)=1/h2; 
    A(i+(j-1)*m,i+(j-1)*m)=-2/h2-2/k2; 
    A(i+(j-1)*m,i+(j-2)*m)=1/k2;A(i+(j-1)*m,i+j*m)=1/k2; 
    b(i+(j-1)*m)=f(x(i),y(j)); 
    end 
end 
for i=1:m % bottom and top boundary points 
    j=1;A(i+(j-1)*m,i+(j-1)*m)=1;b(i+(j-1)*m)=g1(x(i)); 
    j=n;A(i+(j-1)*m,i+(j-1)*m)=1;b(i+(j-1)*m)=g2(x(i)); 
end 
for j=2:n-1 % left and right boundary points 
    i=1;A(i+(j-1)*m,i+(j-1)*m)=1;b(i+(j-1)*m)=g3(y(j)); 
    i=m;A(i+(j-1)*m,i+(j-1)*m)=1;b(i+(j-1)*m)=g4(y(j)); 
end 
v=A\b; % solve for solution in v labeling 
w=reshape(v(1:mn),m,n); %translate from v to w 
mesh(x,y,w') 

enter image description here

+0

Il est en utilisant la méthode de nette différence pour trouver les solutions approximatives, et le comparer avec la corriger un. Ça ne marche pas, parce que ça ne me donne pas de réponses. Ça montre N/A. –

+0

Il dit qu'il y a une erreur sur la troisième ligne à partir du bas. –

+0

J'ai mis à jour ma question avec la capture d'écran d'erreur. Merci! –

Répondre

1

Selon la description du problème, j'ai changé ce qui suit et a obtenu une réponse:

h=1/2;