Subsections

# Implicit Differentiation

## Background

### Implicit Differentiation

The implicitdiff command can be used to find derivatives of implicitly defined functions. Suppose we wanted to use implicit differentiation to find for the relation

x2y2+y3=0

Then we first define our relation and give it a label for later use.
  > f:=x^2*y^2+y^3=0;


The syntax of the implicitdiff command is shown by the following example.
  > implicitdiff(f,y,x);


The result of the command is the implicit derivative, . The syntax of this command is very similar to that of the diff command. The first argument is always the relation that you want to differentiate implicitly. We were careful to use an equation for this argument, but if you just give an expression for this argument, Maple assumes you want to set this expression equal to zero before differentiating. The second argument to the implicitdiff command is where you tell Maple what the dependent variable is. That is, by putting y here, we were saying that we were thinking of this relation as defining y(x) and not x(y). The remaining arguments to implicitdiff are for specifying the order of the derivative you want. See below for an example of finding the second derivative implicitly.

Second derivatives can also be computed with implicitdiff. The following command computes .

  > implicitdiff(f,y,x,x);


To compute numerical values of derivatives obtained by implicit differentiation, you have to use the subs command. For example, to find the value of at the point (1,-1) you could use the following command.

  > subs({x=1,y=-1},implicitdiff(f,y,x));


Sometimes you want the value of a derivative, but first have to find the coordinates of the point. More than likely, you will have to use the fsolve command for this. However, to get the fsolve command to give you the solution you want, you often have to specify a range for the variable. Being able to plot the graph of a relation can be a big help in this task, so we now describe the implicitplot command. This Maple command for plotting implicitly defined functions is in the plots package which must be loaded before using the command.
  > with(plots):

Here is an example of using this command to plot the hyperbola x2-y2=1. Note that you have to specify both an x range and a y range. This is because the implicitplot command works by setting up a grid inside the ranges you specify and then using the grid points as starting values in solving the relation numerically.
  > implicitplot(x^2-y^2=1,x=-3..3,y=3..3);

To get a good graph with this command, you usually have to experiment with the ranges. For example the following command
  > implicitplot(f,x=-1..1,y=1..2);

produces an empty plot. The reason is simply that there are no solutions to x2y2+y3 = 0 with y > 0. This is easy to see if you rewrite the equation as x2y2= -y3 and recognize that both sides of the equation must be nonnegative. Usually a good strategy to follow is to start with fairly large ranges, for example -10 to 10 for both variables, and then refine them based on what you see.

This command can also have problems if the relation in question has solution branches that cross or are too close together. For example, try the following command.

  > implicitplot(f,x=-1..1,y=-1..0);

For y less than about -0.2, you should see the two smooth curves. However, for values of y closer to zero the two curves become jagged. In addition, the graph includes the whole x axis. To understand this, we need to take a closer look at the relation we tried to plot. The key is to notice that we can factor out y2 and write our relation as follows.

y2 (x2+y)

This makes it clear that the graph of the relation really has two pieces: y=0 and y=-x2. These two curves intersect at the origin, which explains why implicitplot has problems there.

As our last example, consider the relation . Try the following commands to see what a part of the graph of this relation looks like.

  > g := x^2*sin(y)=1;


  > implicitplot(g,x=-4..4,y=-10..10);

Suppose you were asked to find the slope of the graph of this relation at x=2, but you were only given that the value of y was about 9. Using the plot, it is relatively easy to find this derivative by first using fsolve to find the y value and then substituting to into the formula for the derivative. Note the use of a label so we can use the value of y in the next command.
  > y_sol := fsolve(subs(x=2,g),y,y=8..10);


  > evalf(subs({x=2,y=y_sol},implicitdiff(g,y,x
)));


## Exercises

1.
Find the slopes of the graph of xy3-x3y=1 at the points (there are three such points) where x=2. Supply a plot of the graph that includes the points in question.
2.
Consider the relation

(a)
Use implicit differentiation to find the derivative dy/dx.
(b)
Solve the relation for y and then compute dy/dx directly.
(c)
Compare your two results. Can you show that they are equal?

3.
Consider the relation xy2-x2y = 1.
(a)
Use the implicitplot command and/or any other technique to determine what the graph of this relation looks like. How many separate branches does the graph contain?
(b)
Find the point(s) on the graph where the tangent line is horizontal.
(c)
Are there any points on the graph where the derivative is undefined because the tangent line is vertical? If so, find them. (Hint - if the tangent line is vertical, what is true about ?)