Calculus I
Lesson 11: Implicit Functions and Implicit Differentiation
Usually when we speak of functions, we are talking about explicit functions of the form y = f(x). Sometimes we have instead an equation in x and y, for example, x + y + xy = sin(x + y), which may not be solvable for y. The solutions to this equation are a set of points {(x,y)} which implicitly define a relation between x and y which we will call an implicit function . Implicit functions are often not actually functions in the strict definition of the word, because they often have multiple y values for a single x value. They do have graphs and derivatives however.
You are probably familiar with some linear implicit functions from algebra. Lines in point-slope and standard form (such as y -3 = 2(x + 5) and 7x + 9y = 63) are both examples of implicit functions since they are not explicitly solved for y in terms of x. These can be solved for y easily enough and converted into explicit functions. However, many implicit functions are difficult or impossible to convert to explicit functions and must be left in implicit form.
Our first task will be, given an implicit defined function, can we plot some individual points on the graph. Lets start with , and find all points where x has the value 2.
> restart; with(plots):
Warning, the name changecoords has been redefined
> imp_fun := -4*x + 10*(x^2) * (y^(-2)) + y^2 = 11;
Our method will consist of two steps : first, substitute for the value of x, then solve the resulting equation in one variable for y.
We substitute x= 2 into the implicit equation. This gives us an equation with only one unknown. We solve this equation and get exact radical solutions. We can convert these to decimal answers in this way.
> subs( x = 2, imp_fun );
> s := solve( % );
> s := evalf( % );
GRAPHING IMPLICIT FUNCTIONS
Graphing implicit functions opens up an exciting new world of graphing possibilities. Unfortunately, its quite time-consuming to graph most implicit functions by hand - often rendering them effectively ungraphable without technological aids. Fortunately, Maple graphs these functions effectively.The results are amazing and somewhat a kin to mathematical tea leaves with many intricacies not usually seen in explicit functions.
Instead of using the plot command, we use the implicitplot command. The first thing you may notice about implicit functions is that most of these functions fail the vertical line test.... miserably! That failure is one of the reasons they are so interesting. Here is a tilted ellipse.
The implicit equation , an x range, and a y range.
> implicitplot( x^2 + x*y + y^2 = 16, x = -5..5, y = -5..5, grid=[50,50] );
Some of the shapes are remarkably simple.
> implicitplot( x^4 + 8*(x^3) + y^4 = 16, x = -12..10, y = -10..10, grid=[50,50],thickness = 2, color = brown, scaling = constrained);
On the other hand, some functions can be remarkably complicated. In fact, this one is so complicated that our first attempt just gives a hint as to the complexity. By increasing the number of points used in the production of the graph, a great amount of detail and subtlety become visible.
> implicitplot( x*y*cos(x^2 + y^2) = 1, x = -10..10, y = -10..10, grid=[30,30] );
> implicitplot( x*y*cos(x^2 + y^2) = 1, x = -10..10, y = -10..10, grid=[80,80] );
Many of these graphs are symmetrical in various ways. These are symmetric to the y axis.
> implicitplot( x^2 + 1.5*y*x^2 + y^2 = 1, x = -10..10, y = -10..10, grid=[50,50] );
> implicitplot( (x^2 + y^2 -2) = (.5 + y*x^2)^2 , x = -5..5, y = -5..5, grid=[100,100] );
This one is symmetrical to the x axis
> implicitplot( -4*x + 10*(x^2) + (y^(-2)) + y^2 = 11, x = -5..5, y = -5..5, grid=[100,100] );
And this one is symmetrical to both the x and y axes.
> implicitplot( x^2 - y^2 = x*y*sin(x*y), x = -4..4, y = -3..3, grid=[100,100] );
This graph is apparently symmetrical to the line y = -x.
> implicitplot( x - y + sin(2.5*x*y) = sin(x) - sin(y) + sin(x*y), x = -5..5, y = -5..5, grid=[100,100] );
Some of the graphs have symmetries and patterns which are not as easy to describe.
> implicitplot( (x*y)*sin(y) = x*cos(x-y), x = -10..10, y = -10..10, grid=[100,100]);
This one has more complex pattern which hints as a more complex type of symmetry.
> implicitplot( ln( (x + 7*sin(y))^2 ) = exp(y + 2*cos(x)) , x = -9..9, y = -12..3, grid=[100,100]);
This graph creates a Tesslation-like pattern in the plane.
> implicitplot( sin(x + 2*sin(y) ) = cos( y + 3*cos(x)), x = -10..10, y = -10..10, grid=[100,100]);
C IMPLICIT DERIVATIVES
Just as we use the implicitplot command rather than the plot command to graph these functions, we use the implicitdiff command instead of the diff command to find the derivatives of implicit functions.
> implicitdiff( -4*x + 10*(x^2)*(y^(-2) ) + y^2 = 11, y, x);
The format of this command is an equation which implicitly defines a function, then the dependent and independent variables y, and x. Note that the result of taking an implicit derivative is a function in both x and y.
Since an implicit function often has multiple y values for a single x value, there are also multiple tangent lines. In this example, we will go through several steps to construct all of the tangent lines for the value of x = 2.
Lets start with the same function we used above.
> imp_fun := -4*x + 10*(x^2)*(y^(-2)) + y^2 =11;
Step 1 : Choose an x value (c)
> c := 2;
Step 2 : Find the Corresponding y Values
> s := evalf( solve( subs( x = c, imp_fun)));
Step 3 : Fiind the slope for each point - remember the implicit derivative is a function of both x and y. For x = c, there are four different values of y, and thus 4 different slopes.
> m1 := evalf( subs ( { x = c, y = s[1] }, implicitdiff( imp_fun, y,x)));
> m2 := evalf( subs ( { x = c, y = s[2] }, implicitdiff( imp_fun, y,x)));
> m3 := evalf( subs ( { x = c, y = s[3] }, implicitdiff( imp_fun, y,x)));
> m4 := evalf( subs ( { x = c, y = s[4] }, implicitdiff( imp_fun, y,x)));
We are finding the value of the slope for each of the 4 y values by substituting x = c, and y into the implicit derivative for each case.
Step 4 : Plot the function and its 4 tangent lines
> implicitplot( {y - s[1] = m1*(x-c), y - s[2] = m2*(x-c), y - s[3] = m3*(x-c), y - s[4] = m4*(x-c), imp_fun }, x = -5..5, y = -5..5, grid=[100,100]);