Curso de introducción a la programación con Python

Autor: Luis Fernando Apáez Álvarez

Proyecto 1 (parte II): Límites y pandas

Dataframes

En la primera parte del proyecto hemos aprendido a graficar funciones utilizando el módulo matplotlib. En esta parte aprenderemos a resolver límites utilizando el módulo sympy, además de poder graficar la función en cuestión y ver cómo ésta se va aproximando al valor del límite que buscamos.

Sabemos que siempre podemos resolver un límite utilizando el método de aproximación, es decir, evaluando la función en valores muy muy cercanos al valor del límite. Por ejemplo, si deseamos calcular

$$ \lim\limits_{x\rightarrow 2}x^{2}= $$

podemos hacerlo evaluando $f(x)=x^{2}$ en valores muy muy cercanos a 2. Recordemos que en estos casos es muy útil realizar una tabla para auxiliarnos en estas evaluaciones; Python nos brinda una herramienta muy poderosa para el análisis de datos mediante el módulo pandas, el cual tendrá dedicado una gran parte del curso en próximas lecciones, sin embargo, para el fin de este proyecto sólo trabajaremos con las tablas o dataframes.

Para ello crearemos un diccionario donde colocaremos en listas de comprensión los valores que asignaremos a la variable independiente $x$ y los valores que toma $f(x)$, es importante mencionar que el número de elementos de ambas listas debe ser el mismo. Por ejemplo creamos un diccionario asignando los valores $-3,-2,\ldots,2,3$ a $x$ respecto a la función $f(x)=x^{2}$:

lo cual consigue hacer la asociación que queríamos, esto es $f(-3)=9, f(-2)=4, f(0)=0, f(2)=4$, etcétera. Finalmente, para poder visualizarlo primero crearemos un dataframe usando pd.Dataframe() que recibe como parámetro el diccionario que creamos anteriormente

donde la primer columna es creada en automático para indexar las filas. Podemos acceder a los elementos de un dataframe utilizando df.iloc() que recibe como parámetros el índice correspondiente a la fila y/o el índice correspondiente a la columna. Por defecto nuestra primer columna tiene el índice cero. Por ejemplo, si deseamos obtener el valor correspondiente a la primer fila (índice 0) y a la segunda columna (índice 1) usamos

De este modo puede pensarse las posiciones de los elementos de un dataframe como las entradas de una matriz (en términos matemáticos). Para ayudar a visualizar las posiciones crearemos el siguiente dataframe

de donde, la primer entrada de [ , ] hace referencia al índice de la fila y la segunda entrada al índice de la columna. visualicemos ambos dataframes:

De tal manera podemos acceder, por ejemplo, a los siguientes valores

Finalmente, podemos acceder a los valores de más filas:

Graficando entradas de un dataframe

Ahora bien, realicemos las aproximaciones para hallar el límite mencionado líneas arriba. Lo que haremos será aproximarnos al valor de $x=2$ mediante los números de la forma $2 + \frac{1}{n}$, con $n=-4,-3,-2,-1,1,2,3,4$ (donde $n\neq0$); para que la función $f(x)=x^{2}$ tome dichos valores de aproximación crearemos una lista de comprensión dentro de otra lista de comprensión, esto es

o visualicemos lo anterior mediante un dataframe:

Ahora graficaremos la función en cuestión y los puntos obtenidos en el dataframe anterior. Es importante mencionar que podemos iterar sobre los valores dentro de un dataframe, lo cual conseguiremos accediendo a dichos valores como lo hicimos líneas arriba accediendo a las posiciones del dataframe (es decir, usando df.iloc[].

  1. Primero grafiquemos los puntos del dataframe, para ello debemos crear pares de la forma $(x,y)$ donde las entradas estarán dadas por las posiciones del dataframe. Por ejemplo, si queremos graficar el punto $(1.75, 3.0625)$ utilizaremos

Después graficamos todos los puntos del dataframe realizando una iteración:

  1. Graficamos la función y los puntos obtenidos anteriormente

lo cual muestra cómo nos vamos aproximando mediante la función al valor del límite, es decir, mientras más cercanos sean los valores de $x$ a $2$ podemos ver que la función se va acercando cada vez más a $f(x)=4$. Lo cual ya sabíamos pues podemos resolver el límite como

$$ \lim\limits_{x\rightarrow 2}x^{2}=\lim\limits_{x\rightarrow 2}2^{2}=4 $$

Para ver mejor esto podemos afinar las aproximaciones que hicimos en nuestro dataframe, lo cual conseguiremos aumentando el rango de iteración en las listas de comprensión del diccionario valores. Después, es de nuestro interés ver los datos ordenados en el dataframe de menor a mayor en la columna $x$, para ello utilizaremos df.sort_values(by="x"). Veamos:

Graficamos nuevamente la gráfica con los puntos anteriores

Calculando límites con sympy

Para finalizar la parte de límites podemos utilizar el módulo sympy para calcular de forma muy rápida y sencilla el límite de una función. Por ejemplo, si deseamos calcular

$$ \lim\limits_{x\rightarrow 1}\frac{x^{2}-1}{x-1} $$

empleamos

Resolvamos manualmente el límite anterior:

\begin{align*} \lim\limits_{x\rightarrow 1}\frac{x^{2}-1}{x-1}=\lim\limits_{x\rightarrow 1}\frac{(x+1)(x-1)}{x-1}=\lim\limits_{x\rightarrow 1}(x+1)=1+1=2 \end{align*}

Podemos también calcular límites infinitos. En este caso utilizaremos dos "o" seguidas para hacer alusión al símbolo de infinito $\infty$. Por ejmplo podemos calcular el límite $$ \lim\limits_{x\rightarrow\infty}\left(1+\frac{1}{x}\right)^{x} $$

Calculemos algunos otros límites

Para finalizar la parte II del proyecto grafiquemos la función $f(x)=\frac{sin(x)}{x}$ y veamos cómo nos aproximamos al valor de $x=0$:

Socialmedia.PNG