% plot_n.m --- 長方形領域上の問題の差分解の描画 (Neumamm, free edge 境界条件) % % 使用例 % (1) Laplacian の第 n 固有関数 % [v,d]=eigs(eigp2nsp(nx,ny),10,0); % plot_n(v(:,11-n),nx,ny); % (2) 重 Laplacian の第 n 固有関数 % [v,d]=eigs(plate_f1(N,0.3),200,0); 小さい方から200個の固有値、固有関数 % plot_n(v(:,201-n),N,N); (n=4 は正の最小固有値) function plot_n(v,nx,ny) % メモリー中に v[0][0],v[1][0],...,v[Nx][0],v[0][1],.. と並んでいる。 % 2次元配列に収める vvv=zeros(nx+1,ny+1); vvv(:)=v; % 境界での値を修正する (角点では2倍することに注意) vvv(1,:)=vvv(1,:)*sqrt(2); vvv(nx+1,:)=vvv(nx+1,:)*sqrt(2); vvv(:,1)=vvv(:,1)*sqrt(2); vvv(:,ny+1)=vvv(:,ny+1)*sqrt(2); % mesh(), contour() には渡すには、vvは ny+1,nx+1 とする必要がある。 vv=vvv'; x=0:1/nx:1; y=0:1/ny:1; % 左側にグラフの鳥瞰図 subplot(1,2,1); colormap hsv; mesh(x,y,vv); % 右側に等高線 right=subplot(1,2,2); contour(x,y,vv); pbaspect(right,[1 1 1]); end
2017-06-19