Resumen Python - conceptos



Funciones lambda vs def-return

Las dos formas de escritura de funciones matemáticas básicamente hacen lo mismo. Sin embargo, cuando la función se define por tramos, la forma def-return se convierte en la más usada.



Funciones Lambda

Permite describir funciones sencillas de una sola línea, que no está conformada por intervalos.

f(x) = x \cos(x) - 2 x^2 + 3 x -1

import numpy as np
fx = lambda x: x*np.cos(x) - 2*(x**2) + 3*x -1
>>> fx(0.2)
-0.28398668443175157


Funciones def-return

Permiten describir en detalle lo que sucede con una función matemática por intervalos. Tiene la ventaja de permitir definir valores por intervalos, puntos discontínuos, etc.

f(x)= \begin{cases}x\cos(x)-2 x^2 + 3 x -1, & x>0 \\ 1,&x\leq 0\end{cases}

import numpy as np
def fx(x):
    if x>0:
        fi = x*np.cos(x) - 2*(x**2) + 3*x -1
    if x<=0:
        fi = 1 
    return(fi)
>>> fx(0.2)
 -0.28398668443175157


Tiempo de ejecución de algoritmo

Con varios métodos para resolver un problema, una media de eficiencia es el tiempo de ejecución de un algoritmo.

cronometro carreras

Para determinar el tiempo de ejecución de un algoritmo, se toman las lecturas de tiempo antes y después del bloque, calculando el tiempo de ocupación de las diferencias entre tiempos.

La librería "time" permite obtener lectura del reloj del computador.

Como un algoritmo de prueba se usa la suma de los m primeros números enteros.

# tiempos de ejecución de algoritmos
import time

# INGRESO
m = 100

# PROCEDIMIENTO
t1 = time.clock()

# Ejecuta Operaciones del algoritmo
suma = 0
for i in range(0,m,1):
suma = suma + i

t2 = time.clock()
# Tiempo para ejecutar operaciones
ocupado = t2-t1

# SALIDA
print('tiempos:')
print(t1, t2)
print('tiempo de ejecución:')
print(ocupado)

con lo que se obtienen los siguientes resultados:

tiempos:
8.210955878428587e-07 5.46028565915501e-05
tiempo de ejecución:
5.378176100370724e-05
>>>