Autor: Edison Del Rosario

  • Actividades

    Actividades: 1ra Evaluación

    Actividades: 2da Evaluación

    Descarga de software libre

    Funciones de Referencia usadas en evaluación

  • Ejercicios-Ejemplos

    Ejercicios - Evaluaciones anteriores (435)

    Ejemplos - Soluciones propuestas (209)

  • 8.2.2 Gráficas 2D interactivas - matplotlib.widgets

    [ algoritmo ] [ ejemplos ]

    Para mostrar el uso de una variable en una función matemática, se puede usar las gráficas interactivas. La librería Matplotlib dispone de los componentes que permiten seleccionar valores de manera dinámica y ajustar la gráfica 2D sin tener que detener y volver a ejecutar el algoritmo.

    coseno Interactivo 01Si ya conoces cómo realizar la gráfica para una función senoidal y quieres observar el efecto de cambiar el valor de la amplitud de forma interactiva puedes usar una barra de desplazamiento.

    grafica 2D interactivas Sin()

    La barra se conoce como Slider que se encuentra en matplotlib.widgetsy requiere dos partes:grafica 2Di nteractivas slider

    • definir la barra
    • actualizar valores

    Por ejemplo, para interactuar con la amplitud se define ampl_slider como una barra ubicada en amp_donde, con etiqueta 'ampl', valor mínimo 0.2 y valor máximo y_max. Los cambios de valor al desplazar la barra de determinan con valstep, para este caso con pasos de 0.1.

    La variable se inicializa con el valor dado en freq y se dibuja en sentido 'vertical'.

    # amplitud slider amp_donde, [x,y,ancho,alto]
    ampl_donde = plt.axes([0.1, 0.25, 0.03, 0.65])
    ampl_slider = Slider(ampl_donde, 'ampl', 0.2, y_max,
                         valinit=ampl, valstep = 0.1,
                         orientation='vertical')
    

    Para cambiar los valores cuando se desplaza la barra o Slider, se crea un procedimiento de actualización de gráfica grafico_actualiza(). Se obtiene el valor de la variable ampl desde ampl_slider.val. Se actualiza los valores de la función fi que actualiza la linea del gráfico y que finalmente actualiza la figura. Para relacionar los cambios generados por el Slider con la gráfica se define ampl_slider.on_changed(grafico_actualiza)

    def grafico_actualiza(val):
        ampl = round(ampl_slider.val,1) # un decimal
        fi = fx(ampl,freq,fase,ti) # actualiza valores de f(x)
        linea.set_ydata(fi) # redibuja linea
        fig.canvas.draw_idle() # actualiza figura
    

    Para añadir los cambios en los parámetros de frecuencia y fase, se repite el proceso de crear un Slider en el intervalo [0,2π].

    Para restaurar la gráfica al valor inicial dado en amplitud, frecuencia y fase se usa un botón boton_rst , donde se reinicia las barras creadas.

    # boton reinicio de gráfica [x,y,ancho,alto]
    boton_rstdonde = plt.axes([0.8, 0.025, 0.1, 0.04])
    boton_rst = Button(boton_rstdonde, 'Reset',
                       hovercolor='0.975')
    def grafico_reinicia(event):
        ampl_slider.reset()
        return()
        
    boton_rst.on_clicked(grafico_reinicia)
    

    [ algoritmo ] [ ejemplos ]
    ..


    1. Algoritmo en Python

    Se adjunta el algoritmo en Python integrado

    # Señales continuas: senoidal
    # gráfica interactiva con Slider
    import numpy as np
    import matplotlib.pyplot as plt
    from matplotlib.widgets import Slider, Button
    
    # INGRESO
    ampl = 2.0
    freq = 1.0
    fase = 0.0
    fx = lambda ampl,freq,fase,t: ampl*np.sin(2*np.pi*freq*t+fase)
    
    a = 0 #intervalo [a,b]
    b = 1
    muestras = 61
    
    y_max = 6.0 # rango vertical
    y_min = -y_max
    DosPi = 2*np.pi
    
    # PROCEDIMIENTO
    ti = np.linspace(a, b, muestras)
    fi = fx(ampl,freq,fase,ti)
    # SALIDA
    
    # GRAFICA
    fig, graf = plt.subplots()
    linea, = plt.plot(ti, fi)
    titulo = str(ampl)+'*sin(2*pi*'+str(freq)+'*t+'+str(fase)+')'
    plt.title(titulo)
    plt.grid()
    
    plt.axis([a, b, y_min, y_max])  # cotas gráfico
    plt.tight_layout()
    plt.subplots_adjust(left=0.25, bottom=0.25) # espacios
    
    # slider: barras para valores 
    # amplitud slider amp_donde, [x,y,ancho,alto]
    ampl_donde = plt.axes([0.1, 0.25, 0.03, 0.65])
    ampl_slider = Slider(ampl_donde, 'ampl', 0.2, y_max,
                         valinit=ampl, valstep = 0.1,
                         orientation='vertical')
    # frecuencia slider [x,y,ancho,alto]
    freq_donde = plt.axes([0.25, 0.15, 0.65, 0.03])
    freq_slider = Slider(freq_donde, 'freq',
                         0.1, np.round(DosPi,1),
                         valinit=freq, valstep = 0.1)
    # fase slider [x,y,ancho,alto]
    fase_donde = plt.axes([0.25, 0.1, 0.65, 0.03])
    fase_slider = Slider(fase_donde, 'fase',
                         0.0, np.round(DosPi,1),
                         valinit=fase, valstep = 0.1,)
    
    def grafico_actualiza(val):
        ampl = round(ampl_slider.val,1) # un decimal
        freq = round(freq_slider.val,1) # un decimal
        fase = round(fase_slider.val,1) # un decimal
        fi = fx(ampl,freq,fase,ti) # actualiza valores de f(x)
        linea.set_ydata(fi) # redibuja linea
        titulo = str(ampl)+'*sin(2*pi*'+str(freq)+'*t+'+str(fase)+')'
        graf.set_title(titulo)
        fig.canvas.draw_idle() # actualiza figura
    
    ampl_slider.on_changed(grafico_actualiza)
    freq_slider.on_changed(grafico_actualiza)
    fase_slider.on_changed(grafico_actualiza)
    
    # boton reinicio de gráfica [x,y,ancho,alto]
    boton_rstdonde = plt.axes([0.8, 0.025, 0.1, 0.04])
    boton_rst = Button(boton_rstdonde, 'Reset',
                       hovercolor='0.975')
    def grafico_reinicia(event):
        freq_slider.reset()
        ampl_slider.reset()
        fase_slider.reset()
        return()
        
    boton_rst.on_clicked(grafico_reinicia)
    
    plt.show()
    

    Referencia: matplotlib.widgets.Slider

    [ algoritmo ] [ ejemplos ]
    ..


    2. Ejemplos

    TELG1034 - Procesamiento Digital de Señales

    Muestreo con Python

    muestreo Alias cos animate 01

    Aliasing con Python

    muestreo Alias cos animate

     

    [ algoritmo ] [ ejemplos ]

  • 1Eva_IT2023_T5 Función buscar divisibles en lista

    1ra Evaluación I Término 2023-2024, Julio 7, 2023 /CCPG1043

    Tema 4. (25 puntos) Implemente la función buscar_divisibles(numeros,divisor) que recibe como primer parámetro una lista con números enteros y como segundo parámetro un número entero positivo mayor a 0.

    La función retorna una nueva lista con los números que son divisibles para el número recibido en el segundo parámetro.

    Luego, implemente un programa principal y realice lo siguiente:

    a. Genere una lista de 20 números aleatorios entre 2 y 200
    b. Genere un número aleatorio entre 2 y 10.
    c. Llame a la función con la lista de números y número aleatorio generados en los pasos anteriores y muestre la lista resultante.

    Ejemplo de entrada

    numeros_aleatorios = [81, 153, 192, 77, 70, 87, 182, 100,
     171, 157, 132, 193, 170, 95, 173, 27, 98, 6, 44, 34]
    divisor = 9

    Ejemplo de salida

    [81, 153, 171, 27]

    Referencia: 2Eva_IIT2002_T1 Verificar si es "Número perfecto"
    Residuo de a para b

  • 1Eva_IT2023_T4 Función rotación parcial de lista

    1ra Evaluación I Término 2023-2024, Julio 7, 2023 /CCPG1043

    Tema 4. (25 puntos) Implemente la función rotacion_parcial(numeros, k) que recibe como parámetros una lista de números y un número entero positivo k mayor a cero y menor que el tamaño de la lista.

    La función realiza una rotación parcial hacia la derecha de la lista, pero solo para los primeros k elementos y retorna la nueva lista.

    Ejemplo de entrada

    lista = [110, 202, 343, 40, 52, 657, 743, 81]
    k=3

    Ejemplo de salida

    [343, 110, 202, 40, 52, 657, 743, 81]

    Explicación

    Para el ejemplo de k=3, solo los tres primeros elementos de la lista cambian su orden. El resto de
    elementos de la lista mantienen su orden original.

    │----- k=3 -----│
    [110, 202, 343, │ 40, 52, 657, 743, 81]
      │    └───>│   │
      └───>│    │   │
      │<────────┘   │
    [343, 110, 202, │ 40, 52, 657, 743, 81]
  • 1Eva_IT2023_T3 Función Siglas de una frase

    1ra Evaluación I Término 2023-2024, Julio 7, 2023 /CCPG1043

    Tema 3. (25 puntos) Implemente la función siglas(frase,palabras_comunes) que reciba una frase y una lista de palabras comunes. Asuma que tanto las palabras de la frase como de la lista están en minúsculas.

    La función debe generar una sigla utilizando las iniciales en mayúsculas de cada palabra.

    La función debe omitir de la sigla palabras comunes como "de", "y", "en", etc. (definidas en el parámetro palabras_comunes), a menos que sean la primera o la última palabra de la frase.

    Asuma que en la frase no existen signos de puntuación.

    Ejemplo de entrada

    frase = "el yin y el yang son conceptos filosóficos de la cultura china"
    palabras_comunes = ["el", "y", "de", "la", "son"]

    Ejemplo de salida

    "EYYCFCC"

    Referencia: 3Eva_IT2007_T2 Función para crear Acrónimos

  • 1Eva_IT2023_T2 Palabras repetidas en frase

    1ra Evaluación I Término 2023-2024, Julio 7, 2023 /CCPG1043

    Tema 2. (15 puntos) Implemente un programa que:

    a. Pida una palabra al usuario.

    b. Pida al usuario una frase a la vez hasta que este ingrese la palabra "Basta".

    c. Elimine de cada frase las comas y los puntos. Asuma que las frases no tienen ningún otro signo de puntuación.

    d. Al finalizar, muestre por pantalla cuántas veces se repitió la palabra ingresada en el paso 1 en las frases ingresadas en el paso 2. Al momento de contar asegúrese de considerar mayúsculas y minúsculas para que cuenten como la misma palabra. Ejemplo: 'hola' y 'Hola' son la misma palabra.

    Asegúrese de comparar palabras exactas. Ejemplo: "Hola" en "Estoy en Holanda" no cuenta.

    Ejemplo de entrada:

    Ingrese una palabra: hola
    Ingrese una frase (Ingrese "Basta" para terminar): 
      Hola, estoy bien
    Ingrese una frase (Ingrese "Basta" para terminar): 
      Hola. No me gusta saludar diciendo hola
    Ingrese una frase (Ingrese "Basta" para terminar): 
      Basta

    Ejemplo de salida:

    La palabra "hola" se repitió 3 veces en las frases ingresadas.

    Referencia: 3Eva_IIT2015_T1 Mensajes en redes sociales y etiquetas

  • 1Eva_IT2023_T1 buscar palíndromos

    1ra Evaluación I Término 2023-2024, Julio 7, 2023 /CCPG1043

    Tema 1. (15 puntos) Implemente la función buscar_palindromos(mensaje) que recibe un mensaje y retorna una lista con todas las palabras (de 2 o más letras) del mensaje que son palíndromos. Asuma que todas las palabras están en minúsculas y no existen signos de puntuación.imagen simetrica

    Recuerde que un palíndromo es una cadena que se lee igual de izquierda a derecha o de derecha a izquierda. Por ejemplo: madam, ana, somos, reconocer, anilina.

    Ejemplo de entrada

    mensaje = "ana y yo somos amigos y trabajamos en la torre del radar"

    Ejemplo de salida

    ['ana', 'somos', 'radar']

    Referencia: 1Eva_IIT2013_T2 Números palíndromo con Python

  • 3Eva_IT2019_T3 Prueba de escritorio - cadenas, listas, segmentar, separar

    3ra Evaluación I Término 2019-2020, Septiembre 13, 2019

    Tema 3. (10 puntos) ¿Qué muestra el siguiente código? Justifique su respuesta

    A = 'Num empresas,17,0|9|1,10|19|2,20|29|3'
    
    campos = A.split( ',')
    valores = []
    for rango in campos[2:]:
        valores.append(int(rango.split('|')[0]))
    
    print(valores)
    

    Asuma que este tema NO tiene errores de compilación. Si usted cree que hay algún error de compilación, consúltelo inmediatamente con su profesor.