MATLAB Demo on 7.7-7.8: Differential Equations

Contents

Direction Fields

Let's start with a differential equation, say

At each point in the (x,y) plane (at least if y is not zero), this specifies what the slope of any solution curve must be. We can plot these to get a visual impression of the equation.

[xx, yy] = meshgrid(-2:.4:2,0.01:.4:4.01);
quiver(xx,yy,xx./xx,2*tanh(.5*xx./yy))

Solutions

We can solve for the ``general solution'' of the equation.

syms x y
gensol=dsolve('Dy=x/y','x')
yfun = @(x, C1) eval(vectorize(gensol(1)))
hold on
for c=0:10
    ezplot(yfun(x,c),[-2,2]), axis([-2,2,0,4])
    title('some solution curves of dy/dx = x/y')
end
hold off
 
gensol =
 
  (x^2+C1)^(1/2)
 -(x^2+C1)^(1/2)
 
 

yfun = 

    @(x,C1)eval(vectorize(gensol(1)))

Another Example

Let's look now at a linear equation,

Again we plot the direction field and some solution curves.

[xx, yy] = meshgrid(-pi:.2*pi:pi,-4:4);
quiver(xx,yy,xx./xx,2*tanh(.5*cos(xx).*(1-yy)))
lingensol=dsolve('Dy=(1-y)*cos(x)','x')
yfun2 = @(x, C1) eval(vectorize(lingensol))
hold on
for c=-4:4
    ezplot(yfun2(x,c),[-pi,pi]), axis([-pi,pi,-4,4])
    title('some solution curves of dy/dx + y*cos(x) = cos(x)')
end
hold off
 
lingensol =
 
1+exp(-sin(x))*C1
 
 

yfun2 = 

    @(x,C1)eval(vectorize(lingensol))