This is a quick demo of Sympy, partly for you, but mostly for me. The actual notebook is available on my github iPythonExamples repository.

# import symbolic capability to Python
from sympy import *
# print things all pretty
from sympy.abc import *
init_printing()

Consider solving the problem

\(y = \frac{x^2\sqrt{3x-2}}{(x+1)^2}\), find \(\frac{dy}{dx}\)

# Need to define variables as symbolic for sympy to use them.
x, y= symbols("x, y", real = True)
# Define y
y = x**2*sqrt(3*x-2)/(x+1)**2
y # This causes it to output formatted nicely. The print command formats it as computer code
\begin{equation*} \frac{x^{2} \sqrt{3 x - 2}}{\left(x + 1\right)^{2}} \end{equation*}
# Taking the natural log of this:
a = ln(x**2*sqrt(3*x-2)/(x+1)**2)
a # Keep in mind that the left hand side is ln(y)
\begin{equation*} \log{\left (\frac{x^{2} \sqrt{3 x - 2}}{\left(x + 1\right)^{2}} \right )} \end{equation*}
# Taking its derivative with respect to x
# So, we took the log of the right side, then the derivative
diff(a,x)
\begin{equation*} \frac{\left(x + 1\right)^{2}}{x^{2} \sqrt{3 x - 2}} \left(\frac{3 x^{2}}{2 \left(x + 1\right)^{2} \sqrt{3 x - 2}} - \frac{2 x^{2} \sqrt{3 x - 2}}{\left(x + 1\right)^{3}} + \frac{2 x \sqrt{3 x - 2}}{\left(x + 1\right)^{2}}\right) \end{equation*}
# That is kind of messy. Let the computer simplify it
simplify(diff(a,x))
\begin{equation*} \frac{3 x^{2} + 15 x - 8}{2 x \left(3 x^{2} + x - 2\right)} \end{equation*}
# We could have done this all at once
simplify(diff(ln(y),x))
\begin{equation*} \frac{3 x^{2} + 15 x - 8}{2 x \left(3 x^{2} + x - 2\right)} \end{equation*}

Now, the left hand side processed the same way is

\begin{equation*} y \end{equation*}

take the natural log

\begin{equation*} \ln(y) \end{equation*}

Take the derivative

\begin{equation*} \frac{1}{y}dy \end{equation*}

So, our entire processed equation is

\begin{equation*} \frac{1}{y}dy = \frac{3 x^{2} + 15 x - 8}{2 x \left(3 x^{2} + x - 2\right)} \end{equation*}

so all we have to do is multiply the processed right side by \(y\) and we have our answer and our derivative is

simplify(diff(ln(y),x)*y)
\begin{equation*} \frac{x \left(3 x^{2} + 15 x - 8\right)}{2 \sqrt{3 x - 2} \left(x^{3} + 3 x^{2} + 3 x + 1\right)} \end{equation*}

Of course, Sympy is capable enough that we can just take the derivative directly

simplify(diff(y,x))
\begin{equation*} \frac{x \left(3 x^{2} + 15 x - 8\right)}{2 \sqrt{3 x - 2} \left(x^{3} + 3 x^{2} + 3 x + 1\right)} \end{equation*}

but that was way too easy.

We could compare them, just to be sure they are the same

simplify(diff(y,x))==simplify(diff(ln(y),x)*y)
True

Or plot this monstrosity

plot((diff(y,x),(x,0.2,10)), (y, (x,0.5,10)))
plot
# To change colors
# show = False delays the plot until we can set all of the parameters
# legend turns on the legend and uses the labels we have later.
p = plot((diff(y,x),(x,0.2,10)), (y, (x,0.5,10)), show = False, legend = True)
p[0].line_color = 'blue'
p[0].label = '$\\frac{dy}{dx}$'
p[1].line_color = 'green'
p[1].label = '$y$'
p.show()
plot

What if we wanted to make a substitution?

y.subs(x,alpha)
\begin{equation*} \frac{\alpha^{2} \sqrt{3 \alpha - 2}}{\left(\alpha + 1\right)^{2}} \end{equation*}

Comments

comments powered by Disqus