import numpy as np
import sympy as sym
import matplotlib.pyplot as plt
from IPython.display import display,Math
display(Math('\\lim_{x \\rightarrow a} f(x)'))
print('Example 1')
display(Math('\\quad \\lim_{x \\rightarrow 4} \\frac{x^2}{2}=\\frac{4^2}{2}=8'))
print('Example 2')
display(Math('\\quad f(x)= \\frac{x^2}{x-2}'))
display(Math('\\quad \\lim_{x \\rightarrow 2} f(x)=\\frac{0}{0} \\text??'))
display(Math('\\quad \\lim_{x \\rightarrow 2^+} f(x)=+\\infty'))
display(Math('\\quad \\lim_{x \\rightarrow 2^-} f(x)=-\\infty'))
x = sym.symbols('x')
fx = x**3
lim_pnt = 1.5
lim = sym.limit(fx,x,lim_pnt)
print(lim)
print(1.5**3)
display(Math('\\lim_{x\\to %g} %s = %g' %(lim_pnt,sym.latex(fx),lim)))
fxx = sym.lambdify(x,fx)
print(fxx(3))
xx = np.linspace(-5,5,200)
plt.plot(xx,fxx(xx))
plt.plot(lim_pnt,lim,'ro')
plt.show()
fx = (x**2)/(x-2)
fxx = sym.lambdify(x,fx)
xx = np.linspace(1,3,102)
lim_pnt = 2
lim = sym.limit(fx,x,lim_pnt,dir='+')
print(lim)
lim = sym.limit(fx,x,lim_pnt,dir='-')
print(lim)
plt.plot(xx,fxx(xx))
display(Math('\\lim_{x\\to %g^-} %s = %g' %(lim_pnt,sym.latex(fx),lim)))