Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

I'd like to plot the graph of the direction field for a differential equation, to get a feel for it. I'm a novice, right now, when it comes to plotting in Mathematica, so I'm hoping that someone can provide a fairly easy to understand and thorough explanation. My hope is that I will become fairly proficient at understanding plotting in Mathematica, as well as differential equations. I'm a little more familiar with differential equations, but very far from what I'd consider to be an expert.

I do have an equation in mind, taken from this question from Math.SE:


I ran DSolve on it, and after a minute it was unable to evaluate the function. So perhaps this could make for an interesting exploration for others as well. I'm wondering what experience in Mathematica has taught others about what can be done in Mathematica - I'm hoping someone can offer some useful tips and demonstrations.

I'm really interested in learning about what can be done with differential equations, so I think that other equations will suffice if they serve as a better example.

share|improve this question

4 Answers 4

up vote 11 down vote accepted

For a first sketch of the direction field you might use StreamPlot:

f[x_, y_] = (y + E^x)/(x + E^y)

StreamPlot[{1, f[x, y]}, {x, 1, 6}, {y, -20, 5}, Frame -> False, 
 Axes -> True, AspectRatio -> 1/GoldenRatio]

Mathematica graphics

share|improve this answer

If you wish to explore the solutions to an equation I'd suggest the EquationTrekker package. Have a look at the documentation.

EquationTrekker[y'[x] == (y[x] + Exp[x])/(x + Exp[y[x]]), y, {x, -5, 5}]


share|improve this answer

No need to solve the differential equation to generate a direction field. According to the Wikipedia lemma on slope fields you can plot the vector {1, (y + Exp[x])/(x + Exp[y])}:

VectorPlot[{1, (y + Exp[x])/(x + Exp[y])}, {x, 0, 2}, {y, 0, 2}]

Mathematica graphics

or perhaps you could use a stream plot:

StreamPlot[{1, (y + Exp[x])/(x + Exp[y])}, {x, 0, 2}, {y, 0, 2}]

Mathematica graphics

share|improve this answer

Here is something you can do quickly and gives a nice understanding of the behavior for positive and negative initial conditions:

s[r_?NumericQ] := 
               NDSolve[{D[y[x], x] == (y[x] + E^x)/(x + E^y[x]), y[0] == r}, y, {x, 0, 5}]

  y[x] /. s[#] & /@ Union[Range[-2, 0, .1], Range[-.10, 10, 1]]], {x, 0, 15}, 
  PlotRange -> Full]

Mathematica graphics

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.