¿Cómo manipular funciones?
Curso de Funciones Matemáticas para Data Science e Inteligencia Artificial
Contenido del curso
Todo sobre funciones
Funciones en ciencia de datos
Modela tu primer función
Este no es el fin
¿Cómo manipular funciones?
Curso de Funciones Matemáticas para Data Science e Inteligencia Artificial
Contenido del curso
¿Cómo manipular funciones?
Osvaldo Damián Ruiz
EstudianteJose David Villegas Aristizabal
EstudianteSamuel Enrique Velásquez De La Cruz
EstudiantePatricia Carolina Perez Felibert
EstudianteJuan R. Vergara M.
EstudianteAlexander Sebastian Jaramillo Ordiales
EstudianteAlvaro Max Landeros Hernandez
EstudianteFernando Jesús Núñez Valdez
EstudianteJuan R. Vergara M.
EstudianteAlvaro Torres Sánchez
EstudianteChristian Sosa
EstudianteJeisson Espinosa
EstudianteEduardo Monzón
EstudianteJeisson Espinosa
EstudianteFernando Chavez Caracas
EstudianteAntonio Demarco Bonino
EstudianteJuan Betancur
EstudianteAlberto Duque Villegas
EstudianteSergio Alexander Cadena
EstudianteMaría Eugenia Pereira Chévez
EstudianteHelmut Iván Dubón González
EstudianteIsaias Cruz
EstudianteMarcelo Soto Moreno
EstudiantePool Nuñez
EstudianteMarco Antonio Candia Ortega
EstudianteLuna Isabela Torres Torres
EstudianteMarco Antonio Candia Ortega
EstudianteJavier Orlando Herrera Rodríguez
EstudianteIván Darío Roa C.
EstudianteJuan Riquelme
Estudiante¡Brutal!
qué buena imagen explicativa
Me ha encantado la tranquilidad y empatia que transmite este prof
Oh si Enrique es un fuera de serie, ya llevo 3 cursos suyos.
excelente curso realmente.
Escribí un código para poder comparar mejor las modificaciones que realiza el profesor en la clase. Dejo el script para que lo puedan realizar. Junto con el output. El de reflexión se deja de tarea.
N = 1000 def f(x): return x**2 c = 4 x = np.linspace(-10,10, num=N) y1 = f(x + c) y2 = f(x - c) y3 = f(x) - c y4 = f(x) + c fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(10,10)) axs[0,0].plot(x,y1) axs[0,0].set_title("f(x + c)") axs[0,1].plot(x,y2) axs[0,1].set_title("f(x - c)") axs[1,0].plot(x,y3) axs[1,0].set_title("f(x)-c") axs[1,1].plot(x,y4) axs[1,1].set_title("f(x) + c") fig.suptitle('Desplazamientos verticales y horizontales') for ax in axs.flat: ax.grid() ax.axhline(y=0, color='r') ax.axvline(x=0, color='r')
: return np.sin(x); c = 2 x = np.linspace(-15,15, num=N) y1 = f(x)*c y2 = f(x)*(1/c) y3 = f(c*x) y4 = f((1/c)*x) fig, axs = plt.subplots(nrows=2, ncols=2, figsize=(10,10)) axs[0,0].plot(x,y1) axs[0,1].plot(x,y2) axs[1,0].plot(x,y3) axs[1,1].plot(x,y4) axs[0,0].set_title("f(x)*c") axs[0,1].set_title("f(x)*(1/c)") axs[1,0].set_title("f(c*x)") axs[1,1].set_title("f((1/c)*x)") fig.suptitle('Alargamientos y compresiones') for ax in axs.flat: ax.grid() ax.axhline(y=0, color='r') ax.axvline(x=0, color='r')
. Aquí podemos aplicar directamente c a f(x) dependiendo de lo que se quiera hacer, por ejemplo: -> f(x) + 5 para desplazar hacia arriba la función 5 unidades. -> (1/2)*f(x) para reducir a la mitad su altura.
Horizontal: Para generar un desplazamiento o deformación el factor c va a afectar el dominio de la función, es decir lo que se encuentra dentro del argumento de f. -> Por lo tanto si tenemos f(x + c) podemos hacer u = x + c donde x = u - c, así es más fácil ver porque en el eje horizontal se genera un desplazamiento a la izquierda. -> Igual si tenemos f(cx) podemos hacer u = cx y despejando x tenemos x= u/c donde es más claro ver porque se comprime el eje horizontal.
acabo de entender en 10 min la matemática de los amplificadores sin darme cuenta :P
Información resumida de esta clase #EstudiantesDePlatzi
Es importante aprender a manipular las funciones
y = F (x) + c : Si sumamos una constante 'c' fuera del argumento, la gráfica se moverá 'c' unidades hacia arriba
y = F (x) - c : Si restamos una constante 'c' fuera del argumento, la gráfica se moverá 'c' unidades hacia abajo
Y = F (x-c) : Si restamos una constante 'c' dentro del argumento, la gráfica se moverá 'c' unidades a la derecha
Y = F (x+c) : Si sumamos una constante 'c' dentro del argumento, la gráfica se moverá 'c' unidades a la izquierda
Con la función ax.axhline puedo crear una línea horizontal y ubicarla dentro del plano, definiendo en sus parámetros la posición y el color
Con la función ax.axvline puedo crear una línea vertical y ubicarla dentro del plano, definiendo en sus parámetros la posición y el color
y = c * F (x) : Si multiplicamos una constante 'c' fuera del argumento, la gráfica se alargará verticalmente en un factor de 'c'
y = 1/c * F (x) : Si dividimos una constante 'c' fuera del argumento, la gráfica se comprimirá verticalmente en un factor de 'c'
y = F (x*c) : Si multiplicamos una constate 'c' dentro del argumento, la gráfica se comprimirá horizontalmente en un factor de 'c'
Y = F (1/c * x) : Si dividimos una constante 'c' dentro del argumento, la gráfica se alargará horizontalmente en un factor de 'c'
y = -F (x) : Si multiplicamos por un número negativo fuera del argumento, la gráfica se va a reflejar en el eje x
y = F (-x) : Si multiplicamos por un número negativo dentro del argumento, la gráfica se va a reflejar en el eje y
Gracias por este resumen.
a ti por comentar :)
Que buena clase!
La clase es maravillosa y nos llena de conocimientos. Creo que la verdadera maestría de estos conceptos se ven en la práctica.
Con set_ylim() podemos darles el tamaño a los ejes y para que se note más la compresión y el alargamiento
Construyendo sobre el aporte de Jazma Mesa y utilizando la sugerencia de Juan Manuel Betancur, para ver la gráfica de f(x) y las 2 gráficas de Reflexiones:
N = 1000 def f(x): return x**2.5 x = np.linspace(-10,10, num= N) y = f(x) functions = [y, -f(x), f(-x)] titles = ['f(x)', '-f(x)', 'f(-x)'] # -f(x) Lo graficado con f(x) en el cuadrante III pasa al cuadrante II y lo graficado en el cuadrante I pasa al cuadrante IV # f(-x) Lo graficado con f(x) en el cuadrante I pasa al cuadrante II y lo graficado en el cuadrante III pasa al cuadrante IV fig, ax = plt.subplots(1,3, figsize=(12,4)) for i in range(3): y = functions[i] ax[i].plot(x,y) ax[i].set_title(titles[i]) ax[i].grid() ax[i].axhline(y=0, color='r') ax[i].axvline(x=0, color='r') ax[i].set_ylim((-400, 400)) ax[i].set_xlim((-12, 12))
Reflexiones No puedo cargar las imágenes, pero si lo grafican se ve claramente el desplazamiento
-y=-f(x) refleja la gráfica respecto al eje x.
N = 1000 def f(x): return x**3; x = np.linspace(-10,10, num=N) y = f(x); y1 = -f(x); fig, ax = plt.subplots() ax.plot(x,y,label="f(x)", color='g', linestyle='-') ax.plot(x,y1, label="-f(x)", color='b', linestyle='--') ax.legend(loc=9) plt.title('Refleja la gráfica respecto al eje x') ax.grid() ax.axhline(y=0, color='r') ax.axvline(x=0, color='r');
N = 1000 def f(x): return x**3; x = np.linspace(-10,10, num=N) y = f(x); y1 = f(-x); fig, ax = plt.subplots() ax.plot(x,y,label="f(x)", color='g', linestyle='-') ax.plot(x,y1, label="f(-x)", color='b', linestyle='--') ax.legend(loc=9) plt.title('Refleja la gráfica respecto al eje y') ax.grid() ax.axhline(y=0, color='r') ax.axvline(x=0, color='r');
Gracias María Eugenia Pereira Chévez, muy buen aporte una opcion si quieres cargar imagenes es guardarlas en tu pc y luego arrastrarlas a este espacio
Utilizando subgráficas:
Excelente PROFESOR !!!!!!!!!!!!!
Mi primer aporte jeje. Para el que no le quedo claro las reflexiones, con esta gráfica se entiende mejor:
Me di a la tarea de gráficarlos juntos.
y = f(x) y0 = f(x) + c # Hacia arriba y1 = f(x) - c # Hacia abajo y2 = f(x - c) # Hacia la izquierda y3 = f(x + c) # Hacia la derecha fig, ax = plt.subplots(figsize=(6.9,3.5)) ax.plot(x,y) ax.grid() ax.axhline(y=0, color='r') ax.axvline(x=0, color='r') ax.set_title('f(x)') fig, ax = plt.subplots(2,2) ax[0,0].plot(x,y0) ax[0,0].grid() ax[0,0].axhline(y=0, color='r') ax[0,0].axvline(x=0, color='r') ax[0,0].set_title('f(x) + c "Arriba"') ax[0,1].plot(x,y1) ax[0,1].grid() ax[0,1].axhline(y=0, color='r') ax[0,1].axvline(x=0, color='r') ax[0,1].set_title('f(x) - c "Abajo"') ax[1,0].plot(x,y2) ax[1,0].grid() ax[1,0].axhline(y=0, color='r') ax[1,0].axvline(x=0, color='r') ax[1,0].set_title('f(x - c) "Izq"') ax[1,1].plot(x,y3) ax[1,1].grid() ax[1,1].axhline(y=0, color='r') ax[1,1].axvline(x=0, color='r') ax[1,1].set_title('f(x + c) "Der"') fig.tight_layout()
para qué sirve plt.subplots?
Reflexiones
Pues a mí el resultado de la forma -f(x) y f(-x) me sale lo mismo al graficar y veo que al profesor también, ya no entendí la diferencia. ¿Alguien sabe?
y = f(x) y0 = -f(x) y1 = f(-x) fig, ax = plt.subplots(figsize=(6.7,3.5)) ax.plot(x,y) ax.grid() ax.axhline(y=0, color='r') ax.axvline(x=0, color='r') ax.set_title('f(x)') fig, ax = plt.subplots(1,2) ax[0].plot(x,y0) ax[0].grid() ax[0].axhline(y=0, color='r') ax[0].axvline(x=0, color='r') ax[0].set_title('-f(x)') ax[1].plot(x,y1) ax[1].grid() ax[1].axhline(y=0, color='r') ax[1].axvline(x=0, color='r') ax[1].set_title('f(-x)') fig.tight_layout()
Hola @mtrocandia no sé si ya resolvieron tu duda por otro canal sin embargo dejo mi respuesta a la que llegue con ayuda de chat GPT jajaja Respuesta corta: las figuras son las mismas por que de hecho tienen el mismo input debido a que se usa el mismo "x" y si realizas la validación de:
<y0 == y1>
veras que obtienes para todos los valores "True" Respuesta larga: La razón por la que y0 y y1 dan resultados iguales es porque la función "f" es una función del cubo de x. Esto significa que el resultado de "f" para un valor de x dado es el mismo que el resultado de "f" para su inverso (-x).
Por ejemplo, si x es 2, entonces f(2)=2^3=8 y f(-2)=-(-2)^3=8. Como puedes ver, el resultado es el mismo para ambos casos. Adicionalmente, como las gráfica x**3 es simétrica se hace un poco complicado ver que las reflexiones efectivamente suceden, no obstante si aplicas un desplazamiento como por ejemplo:
<def f(x): return (x**3) + 250;>
es mucho más fácil de ver
Código para ver en 4 gráficas los desplazamientos verticales y horizontales:
import numpy as np import matplotlib.pyplot as plt N = 1000 def f(x): return x**2; c = 4 x = np.linspace(-10,10, num=N) y1 = f(x - c) y2 = f(x + c) y3 = f(x) + c y4 = f(x) - c fig,axes = plt.subplots(nrows=1,ncols=4, figsize=(18,5)) for ax in axes: ax.grid(True) ax.axhline(y=0, color='r') ax.axvline(x=0, color='r') axes[0].plot(x,y1) axes[1].plot(x,y2) axes[2].plot(x,y3) axes[3].plot(x,y4)
Cada manipulación utilizando x^2