\def{integer  pas=5}
\def{real  centrex=0}
\def{real  centrey=0}
\def{real  xy_size= 5}
\def{text f=\parm1}
\def{text g=\parm2}
\def{integer pas=\parm3}
\def{real centrex=\parm4}
\def{real centrey=\parm5}
\def{real xy_size= \parm6}
\def{real taille= \parm7}


\def{real grille=\xy_size/\pas}
\def{text data=}
\def{real N=1}
\for{ a=-\pas to \pas}{
\def{real u= \centrex+(\a*\xy_size/\pas)}
\def{function  fx= evalue(\f,x=\u)}
\def{function  gx= evalue(\g,x=\u)}
 \for{b=-\pas to \pas}
	 { 
	 \def{real v=\centrey+(\b*\xy_size/\pas)}
	\def{function  A= evalue(\fx,y=\v)}
	\def{function  B= evalue(\gx,y=\v)}
	\def{real N=max(\N,((\A)^2+(\B)^2)^(1/2))}
	}}
	\for{ a=-\pas to \pas}{
\def{real u= \centrex+(\a*\xy_size/\pas)}
\def{function  fx= evalue(\f,x=\u)}
\def{function  gx= evalue(\g,x=\u)}
\for{b=-\pas to \pas}
	 { 
	 \def{real v=\centrey+(\b*\xy_size/\pas)}
	\def{real  A= evalue(\fx,y=\v)}
	\def{real  B= evalue(\gx,y=\v)}
	\def{text data=\data
	arrow \u,\v,\u+2*\A/(\grille*\N),\v+2*\B/(\grille*\N) , 8,green}
	}}
<center>\draw{\taille,\taille}
{
xrange \centrex-\xy_size, \centrex+\xy_size
yrange \centrey-\xy_size, \centrey+\xy_size
parallel \centrex-\xy_size,\centrey-\xy_size,\centrex+\xy_size,\centrey-\xy_size,0,\xy_size/10,20,grey
parallel \centrex-\xy_size,\centrey-\xy_size,\centrex-\xy_size,\centrey+\xy_size,\xy_size/10,0,20,grey
arrow 0,0, 0,1,10,black
arrow 0,0, 1, 0 ,10,black
vline 0,0, black
hline 0,0, black
\data
}