Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Cómo programar funciones trascendentes

7/30
Recursos

Aportes 32

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Recordemos que x en este caso, equivale a 100 números cuyo rango va desde -10 a 10, entonces esta función lo que está haciendo, es convertir en cero todos los valores de x que sean inferiores a cero, y por otro lado, los valores mayores o iguales a cero, los convierte en 1:

.
.
.
Valor de x:
array([-10. , -9.7979798 , -9.5959596 , -9.39393939,
-9.19191919, -8.98989899, -8.78787879, -8.58585859,
-8.38383838, -8.18181818, -7.97979798, -7.77777778,
-7.57575758, -7.37373737, -7.17171717, -6.96969697,
-6.76767677, -6.56565657… 10]
.
el output de nuestra función:
.
array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

alguien acá que quiera estudiar en equipo???

Otra forma de realizar la función de Heaviside, es list comprehensions y así no evitamos el for loop, esto quedaría como:

def f(x):
    y = [ 0 if value <= 0 else 1 for value in x]
    return y

Por si quieren que su código se vea más pythonico.

Un dato curioso es que la función de Euler se utiliza en muchos ámbito de las matemáticas, como la estadística, geometría hasta en otras disciplinas como la economías o ciencias naturales para predecir el comportamientos de poblaciones o la propagación de un virus, acá le dejo un video explica un ejemplo en economía.
https://www.youtube.com/watch?v=Z5czpA-fyMU

Otra forma de la funcion escalon de Heaviside

#Escalon de Heaviside 
def h(x):
    return 1 * ( x>= 0)

Tambien podemos crear una funcion que reciba otra funcion para no tener que repetir todo el tiempo codigo :3


def graph_func(func, res=21):
    x_range = np.linspace(-10.0, 10.0, res)
    x_current = -10

    y = func(x_range)
    for x_individual in y:
        print("x={:.2f} y={:.2f}".format(x_current, x_individual))
        x_current += 1

    fig, ax = plt.subplots()
    ax.plot(x_range, y)
    ax.grid()
    ax.axhline(y=0, color='r')
    ax.axvline(x=0, color='r')
    plt.show()

El maestro mostró que se pueden graficar funciones trigonométricas, pero recuerden que tienen que estar factores de Pi radianes, Más información de la documentación https://matplotlib.org/3.3.4/gallery/units/radian_demo.html

Me parece muy curiosa y a la vez hermosa la grafica de una tangente

Gráficas de funciones trigonométricas

Funciones trigonométricas desplazamiento vertical

Funciones trigonométricas desplazamiento horizontal

function heaviside

def H(X):
  #https://numpy.org/doc/stable/reference/generated/numpy.heaviside.html
  return np.heaviside(X,1)

resolution = 1000

X = np.linspace(-1,1, num=resolution)

y = H(X)

fig, ax = plt.subplots()
ax.plot(X, y)
ax.grid()
De hecho el sen(x), cos(x) y exp(x) sí las podemos expresar como polinomios usando lo que se llama expansión en series de Taylor.

Grafica del seno y del coseno en uno solo plano

def f(x): 
  return x

resolution = 100    # número de puntos

x = np.linspace(-10.0, 10.0, num=resolution) 

y = f(np.cos(x))
z = f(np.sin(x)) 
#Ahora graficamos:
fig, ax = plt.subplots() 

ax.plot(x, y) 
ax.plot(x, z)   
ax.grid()  
# ahora definiremos la linea cero en x y en y 
ax.axhline(y=0, color='r') 
ax.axvline(x=0, color='r') 

Bienvenida a una nueva clase! XDD

H(x) en una linea de codigo
Igual es bueno hacer la practica para conocer los np.ones y np.zeros.
Ps. es compatible con matploylib

Excelente clase!👏👏 Aquí comparto mi Colab con lo realizado en la clase: https://colab.research.google.com/drive/1N0PKUv2M0MZPnjmBEtIOt0MzrjqsPPDS?usp=sharing

Función seccionada

def H(x):
  y = np.zeros(len(x))
  for idx, x in enumerate(x):
    if x >= 0:
      y[idx] = 1.0
  return y

resolucion = 1000

x = np.linspace(-10.0, 10.0, num=resolucion)

y = H(x)

figura, ejes = plt.subplots()

ejes.plot(x, y)
ejes.grid()

Recuerden que en python
print(1 * False) es igual 0
print(1 * True) es igual 1
por tanto se puede hacer una funcion H de la siguiente manera:

def H(x):
return 1 * (x > 0)

Para quien le dio curiosidad sobre el numero de Euler
https://www.youtube.com/watch?v=B0Rc7lL6QUg

Otra vez bienvenidA!! que falta de respeto a los alomnOS que también pagamos al igual que las mujeres, es discriminatoria y sexista esa forma de hablar

"""Funcion Coseno"""
_y = lambda x: np.cos(x)
_x = np.linspace(-1, 1, 1000)
plt.plot(_x, _y(_x))
plt.grid(True)
"""Funcion Escalon"""
_y = lambda x: np.piecewise(x, x>= 0, [1, 0])
_x = np.linspace(-1, 1, 1000)
plt.plot(_x, _y(_x))
plt.grid(True)

Es supremamente importante tener cuidado con la resolución para poder gráficar datos.

Un dato interesante sobre la constante de Euler (e) y porque esta tan relacionado a las funciones de crecimiento.
https://www.youtube.com/watch?v=DKlHk1cU42Q

Para obtener una función logarítmica en base n la fórma de hacerlo es tomar el logaritmo del valor x en una base conocida y luego dividirlo en el logaritmo de n sobre la misma base.

def f(x, b):
    return np.log2(x)/np.log2(b)

La siguiente es una definición de la misma función usando lambda para introducirla en una función de orden superior que hice para graficar el resultado. Se puede notar como el valor de x coincide con 3^y:

base = 3
graph_func(lambda x: np.log2(x)/np.log2(base), 1.0, 250.0, 1000)

¿Por que con la de Logaritmo solo puedo usar log2 y log10? solo estoy cambiando el número en el código pero me dice esto: module ‘numpy’ has no attribute 'log7

Una forma corta para definir la función escalón:

def h(x):
  return list(map(lambda a: float(a >= 0), x))

**Si en Google Colab se encuentran con el error: **
‘np’ is not defined

Lo pueden solucionar al modificar el metodo de importacion de la libreria por este:

from numpy import *

Función logaritmo

def f(x):
  return np.log2(x)

resolucion = 1000

x = np.linspace(0.01, 256.0, num=resolucion)

y = f(x)

figura, ejes = plt.subplots()

ejes.plot(x, y)
ejes.grid()

# eje de coordenadas
ejes.axhline(y=0, color='r')
ejes.axvline(x=0, color='r')

Función exponencial f(x) = a^x

def f(x):
  return np.e**x

resolucion = 1000

x = np.linspace(-1.0, 1.0, num=resolucion)

y = f(x)

figura, ejes = plt.subplots()

ejes.plot(x, y)
ejes.grid()

# eje de coordenadas
ejes.axhline(y=0, color='r')
ejes.axvline(x=0, color='r')

Seno sin(x):

def f(x):
  return np.sin(x) # seno

resolucion = 100

x = np.linspace(-10.0, 10.0, num=resolucion)

y = f(x)

figura, ejes = plt.subplots()

ejes.plot(x, y)
ejes.grid()

# eje de coordenadas
ejes.axhline(y=0, color='r')
ejes.axvline(x=0, color='r')

Coseno cos(x)

def f(x):
  return np.cos(x) # coseno

resolucion = 100

x = np.linspace(-10.0, 10.0, num=resolucion)

y = f(x)

figura, ejes = plt.subplots()

ejes.plot(x, y)
ejes.grid()

# eje de coordenadas
ejes.axhline(y=0, color='r')
ejes.axvline(x=0, color='r')