DirectionFieldPlot[]
- To: mathgroup at christensen.cybernetics.net
 - Subject: [mg1242] DirectionFieldPlot[]
 - From: Xah Y Lee <xyl10060 at fhda.edu>
 - Date: Fri, 26 May 1995 05:50:05 -0400
 
Hello, here is a little crude program that plot direction field.
--------------------------- 
FieldPlot::usage = "FieldPlot[ f[x,y], {x,xMin,xMax,(dx)}, 
{y,yMin,yMax,(dy)}, 
(LineLength->1)] Plots the direction field of a scaler function f[x,y].";
Clear[unitV, FieldPlot]
unitV[{x_,y_}] := {x,y}/Sqrt[x^2+y^2]
Options[FieldPlot] = {LineLength->Automatic};
FieldPlot[ fun_, {xmin_,xmax_,dx_:Automatic}, {ymin_,ymax_,dy_:Automatic},
        opts___Rule]:=
        Module[{ll,i,j,dx2,dy2, gridList, slopeList, gp},
                ll = LineLength  /. {opts} /. Options[FieldPlot];
                If[dx===Automatic, dx2 = (xmax-xmin)/9, dx2 = dx];
                If[dy===Automatic, dy2 = (ymax-ymin)/9, dy2 = dy];
                If[ll===Automatic, ll = (dx2+dy2)/2 .9];
                gridList = 
                        N@Flatten[ Table[{i,j}, 
{i,xmin,xmax,dx2},{j,ymin,ymax,dy2}], 1];
                slopeList = N@fun[Sequence@@#]& /@ gridList;
                slopeList = slopeList /. m_/;NumberQ[m]->{1,m};
                slopeList = gridList + ll * (unitV/@ slopeList);
                
                gp = {  MapThread[Line[{#1,#2}]& , {gridList, slopeList}],
                                Point /@ gridList};
                Show[
                        Graphics[{Hue[0.],PointSize[.01], gp }, Axes->True,
                        AspectRatio->Automatic]
                ]
        ]/; NumberQ[N@xmin] && NumberQ[N@xmax] && NumberQ[N@ymin] && 
NumberQ[N@ymax]
FieldPlot[
        expr_,{x_,xmin_,xmax_, dx_},{y_,ymin_,ymax_, dy_}, opts___Rule ]:=
        FieldPlot[Function[{x,y},expr],{xmin,xmax,dx},{ymin,ymax,dy},opts];
FieldPlot[
        expr_,{x_,xmin_,xmax_},{y_,ymin_,ymax_}, opts___Rule ]:=
        FieldPlot[Function[{x,y},expr],{xmin,xmax},{ymin,ymax},opts];
----------------------------------
Example,
FieldPlot[ x^2-y, {x,-4,4,.5},{y,-4,4,.5}]
one can also use the package PlotField.m. For example,
Needs["Graphics`PlotField`"]
PlotVectorField[  unitV[{1,x^2-y}] , {x,-4,4},{y,-4,4},
        Axes->True, ColorFunction->Hue
]
 Xah       74631.731 at compuserve.com
 Quote of the day:
  Your nonsense is as good as mine.   --Metamathematician of metaland.