In [1]:
import sympy as sym
import numpy as np
from IPython.display import display,Math
import matplotlib.pyplot as plt

Exercise

In [2]:
display(Math('f=x^2'))
display(Math('x_a \\: \\epsilon \\: (-2,2)'))
$\displaystyle f=x^2$
$\displaystyle x_a \: \epsilon \: (-2,2)$
In [3]:
def computetangent(f,xa,bnds):
    # defining the derivative and values at point xa
    fa = f.subs(x,xa)
    df = sym.diff(f)
    dfa = df.subs(x,xa)
    
    # evaluate the tangent line
    xx = np.linspace(bnds[0],bnds[1],200)
#     print(bnds)
#     print(xx[0])
#     print((xx-xa)[0])
#     print(fa)
#     print(dfa)
    return dfa * (xx-xa) + fa # y values
In [4]:
x = sym.symbols('x')
f = x**2
xx = np.linspace(-2,2,200)
ffun = sym.lambdify(x,f)(xx)

tanline = computetangent(f,1,xx[[0,-1]])
print(xx[[0,-1]])
# print(tanline)

plt.plot(xx,ffun)
plt.plot(xx,tanline)
plt.show()
[-2.  2.]
In [5]:
for a in xx:
    y = computetangent(f,a,xx[[0,-1]])
    plt.plot(xx,y,color=[abs(a)/3,abs(a)/4,abs(a)/2])
    
plt.plot(xx,ffun)
plt.axis('square')
plt.axis([-2,2,-1,3])
plt.axis('off')
plt.show()