Gerben, Again, thanks for all you do. Here's a Fourier approximation of a square wave. Again, I compiled this in Texshop so I know it works. %verbatimtex % \input mtplain % \MTMI{8pt}{6pt}{5pt} % \MTSY{8pt}{6pt}{5pt} % \MTEX{8pt} % \MathRoman{tir}{8pt}{6pt}{5pt} % \MathBold{tib}{8pt}{6pt}{5pt} %etex %Input Context macros input mp-tool %define ytick vardef ytick(expr pos)= path p; p:=(-2,0)--(2,0); draw p shifted pos; enddef; %define xtick vardef xtick(expr pos)= path p; p:=(0,-2)--(0,2); draw p shifted pos; enddef; %define pi pi:=3.14159; %define cosine in radians vardef cos(expr x)= cosd(x*180/pi) enddef; %define sine in radians vardef sin(expr x)= sind(x*180/pi) enddef; %hyperbolic sine vardef sinh(expr x)= (exp(x)-exp(-x))/2 enddef; beginfig(1); %enter number of terms numeric N; N=6; %define L numeric L; L:=pi; %define a_0 ao:=1; %define a_n vardef a(expr n)= 2*sin(n*pi/2)/(n*pi) enddef; %define b_n vardef b(expr n)= 0 enddef; %initialize scale numeric ux, uy; pi*ux=2in; 1.5*uy=2in; %draw axes drawarrow (0,0)--(3.5ux,0); drawarrow (0,0)--(0,1.5uy); %label axes label.rt(btex $x$ etex, (3.5ux,0)); %tick marks xtick((pi*ux,0)); label.bot(btex $\pi$ etex, (pi*ux,0)); ytick((0,1*uy)); label.lft(btex $1$ etex, (0,1*uy)); %draw the function in black draw (0,1uy)--((pi/2)*ux,1uy); %draw Fourier approximation in cyan path p; numeric x, y; x:=0; y:=ao/2; for k=1 step 1 until N: y:=y+a(k)*cos(k*pi*x/L)+b(k)*sin(k*pi*x/L); endfor; p:=(x,y); for x=0 step .1 until pi: y:=ao/2; for k=1 step 1 until N: y:=y+a(k)*cos(k*pi*x/L)+b(k)*sin(k*pi*x/L); endfor; p:=p--(x,y); endfor; x:=pi; y:=ao/2; for k=1 step 1 until N: y:=y+a(k)*cos(k*pi*x/L)+b(k)*sin(k*pi*x/L); endfor; p:=p--(x,y); p:=p xyscaled(ux,uy); draw p withcolor cyan; endfig; beginfig(0); %enter number of terms numeric N; N=6; %define L numeric L; L:=pi; %define a_0 ao:=1; %define a_n vardef a(expr n)= 2*sin(n*pi/2)/(n*pi) enddef; %define b_n vardef b(expr n)= 0 enddef; %initialize scale numeric ux, uy; 6*pi*ux=2in; 1.5*uy=2in; %draw axes drawdblarrow (-3.5*pi*ux,0)--(3.5*pi*ux,0); drawarrow (0,0)--(0,1.5uy); %label axes label.rt(btex $x$ etex, (3.5*pi*ux,0)); %tick marks xtick((pi*ux,0)); xtick((2*pi*ux,0)); xtick((3*pi*ux,0)); label.bot(btex $3\pi$ etex, (3*pi*ux,0)); xtick((-pi*ux,0)); xtick((-2*pi*ux,0)); xtick((-3*pi*ux,0)); label.bot(btex $-3\pi$ etex, (-3*pi*ux,0)); ytick((0,1*uy)); label.lft(btex $1$ etex, (0,1*uy)); %draw the function in black path q; q:=(-pi/2,1)--(pi/2,1); q:=q xyscaled(ux,uy); draw q; draw q shifted (2*pi*ux,0); draw q shifted (-2*pi*ux,0); %draw Fourier approximation in cyan path p; numeric x, y; x:=-3*pi; y:=ao/2; for k=1 step 1 until N: y:=y+a(k)*cos(k*pi*x/L)+b(k)*sin(k*pi*x/L); endfor; p:=(x,y); for x=-3*pi step .1 until 3*pi: y:=ao/2; for k=1 step 1 until N: y:=y+a(k)*cos(k*pi*x/L)+b(k)*sin(k*pi*x/L); endfor; p:=p--(x,y); endfor; x:=3*pi; y:=ao/2; for k=1 step 1 until N: y:=y+a(k)*cos(k*pi*x/L)+b(k)*sin(k*pi*x/L); endfor; p:=p--(x,y); p:=p xyscaled(ux,uy); draw p withcolor cyan; endfig; end; On Mar 26, 2005, at 3:19 PM, Gerben Wierda wrote:
I am trying to learn metapost/fun, inline in ConTeXt source. Some basic things are clear, but now the issue is metapost itself.
For instance, I would like to plot a Fourier approximation of a block function.
For instance, I would like to plot a gaussian spread.
I am looking for examples on how to do this. I need to do a bit of programming here and these are my initial projects.
Thanks in advance,
G
_______________________________________________ ntg-context mailing list ntg-context@ntg.nl http://www.ntg.nl/mailman/listinfo/ntg-context