%első véges differencia programom! clc; close all; clear variables; %x irány x0=0; x1=1; nx=11; x=linspace(x0,x1,nx); dx=x(2)-x(1); lambda_x=1; %y irány y0=0; y1=1; ny=11; y=linspace(y0,y1,ny); dy=y(2)-y(1); lambda_y=1; %K mátrix K=zeros(nx*ny,nx*ny);%memory allocation for i=1:ny for j=1:nx tmp=(i-1)*nx+j; if i==1 || i==ny || j==1 || j==nx K(tmp,tmp)=1; else %általános belső pont esetében %X irány K(tmp,tmp)=-2*lambda_x/dx^2; K(tmp,tmp-1)=lambda_x/dx^2; K(tmp,tmp+1)=lambda_x/dx^2; %y irányban K(tmp,tmp)=K(tmp,tmp)-2*lambda_y/dy^2; K(tmp,tmp-nx)=lambda_y/dy^2; K(tmp,tmp+nx)=lambda_y/dy^2; end end end figure; spy(K); %b vektor b=zeros(nx*ny,1); b(1:nx)=20; %számítás %T=inv(K)*b; T=K\b; %T vektor -> mátrix T=reshape(T,ny,nx)'; figure; [X,Y]=meshgrid(x,y); surf(X,Y,T); axis equal; view(0,-90); figure; [X,Y]=meshgrid(x,y); surf(X,Y,T,'FaceColor','interp'); axis equal; view(0,-90);