class Samp8 { static double f(double x) { double pi,fx; pi=Math.atan(1.0)*4.0; fx=Math.exp(-x)*Math.sin(4.0*pi*x); return(fx); } static void frame(PS ps1) { int ix,nx,iy,ny;double x,y,dx,dy; ps1.linewidth(1.0); ps1.rect(0.0,-1.0,1.0,1.0,0.0,1.0,1); nx=2; for (ix=1;ix<=nx*10-1;ix++){ x=(double)ix/(double)(nx*10);dy=1.0; if(ix/10*10==ix) ps1.setgray(0.5);else ps1.setgray(0.8); ps1.plot(x,-dy,3);ps1.plot(x,dy,2);ps1.stroke();} ny=2; for (iy=1;iy<=ny*10-1;iy++){ y=(double)iy/(double)(ny*10)*2.0-1.0;dx=1.0; if(iy/10*10==iy) ps1.setgray(0.5);else ps1.setgray(0.8); ps1.plot(0.0,y,3);ps1.plot(dx,y,2);ps1.stroke();} ps1.setgray(0.0); ps1.textx(0.75,0.0,1,"x");ps1.textx(0.05,0.02,1,"0");ps1.textx(0.55,0.02,3,"O.5"); ps1.textx(0.95,0.02,1,"1"); ps1.texty(0.0,0.5,1,"y");ps1.texty(0.0,-1.0,2,"-1");ps1.texty(0.0,0.0,1,"0"); ps1.texty(0.0,1.0,1,"1"); } static void plotd(PS ps1) { double [] x1=new double[21]; double [] y1=new double[21];int n,i; n=20; for (i=0;i<=n;i++){ x1[i]=(double)i/(double)n; y1[i] = f(x1[i]);} ps1.linewidth(1.5);ps1.linety(1); ps1.setgray(0.0); ps1.plot(x1[0],y1[0],3); for (i=1;i<=n-2;i++){ ps1.spline1(x1[i-1],y1[i-1],x1[i],y1[i],x1[i+1],y1[i+1],x1[i+2],y1[i+2],-1);} ps1.spline1(x1[n-3],y1[n-3],x1[n-2],y1[n-2],x1[n-1],y1[n-1],x1[n],y1[n],0); ps1.spline1(x1[n-3],y1[n-3],x1[n-2],y1[n-2],x1[n-1],y1[n-1],x1[n],y1[n],1); ps1.stroke(); } public static void main(String args[]) { PS ps1= new PS(); ps1.init(); ps1.viewport(0.2, 0.2, 0.8, 0.6); ps1.xyworld(0.0, -1.0, 1.0, 1.0); frame(ps1); plotd(ps1); ps1.fin(); } }