miércoles, 2 de diciembre de 2009

4.3 Algoritmo numéricos

4.3 Algoritmo numéricos

Un algoritmo es un conjunto de instrucciones o pasos que nos ayudan a resolver un problema. De un modo más formal, un algoritmo es una secuencia finita de operaciones realizables, no ambiguas, cuya ejecución da una solución de un problema en un tiempo finito.

El termino algoritmo no solo esta ligado a las matemáticas o computación sino también en la vida cotidiana empleamos algoritmos para resolver problemas.

Ejemplo de algoritmo aplicado ala vida cotidiana seria el uso de la lavadora. Ejemplo en matemáticas seria el algoritmo de Euclides (usado para calcular el máximo común divisor) o el método de Gauss para resolver sistema lineal de ecuaciones.

Un algoritmo numérico es el conjunto de instrucciones para revolver un problema que involucra procesos matemáticos. Este tipo de algoritmos no admiten ambigüedades y debe darse cada uno de sus pasos para su solución.

Otra definición de algoritmo es una lista de instrucciones mediante las cuales puede llevarse a cabo un determinado proceso.

Existen varios tipos de algoritmos numéricos entre los cuales tenemos:
Algoritmos numéricos paralelos
Algoritmos paralelos para sistemas lineales
Algoritmos paralelos para sistemas no lineales

Algoritmos numéricos paralelos. Diseño, estudio y evaluación Una de las áreas de mayor importancia en el contexto de la computación paralela, y donde se está dedicando un gran esfuerzo al desarrollo de algoritmos numéricos eficientes, la constituye el álgebra lineal numérica. La introducción del paralelismo en el área ha influido notablemente en el desarrollo de algoritmos y programas. El grupo trabaja en la obtención de algoritmos eficientes motivados por el uso de máquinas paralelas para dos problemas concretos.

Algoritmos numéricos paralelos para sistemas lineales. El estudio se centra en la elaboración de librerías portables que incluyen algoritmos eficientes para la resolución de grandes sistemas de ecuaciones lineales diseñados previamente por el grupo y evaluados tanto desde el punto de vista teórico como experimental.

Algoritmos paralelos para sistemas no lineales. Aunque los sistemas no lineales aparecen en muchos problemas científicos y de ingeniería que provienen de la discretización de ecuaciones diferenciales como por ejemplo, el cálculo de trayectorias o el estudio de sistemas oscilatorios, es un problema poco estudiado desde el punto de vista paralelo. El grupo está diseñando y evaluando algoritmos paralelos eficientes que permitan resolver este tipo de sistemas aplicándolos a los problemas citados.


Aqui se ven algunos de los algoritmos mas utiles para procesamiento de secuencias de números. Actualmente existen muchos más.
accumulate() Función template T accumulate(Input Iterator? first, Input Iterator? last, T init) {
for ( ; first != last; ++first)
init = init + *first;
return init;
}
template T accumulate(Input Iterator? first, Input Iterator? last, T init,
Binary Operation? binary_op)
{
for ( ; first != last; ++first)
init = binary_op(init, *first);
return init;
}
Descripción accumulate() incrementa el valor de init utilizando el operator+(). La version que recibe una función como argumento aplica en cada iteracion una operacion binaria a init y un elemento de la secuencia y lo asigna a init.
inner_product() Función template T inner_product(Input Iterator 1? first1, Input Iterator 1? last1,
Input Iterator 2? first2, T init)
{
for ( ; first1 != last1; ++first1, ++first2)
init = init + (*first1 * *first2);
return init;
}
template
T inner_product(Input Iterator 1? first1, Input Iterator 1? last1,
Input Iterator 2? first2, T init, Binary Operation 1? binary_op1,
Binary Operation 2? binary_op2)
{
for ( ; first1 != last1; ++first1, ++first2)
init = binary_op1(init, binary_op2(*first1, *first2));
return init;
}
Descripción inner_product() calcula el pruducto vectorial de dos secuencias, es decir las multiplica componente a componente y va acumulando los resultados.
partial_sum() Función template Output Iterator? partial_sum(Input Iterator? first, Input Iterator? last,
Output Iterator? result)
template Output Iterator? partial_sum(Input Iterator? first, Input Iterator? last,
Output Iterator? result, Binary Operation? binary_op)






No hay comentarios:

Publicar un comentario