We often write a function the output variable (usually \(y\)) isolated on one side of the equation (e.g., \(y = 3x + 7\)). However, sometimes, it’s cumbersome or impossible to isolate the output variable (e.g. \(y^3 + x^2y^5 - x^4 = 27\)). In such cases, we have what’s called an implicit relationship between our variables. We can find the derivative with respect to \(y\) for these functions using a process called implicit differentiation. More details about the operation can be found here and here.

In Python, we can perform implicit differentiation using the sympy.idiff.

Example

For \(y^3 + x^2y^5 - x^4 = 27\) (a) find \(dy/dx\) using implicit differentiation (b) find the slope of the tangent line to the curve at the point \((0, 3)\).

from sympy import *

x, y = symbols("x y")

expr = y**3 + x**2*y**5 - x**4 - 27

dydx = idiff(expr, y, x)
dydx
## 2*x*(2*x**2 - y**5)/(y**2*(5*x**2*y**2 + 3))
dydx.subs({x:0, y:3})
## 0

Example

For the demand equation \(x = \sqrt{200 - p^3}\), differentiate implicitly to find \(dp/dx\).

p = symbols("p")

expr = -x + sqrt(200 - p**3)

dpdx = idiff(expr, p, x)
dpdx
## -2*sqrt(200 - p**3)/(3*p**2)