Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guia 2
Guia 2
Facultad de Ingeniería
Carrera de Ingeniería Eléctrica
Introducción
La interfaz para desarrollar un sistema que procese información, es por medio de un
lenguaje que contempla instrucciones recurrentes que puedan ser traducidas a códigos que
pueda interpretados y ejecutados un sistema de computación.
Se han desarrollado y están en constante evolución lenguajes de programación de
propósito general y específico, siendo el más utilizado y base de otros más el lenguaje “C”,
pues su estructura asemeja más a un lenguaje matemático, por ello en muchos casos se lo
denomina lenguaje de ingeniería.
Algunas tareas recurrentes como condiciones y bucles, son funciones
preestablecidas del lenguaje e implementadas por defecto. Otras tareas más especializadas
y comunes en todos o la mayoría de los sistemas de computación son implementadas como
librerías, de estas y las primeras se agrupan en un estándar como lo es el estándar ANSI C
en sus diferentes versiones. Existen más librerías y funciones que un fabricante de
hardware y/o software desarrolla y su gran variedad depende de la evolución de la
tecnología.
Objetivos
Objetivo General
● Conocer las ventajas de optar por técnicas alternativas para optimizar los
cálculos y así reducir el tiempo de procesamiento en los sistemas de
computación.
Objetivo Secundarios
1. Conocer las cualidades de la elección de un algoritmo en la multiplicación
2. Conocer las cualidades de los cálculos de grandes grupos de números
3. Aplicar la cualidad de precalificar valores en tablas para su acceso inmediato.
4. Aplicación de algoritmos desarrollados para procesamiento de señales
Universidad Mayor de San Andres
Facultad de Ingeniería
Carrera de Ingeniería Eléctrica
Marco teórico
c=0;
for(i=1:b)
c=c+a;
end
c
Al analizar el código podemos para cuantificar el rendimiento respecto al tiempo de
ejecución, podemos asignar un T por cada operación, esto daría:
por cada incremento de i T entonces bT
por cada operación de suma + T entonces bT
por actualizar el valor de c entonces bT
a pesar que la inicialización y el despliegue de el resultado pueden tomarse no son
relevantes para valores grandes de b, por consecuencia el tiempo de ejecución será
Te=3bT. Si tomamos como base un número entero b=255, serían 765 veces T tiempos de
procesamiento.
Ahora si consideramos la multiplicación en un sistema binario
10𝑑 * 5𝑑 = 1010𝑏 * 101𝑏 =?
debemos notar que multiplicar por dos puede desarrollarse como como una rotación a la
izquierda adicionando un cero a la izquierda, así:
1010𝑏 * 2𝑑 = 10100𝑏
si se multiplicará por 3𝑑 = 11𝑏 = 10𝑏 + 1𝑏 aprovechando la propiedad distributiva de la
multiplicación respecto a la suma, podría desarrollarse la siguiente operación:
10𝑑 * 3𝑑 = 1010𝑏 * 11𝑏 = 1010𝑏 * 10𝑏 + 1010𝑏 * 1𝑏 = 10100𝑏 + 1010𝑏 = 11110𝑏 = 30𝑑
si comparamos el caso de b=255, que no se tomó a la ligera, ya que 255𝑑 = 11111111𝑏, así
la multiplicación,
10𝑑 * 255𝑑 = 1010𝑏 * 11111111𝑏 =
= 1010𝑏 * 10000000𝑏 +
1010𝑏 * 1000000𝑏 +
Universidad Mayor de San Andres
Facultad de Ingeniería
Carrera de Ingeniería Eléctrica
1010𝑏 * 100000𝑏 +
1010𝑏 * 10000𝑏 +
1010𝑏 * 1000𝑏 +
1010𝑏 * 100𝑏 +
1010𝑏 * 10𝑏 +
1010𝑏 * 1𝑏 = 100111110110𝑏 = 2550𝑑
si contamos las operaciones que se deben realizar en un algoritmo:
dados a y b
e=b
i=1
while (e!=0)
if(a && 1 )
d[i]=a
i++;
end
a=a<<1
e=e>>1
end
c=sum(d)
7 sumas entonces 7T
6 actualizaciones, rotaciones e inicialización entonces 6*8= 48 T
en total 56 veces T.
que es mucho menos que el primer procedimiento.
Materiales
Tarjetas de desarrollo Arduino UNO, MEGA, DUE
Software de desarrollo de Arduino
Computador de sobremesa
Software de Matlab
Procedimiento
1. Multiplicación de números de punto flotante, en el entorno de Arduino
a. Almacenar dos número en formato de 32 bits (4 bytes)
b. Realizar la multiplicación de los dos números en formato de 32 bits
i. realizar 100 multiplicaciones y validar el tiempo de ejecución
float a=1.2
float b=2.554
for (i=0:i<100:i++){
float c=a*b
}
Serial.printfln(c);
ii. enviar los datos a la PC y y ejecutar las 100 multipliciones
Análisis de resultados
Realizar la comparativa en diferentes lenguajes de programación, por medio de
comentarios de cada una de los resultados obtenidos.
Investigación complementaria
1. Que es un coprocesador matemàtico
2. Que es un DSP
3. Que es un Filtro Digital
4. Que es la Transformada Z
Bibliografía
1. Centro de ayuda de Matlab https://la.mathworks.com/help/index.html
2. Guia de referencia de Arduino https://www.arduino.cc/reference/en/