Taller 01

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 12

UNIVERSIDAD DEL MAGDALENA

Microprocesamiento I
Programa de Ingeniería Electrónica

Taller 01

Tema 01: Lenguaje C


Actividad

Primer momento

En el primer momento, se deben resolver los ejercicios propuestos (incluyendo los


que tienen la palabra Desafío) en las horas de clase de forma individual y se de-
ben enviar los códigos por correo electrónico en un archivo en formato ZIP (Ta-
ller_01_Nombre_Apellido_código) al finalizar la clase, el asunto debe ser
MG(Número del grupo)_Taller_01, con el nombre y el código de la persona que lo
resolvió en el cuerpo del correo.
Nota: Si el tiempo de la clase no alcanza para resolver los ejercicios, por favor, envíe
los que alcanzó a solucionar. Una semana después, remita todos los códigos.

Segundo momento

En el segundo momento, se debe elegir un ejercicio diferenciado con la palabra


Desafío y en un equipo de tres personas, deben redactar un artículo científico (en
español, con mínimo 05 referencias) en formato IEEE (descargar aquí), explicando
cómo resolvieron el desafío, adicional a lo anterior, en el artículo se debe integrar
por lo menos un algoritmo que resuelva el mismo problema del ejercicio para ser
comparado con el método propuesto en este taller. Este artículo debe ser enviado
una semana después del día del taller, en formato PDF y en un formato editable,
con el asunto: MG(Número del grupo)_Taller_01_Paper.

I
1

Ejercicio 1

Escriba un programa que solicite dos números, a y b, al usuario. El programa debe


calcular:

1. La suma de a y b.

2. La diferencia cuando b se resta de a.

3. El producto entre a y b.

4. El cociente cuando a es dividido por b.

5. El resultado de log10 (a).

6. El resultado de ab .

7. El resultado de ea

8. El resultado de b
a

Ejercicio 2

Escriba un programa que solicite cuatro números, muestre la suma de estos inclu-
yendo los números ingresados:
Ejemplo: (1.5) + (-4) + (65.34) + (9) = 71.84.

Ejercicio 3

Un triángulo se puede clasificar en: equilátero, isósceles o escaleno. Escriba un pro-


grama que solicite los valores de los ángulos de un triángulo y muestre un mensaje
en donde indique qué tipo de triángulo es.
2

Ejercicio 4

Escriba un programa que solicite los valores de una matriz 3x3 y obtenga su trans-
puesta. El programa debe imprimir en pantalla la matriz original y la transpuesta.

Ejercicio 5

El valor de π puede ser aproximado usando la serie infinita descrita en 1.

4 4 4 4 4
π ≈3+ − + − + − ... (1)
2 ∗ 3 ∗ 4 4 ∗ 5 ∗ 6 6 ∗ 7 ∗ 8 8 ∗ 9 ∗ 10 10 ∗ 11 ∗ 12

Escriba un programa que muestre 15 aproximaciones de π. La primera aproximación


debe hacer uso del primer término de la serie infinita. Cada aproximación mostrada
por su programa debe incluir un término adicional de la serie, por lo que el valor de
la aproximación de π se volverá más preciso.

Ejercicio 6

Escriba un programa que solicite N números de doble precisión al usuario, almacene


estos números en un vector al cual le debe asignar la memoria de forma dinámica.
Posteriormente, calcule la medía y la desviación estándar de ese arreglo de números.
Considere que la desviación estándar está descrita por la ecuación 2.

√∑
N
j=1 (xj − x̄)2
σ= , j = 1, 2, 3, ..., N. (2)
N −1

Donde:
3

x̄ es el promedio de los valores del array.

Nota: Recuerde liberar la memoria asignada en su programa.

Ejercicio 7

Escriba un programa que solicite el mes, representado por enteros positivos desde
1 hasta 12 y el año, representado por una cifra positiva de cuatro números. El
programa debe imprimir el nombre del mes y la cantidad de días que este posee,
debe tener en cuenta si un año es bisiesto o no para mostrar los días correctos del
mes de febrero.
4

Ejercicio 8: Desafío

El método de Newton-Raphson es frecuentemente empleado para resolver ecuaciones


no lineales tal que f (x) = 0. Este procedimiento se realiza de forma iterativa: Dada
una estimación inicial x0 , las sucesivas iteraciones satisfacen la ecuación 3.

f (xi−1 )
xi = xi−1 − , i = 1, 2, 3, ... (3)
f ′ (xi−1 )

El programa debe terminar cuando se cumpla la desigualdad 4.

|xi − xi−1 | < ε (4)

El valor de ε debe ser ingresado por el usuario.

Para este ejercicio en particular, aplique el método de Newton-Raphson a la función


f (x) = ex + x3 − 5, con estimación inicial x0 = 0.

1. Escriba un programa que implemente el método Newton-Raphson para i =


1, 2, 3, ..., 100. Haga uso de un ciclo for y un array para almacenar los valores
de xi , posteriormente imprima los valores almacenados en cada iteración.
Nota: En ese apartado no es necesario evaluar el cumplimiento de la desigual-
dad 4.

2. Modifique el código anterior, en esta ocasión, implemente un ciclo while que


se ejecute hasta que la desigualdad 4 se cumpla. Imprima el último valor de i
y de xi .
5

Ejercicio 9: Desafío

El algoritmo llamado Bubble Sort, es un método de ordenamiento que realiza el


