% 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
