carlos avendaño soria
¿Por que la ruta de fundamentos de IA no está bien ordenada? Nos habla sobre del curso de funciones, pero ese está después, luego el curso de jupyter notebooks también.
En ciencia de datos nos interesa llevar los conceptos matemáticos como la derivada a una computadora. En Google Colab llevaremos a cabo la implementación y visualización de las derivadas.
Implementando y derivando una función en Colab
Una vez en Google Colab, importamos las librerías que necesitamos. Usamos NumPy para la manipulación matemática, y matplotlib para la visualización.
import numpy as np import matplotlib.pyplot as plt
Entonces definimos una función f, que en este caso corresponde a una cuadrática. También definimos el conjunto de datos x al que le aplicamos la función (recuerda, las computadoras trabajan con valores discretos, no contínuos). En este caso, x es un conjunto de 1000 datos que va de -10 a 10 (más sobre la función linspace). Una vez definida la función y las variables, graficamos con plt.plot
def f(x): return x**2 x = np.linspace(-10,10,1000) y = f(x) plt.plot(x, y, 'b') plt.grid()
Ahora, para implementar la derivada; como estamos trabajando con valores discretos, debemos implementarla de manera aproximada con la definición que usa límites. Recuerda que esta definición es
def df(f): h = 0.000001 return ( f(x+h) -f(x) )/h
Y para graficar la función con su derivada simplemente usamos plt.plot
plt.plot(x, y, 'b') plt.plot(x, df(f), 'r') plt.grid()
Podemos probar cambiando
def f(x): return np.sin(x)
Y volvemos a graficar.
Contribución creada con el aporte de Ciro Villafraz.
Existe una libreria len python llamada sympy que nos sirve para realizar muchas operaciones de cálculo diferencial, integral y mucho mas. Aqui les dejo un ejemplo de su implementacion:
import numpy as np from sympy import Symbol, Derivative, lambdify import matplotlib.pyplot as plt
x = Symbol('x') ## Declarando la expresion a utilizar expr = x**3 + 2*x ## puede ser un string f = lambdify(x, expr, 'numpy') ## 'Funcionalizando la expresión' ## Derivando la expresion anterior expr_d = Derivative(expr, x, evaluate=True) f_d = lambdify(x, expr_d) ## Funcionalizando ## Si no 'funcionalizamos' una expresión no podremos usarla como tal
## Grafica X = np.linspace(-2,2,num=1000) Y = f(X) # Aqui se utilizan las expresiones 'funcionalizadas' Y_d =f_d(X) fig, ax = plt.subplots(1, 2, sharey=True) fig.set_size_inches(10,5) ax[0].plot(X,Y, color='r') ax[1].plot(X, Y_d, color='g') plt.show()
carlos avendaño soria
¿Por que la ruta de fundamentos de IA no está bien ordenada? Nos habla sobre del curso de funciones, pero ese está después, luego el curso de jupyter notebooks también.
Carlos Eduardo Cabello Rodriguez
Las rutas ponen los cursos desorndenados, en el orden de la ruta de Fundamentos de Data Science y AI debe estar primero el Curso de Funciones Matemáticas para Data Science e Inteligencia Artificial.
Obliga a que se tenga que adivinar el orden de los cursos.
Se debe mejorar esto.
Juan R. Vergara M.
¿Porqué no existían estas librerías en mis años de escuela? 😪 Lo bueno es que estoy a tiempo de enseñarle todo esto a mi hijo 😎
Adriana Razo De León
Las computadoras trabajad de una manera discreta, no continua.
Joel Blanco
Cosas que pasan si aplicas otra función:
Lucas Fadul
Estaria bueno una introducción a numpy y matplotlib antes de este curso en la Ruta de Fundamentos de IA
Johnatan José Torres de la Cruz
Santiago Espinel
"es decir, la pendiente de la recta tangente a la curva en ese punto". ¿Cuál punto compañero?
Johnatan José Torres de la Cruz
@santiespinel en el punto c=-6
Miguel Angel Mayén Mejía
A partir de aquí es terreno totalmente nuevo para mí
Julio Adrian Pinto Sillo
No me jodan, osea de aquí me tengo que ir a otro curso, no que era "fundamentos"?, que desorden por Dios, ya me está llegando, en cada curso de fundamentos te mandan a otro aún más básico, ptmre
Pablo Ortiz
No entendí el nombre del curso que sugirió donde enseñan el tema de júpiter notebook o algo así. gracias
Rubén Téllez Gerardo
Una forma alternativa de definir df(x), a partir de la definición de Leibniz:
def df(f, x): dy = f(x)[1:] - f(x)[:-1] dx = x[1:] - x[:-1] return dy / dx
Julio Cardenas
Jhon Freddy Tavera Blandon
Otra forma de hacerlo
import numpy as np import matplotlib.pyplot as plt # Datos de ejemplo x = np.linspace(0, 10, 100) # Valores de x y = np.sin(x) # Valores de y (función a derivar) # Cálculo de la derivada discreta dx = x[1] - x[0] # Paso en x dy_dx = np.gradient(y, dx) # Derivada discreta de y con respecto a x # Gráfica de la función y su derivada plt.figure(figsize=(8, 6)) plt.plot(x, y, label='y = sin(x)') plt.plot(x, dy_dx, label="dy/dx") plt.xlabel('x') plt.ylabel('y') plt.title('Función y su derivada') plt.legend() plt.grid(True) plt.show()
Jhon Alexander Mosquera Vanegas
Una idea que me llevo de esta clase es que la computadora no calcula un límite, solo lo aproxima. Como trabaja con valores discretos, la derivada se implementa con la definición: se resta f(x) a f(x+h) y se divide entre un h que la clase fija en 0.000001. Por eso la derivada en código es una estimación, y su calidad depende de qué tan pequeño sea h. Conviene probar otros valores de h y comparar contra una función cuya derivada ya conocemos, como la cuadrática o el seno, para saber cuánto confiar en el resultado antes de usarlo en un análisis real.
Guadalupe Santos Paz
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return x**2
x = np.linspace(-10,101 num=1000)
y = f(x)
plt.plot(x,y)
plt.grid()
David Gomez
No le entendi nada a este profesor
Julio Adrian Pinto Sillo
no entendí nada csmre, se entiende más en Youtube
Julio Adrian Pinto Sillo
para colmo este gilazo te manda a dos cursos, ptrme que huevada
RANDY ALEJANDRO RODRIGUEZ DIAZ
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return np.sin(x)
x = np.linspace(-10,10, num=1000)
def df(f):
h=0.000001
return (f(x+h)-f(x))/h
y = f(x)
plt.plot(x,y, 'b')
plt.plot(x,df(f), 'r')
plt.grid()
Hay una observación que vale la pena mencionar, la derivada de una función se representa gráficamente a partir de un punto específico. El cálculo de la derivada proporciona la tasa de cambio de la función en ese punto; es decir, la pendiente de la recta tangente a la curva en ese punto. Esta pendiente indica la dirección y la inclinación de la función en ese punto particular. Dejo un codigo practico donde para grafic la pendiente tangente a una función en el punto c = -6.
import numpy as np import matplotlib.pyplot as plt def f(x): return x**3 x = np.linspace(-10,10,1000) def lin(f,c=-6): h = 0.00001 m = ((f(c+h)-f(c))/h) return m*x+f(c)-m*c y = f(x) plt.plot(x,y,'b') plt.plot(x,lin(f),'r') plt.grid()