2017-04-19 127 views
0

如果R是平面(0,1)x(0,2)的區域,設L是二維拉普拉斯算子,並考慮R上的泊松方程Lu = 4。解是函數v(x,y)=(xy)^ 2。設g是對R的邊界的限制。爲了得到它,我們設h = k = 1/2,m = 3,n = 5。橢圓方程的有限差分法

這是我的代碼:但它不起作用。

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

它是利用一定的差異的方法找到近似解,並將其與比較正確的一個。它不起作用,因爲它不給我任何答案。它顯示N/A。 –

+0

它說從底部的第三行有一個錯誤。 –

+0

我用錯誤截圖更新了我的問題。謝謝! –

回答

1

根據您的問題描述,我改變了以下,並得到一個答案:

h=1/2;