recorrido de un array de números, en el proceso compara los elementos adyacentes
e intercambia sus posiciones si están en el orden incorrecto. El ciclo se repite hasta
que el array esté ordenado (números de menor a mayor).
Escriba un programa que solicite el tamaño de un vector y esa misma cantidad de
números enteros, almacene los elementos ingresados por el usuario en el vector e
imprima el resultado en pantalla. Posteriormente, aplique el algoritmo Bubble Sort
y muestre todas las iteraciones hasta que el vector esté ordenado. Este algoritmo
puede ser expresado por el siguiente pseudocódigo:

var array L[N]


var finc , i, aux

finc = size(L) - 1

while finc != 0 do begin


for i := 0 to finc do begin
if A[i] > A[i+1] then begin
aux = A[i]
A[i] = A[i+1]
A[i+1] = aux
endif
endfor

finc = finc - 1

endwhile

En la figura 1 se aprecia un ejemplo de este algoritmo.


6

Primer recorrido:

7 3 5 2 3 7 5 2

7
3 3
7 5 2 3 5 7 2

7
3 3
5 5
7 2 3 5 2 7

Segundo recorrido:

7
3 3
5 5
2 2
7 3 5 2 7

7
3 3
5 5
2 2
7 3 2 5 7

Tercer recorrido:

7
3 3
2 5 2
7 2 3 5 7

Resultado:

7
2 3 5 2
7

Figura 1: Ejemplo de aplicación del algoritmo Bubble Sort.


7

Ejercicio 10: Desafío

En muchas aplicaciones en ingeniería y en la ciencia en general, resulta necesario


optimizar una función F (x), un ejemplo práctico de esta necesidad se aprecia en el
entrenamiento de las redes neuronales artificiales o en la implementación de contro-
ladores para el seguimiento de punto de máxima potencia. Al hablar de optimizar
una función, nos referimos a encontrar un valor de x tal que F (x) esté en su punto
máximo o mínimo. Existen muchos algoritmos para tal fin, muchos de ellos parten
una estimación inicial x0 y actualizan su valor siguiendo la ecuación 5.

xk+1 = xk + △ xk (5)

△ xk = (xk+1 − xk ) = αk pk

Imagine F (x) como un sistema montañoso de tal forma que para hallar su valor
máximo o mínimo se debe ascender o decender respectivamente, es así que pk re-
presenta la dirección en la que se hará el ascenso o el descenso y αk denominada
rata de aprendizaje, representa la longitud del paso del ascenso o el descenso, por lo
general es un valor positivo muy pequeño, pero siempre mayor que cero. Uno de los
métodos optimización que implementa la ecuación 5 es el Steepest Descent. En el
caso particular para encontrar el mínimo de la función este método logra con cada
iteración hallar un valor de xk de tal forma que el valor de la función desciende, es
decir, se cumple que F (xk+1 ) < F (xk ).

Para encontrar la dirección pk dada una rata de aprendizaje αk suficientemente pe-


queña, se puede aplicar la expansión de Taylor de primer orden sobre F (x) como se
8

ilustra en la ecuación 6.

F (xk+1 ) = F (xk + △ xk ) ≈ F (xk ) + gxT △ xk (6)

Donde gk es el gradiente de la función evaluado en xk como indica la ecuación 7.

gk ≡ ∇F (x)|x=xk (7)

Para que se cumpla que F (xk+1 ) sea menor que F (x) el segundo termino en la parte
derecha de la ecuación 5 debe ser menor a cero, lo cual se puede expresar como se
ilustra en la ecuación 8.

xk+1 = xk − αk gk (8)

Ejemplo

Se desea minimizar, por medio del algoritmo steepest descent, la función 9.

F (x) = x21 + 25x22 (9)

Para este ejemplo en particular la suposición inicial será:

 
0,5
x0 =  
0,5

Se asume que α = 0,01


9

Hallar el gradiente:

   

F (x) 2x1
∇F (x) =  ∂x1  = 

∂x2 F (x) 50x2

Primera iteración (k = 0):

Evaluando x0 :

   
2(0,5) 1
g0 ≡ ∇F (x)|x=x0 =  = 
50(0,5) 25

    
0,5 1 0,49
x1 = x0 − αg0 =   − 0,01   =  
0,5 25 0,25

Segunda iteración (k = 1):

Evaluando x1 :

   
2(0,49) 0,98
g1 ≡ ∇F (x)|x=x1 = = 
50(0,25) 12,5
10

     
0,49 0,98 0,4802
x2 = x1 − αg1 =   − 0,01  = 
0,25 12,5 0,125

1. Escriba un programa que minimice la función 9 por medio del método steepest
descent, muestre en cada iteración los valores de xk , gk y de F (x). Para esto
elija α = 0,01.

2. Modifique el programa anterior con α = 0,035, muestre los valores de xk , gk y


de F (x) en cada iteración. Finalmente escriba en un párrafo sus observaciones
para cuando α es igual a 0,01 comparado con 0,035. Recuerde agregar las
tablas con los valores de las iteraciones en su escrito.

3. Suponga que una compañía ha calculado su ingreso total por un producto en


particular y lo han expresado con la función F (x) = −x3 + 450x2 + 52500x,
donde F (x) se mide en dolares y x es el número de unidades producidas. ¿Qué
cantidad de producto dará un ingreso máximo?.

Para responder la pregunta anterior, escriba un programa donde aplique el


algoritmo steepest descent, con α = 0,001.

¿Cuál es su suposición inicial x0 y por qué la eligió?

¿En cuantas iteraciones se obtiene el resultado?

Nota: En este caso implemente la ecuación 8 con el segundo termino del lado
derecho como positivo.

También podría gustarte