Python Part 2 - Calculus I
Instructions
- This page focuses on Calculus I examples, but it is useful for learning Python even if you are not taking Calculus.
- For each video, you can see the problem being solved, as well as the Python code used.
- You can also open the link to the Python Notebook file. You can click File>Download to download the notebook file to run on your own computer.
- Each video has a link to the full video page. These pages include links to related videos covering the same topics.
Learning Objectives
- Using list comprehension to estimate limits
- Finding and evaluating derivatives
- Calculating definite and indefinite integrals
- Word problems
- Simplifying difference quotients
- Plotting functions, derivatives, and tangent lines
- Patterns in higher derivatives
- Implicit and Parametric plots and tangent lines
- Finding absolute maxima and minima
- Finding intervals of increase and decrease, along with concavity
- Approximating definite integrals with Riemann Sums
Exercises
1.
Python Code: from sympy import *
x=symbols('x') f=(sqrt(x)-1)/(x**3-1) xval=[0.9,0.99,0.999,1.1,1.01,1.001,1.0001] yval=[f.subs(x,i) for i in xval] print(yval) print('The limit appears to be about 1.6666')
matplotlib notebook
plot(f,(x,0,2))L=limit(f,x,1)print('The limit is',L)
L=limit(f,x,1,'-') print('The left hand limit is',L)
L=limit(f,x,1,'+') print('The right hand limit is',L)
Open Python Notebook File
2.
Python Code: from sympy import *
mu,m,g,x,h=symbols('mu m g x h') F=mu*m*g*sqrt(x**2+h**2)/(x+mu*h) dF=F.diff(x)print('The general derivative is',dF) dFat10=F.subs({m:18,h:10,mu:0.55,g:9.8,x:10}) print('When x=10, the rate of change in t is',dFat10.evalf() ,'Newtons/meter')
dFat40=F.subs({m:18,h:10,mu:0.55,g:9.8,x:40}) print('When x=40, the rate of change in t is', dFat40.evalf(), 'Newtons/meter')
Open Python Notebook File
3.
Python Code:
from sympy import *
V,omega,t=symbols('V omega t', positive=True) v=V*cos(omega*t) v_int=(v**2).integrate(t) #You can also use: v_int=integrate(v**2,t) print(v_int)
vdef=integrate(v**2,(t,0,2*pi/omega)) print('The integral from 0 to 2pi/omega is', vdef)
rms=sqrt(omega/(2*pi)*vdef) print('The root mean square value of the voltage is', rms)
Open Python Notebook File
4.
from sympy import *
# Step 1 r,h=symbols('r h') V=pi*r**2*h+2/3*pi*r**3 S=2*pi*r*h+2*pi*r**2
# Step 2 command: solve V-4=0 hval=solve(V-4,h) print('the height solution is',hval)
# Step 3 command: subs Sofr=S.subs(h,hval[0]) print(Sofr)
matplotlib notebook
# Step 4 plot(Sofr,(r,0,10),ylim=[0,100])
Open Python Notebook File
5.
from sympy import *
# Use limit definition to find derivative of f(x)=1/x^3 h,x=symbols('h x') f=1/x**3
#Step 1 command: subs diffqt=(f.subs(x,x+h)-f)/h print('The difference quotient is',diffqt)
#Step 2 command: factor, expand, or simplify print(diffqt.expand().simplify())
#Step 3 command: subs print(diffqt.expand().simplify().subs(h,0))
6.
Python Code:
from sympy import *
x=symbols('x')
f=exp((x-75)**2/200)/(10*sqrt(2*pi))
y0=f.subs(x,80)
df=diff(f,x)
m=df.subs(x,80)
tanline=y0+m*(x-80)
print('The equation of the tangent line is y=',tanline.evalf())
matplotlib notebook
plot((f,(x,60,100)),(tanline,(x,60,100)))
Open Python Notebook File
7.
Python Code:
from sympy import *
x=symbols('x')
y=(6*x**2-4*x**3)/(2*sqrt(x**3*(2-x)))
Python Code:
matplotlib notebook
plot(y,(x,0,2),ylim=[-10,10])
dy=diff(y,x).simplify()
print(dy)
horiz=nsolve(dy,x,0.75)
print('The graph has a horizontal tangent line at x=',horiz)
Open Python Notebook File
8.
Python Code:
from sympy import *
# List Comprehension x=symbols('x') f=1/x # 1st 6 derivatives IN ONE LINE OF CODE! fderivs=[diff(f,x,i) for i in range(1,7)] #range(a,b)-> list of integers from a INCLUSIVE to b EXCLUSIVE print(fderivs)
# exponent is 1 bigger than the derivative we took: x^(n+1) # signs alternate (-1)^n or (-1)^(n+1). n=1 is negative, so (-1)^n #factorial numbers in the numerator: n! print('The formula for the nth derivative of f is (-1)^n*n!/x^(n+1)')
Open Python Notebook File
9.
Python Code:
from sympy import *
x,y=symbols('x y')
eqn=x**3+y**3-3*x*y
matplotlib notebook
peqn=plot_implicit(eqn,(x,-3,3),(y,-3,3))
dydx=idiff(eqn,y,x)
print('dy/dx=',dydx)
m=dydx.subs({x:2/3,y:4/3})
print('The slope of the tangent line is',m)
tanline=4/3+m*(x-2/3)
print('The equation of the tangent line is y=',tanline)
peqn.extend(plot(tanline,(x,-3,3)))
peqn.show()
Open Python Notebook File
10.
Python Code:
from sympy import *
x,t=symbols('x t') xt=t**3-3*t**2 yt=t**3-3*t
matplotlib notebook
pcurve=plot_parametric(xt,yt,(t,-2,3))
dydx=diff(yt,t)/diff(xt,t) m=dydx.subs(t,-2) x0=xt.subs(t,-2) y0=yt.subs(t,-2) tanline=y0+m*(x-x0) print('The equation of the tangent line is y=',tanline)
pcurve.extend(plot(tanline,(x,-20,0))) pcurve.show()
Open Python Notebook File
11.
Python Code:
from sympy import *
x,t=symbols('x t') xt=cos(t)**3 yt=sin(t)**3 eq1=xt-1/27 # To get exact answers, use the Rational command: eq1=xt-Rational(1,27) eq2=yt-16*sqrt(2)/27 # To get exact answers, use the Rational command: eq2=yt-Rational(16,27)*sqrt(2) tval=solve([eq1,eq2],t) print(tval)
dydx=diff(yt,t)/diff(xt,t) print('dy/dx=',dydx) m=dydx.subs(t,tval[0][0]) print(m) tanline=16*sqrt(2)/27+m*(x-1/27) print('The equation of the tangent line is y=',tanline.evalf())
matplotlib notebook
pcurve=plot_parametric(xt,yt,(t,0,pi/2)) pcurve.extend(plot(tanline,(x,0,1))) pcurve.show()
Open Python Notebook File
12.
Python Code:
from sympy import *
T=symbols('T') D=.0694*T**2-10.505*T+399.05 dD=diff(D,T) critvals=solve(dD,T) print(critvals)
candidates=[53,critvals[0],107] yvals=[D.subs(T,i) for i in candidates] print(yvals)
print('The minimum distance is', yvals[1],'degrees when T is about 75.68 degrees.')
Open Python Notebook File
13.
Python Code:
#Analyze the graph of y=2x^7-21x^6-36x^5+3x^4-38x^3+24x^2
from sympy import *
x=symbols('x') y=2*x**7-21*x**6-36*x**5+3*x**4-38*x**3+24*x**2
matplotlib notebook
plot(y,(x,-10,10),ylim=[-10,10])
dy=diff(y,x) # To find concavity, repeat this process but use dy=diff(y,x,2) to get the second derivative cvals=solve(dy,x) cvalsfloat=[i.evalf() for i in cvals] print(cvalsfloat)
matplotlib notebook
plot(dy,(x,-2,11),ylim=[-10,10])
print('The function is increasing from(-∞,-1.625),(0,0.35),(10,253,∞)') print('and decreasing from (-1.625,0) and (0.35,10.253)')
Open Python Notebook File
14.
Python Code:
from sympy import * import numpy as np
x=symbols('x') f=exp(-x**2) a=0 b=2 n=50 dx=(b-a)/n xi=np.arange(a,b,dx) yi=[f.subs(x,i) for i in xi] Approx=np.sum(yi)*dx print('The area is approximately', Approx)
Open Python Notebook File
