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.