#include #include #include #include #include "ps.h" double f(double); void plotd(void); void frame(void); int main(void) { init(); viewport(0.2, 0.2, 0.8, 0.6); xyworld(0.0, -1.0, 1.0, 1.0); frame(); plotd(); fin(); return 0; } double f(double x) { double pi,f1; pi=atan(1.0)*4.0; f1=exp(-x)*sin(4.0*pi*x); return (f1); } void plotd() { double x1[21],y1[21];double x=1.0; int i,n=20; for (i=0;i<=n; i++) { x1[i]=(double)i/(double)n; y1[i]=f(x1[i]); } linewidth(1.5); linety(1); setgray(0.0); plot(x1[0], y1[0], 3); for (i=1;i<=n-2;i++) { spline1(x1[i-1],y1[i-1],x1[i],y1[i],x1[i+1],y1[i+1],x1[i+2],y1[i+2],-1); } spline1(x1[n-3],y1[n-3],x1[n-2],y1[n-2],x1[n-1],y1[n-1],x1[n],y1[n],0); spline1(x1[n-3],y1[n-3],x1[n-2],y1[n-2],x1[n-1],y1[n-1],x1[n],y1[n],1); stroke(); } void frame() { double x,y,dx,dy; int nx=2,ny=2,ix,iy; linewidth(1.0); rect(0.0, -1.0, 1.0, 1.0, 0.0, 1.0, 1); for(ix=1;ix<=nx*10-1;ix++) { x = (double)ix/((double) nx*10); dy=1.0; if(ix/10*10==ix) setgray(0.5); else setgray(0.8); plot( x, -dy, 3); plot( x, dy, 2); stroke(); } 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) setgray(0.5); else setgray(0.8); plot( 0.0, y, 3); plot( dx, y, 2); stroke(); } setgray(0.0); textx(0.75, 0.0, 1, "x"); textx(0.05, 0.02, 1, "0"); textx(0.55, 0.02, 3, "0.5"); textx(0.95, 0.02, 1, "1"); texty(0.0, 0.5, 1, "y"); texty(0.0, -1.0, 2, "-1"); texty(0.0, 0.0, 1, "0"); texty(0.0, 1.0, 1, "1"); return; }