Código Bloque II: GENERACIÓN DE LA Matriz DE RIGIDEZ A

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Código Bloque II: GENERACIÓN DE LA Matriz DE RIGIDEZ A"

Transcripción

1 VIII. Código Bloque II: GENERACIÓN DE LA Matriz DE RIGIDEZ A Este bloque se encarga de la generación de las matrices locales para cada triángulo, su ensamblado en una matriz única de rigidez y la simplificación de ésta, eliminando de ella, mediante sumas, las multiplicidades de los términos compartidos. Esta matriz será almacenada en formato COO para poder convertirla en un archivo MATRIX MARKET de manera sencilla y poder manejarla en otros puntos del problema. 1. PUNTO DE PARTIDA: En Matlab y mediante la herramienta de mallado se generó una trama, definiendo el dominio, las condiciones de contorno y el grado de mallado. Este sistema se exportó a archivos mediante el código tratamalla que genera los archivos triangulos.dat, coordenadas.dat, dirichlet.dat y neumann.dat. A partir de ahí el objetivo consiste en: 1- Lectura de los archivos que describen el mallado. 2- Cálculo de las matrices locales para cada uno de los elementos del mallado. (Matrices 3x3). 3- El ensamblado de dichas matrices en una matriz dispersa de tamaño Num_nodosxNum_nodos, eliminando duplicidades y valores nulos. 4- El almacenamiento de la matriz generada en formato COO que podría ser volcada en un archivo en formato Matrix Market que sería la entrada del solver. METODOLOGÍA La idea en la que se basaría la solución sería desarrollar un código usando exclusivamente lenguaje C con las extensiones CUDA. Sin usar bibliotecas ni códigos previamente desarrollados. La ventaja de este desarrollo es que el código es una solución optimizada y a medida del problema que nos ocupa. Se optó por dividir el problema en dos partes: 1- Generador de matrices que depende de los triángulos. 2- Simplificador de la Matriz a formato COO que depende de los nodos. Se ha usado la CUDA API C Runtime para CUDA. Se han usado como lenguajes de programación C y C++. No se han usado bibliotecas estándar ni "tamplates": CUBLAS, CUSP, THRUST. 146

2 En la figura 1 se ilustra la estrategia usada en este bloque. BLOQUE DE PARTIDA EN CPU Generación de la Matriz de Rigidez Lectura de archivos tiengulos.dat y coordenadas.dat Traslado de la información a GPU. Generación de las Matrices Locales y su ensamblado, en GPU. Eliminación de Redundancias y Ceros en la matriz ensamblada, en GPU Volcado a archivo MM de la matriz de Rigidez. ADAPTACIÓN CUDA Fig 1: Diagrama de flujo de la adaptación objeto de este bloque. 2. MODELO MATEMÁTICO Y SIMPLIFICACIONES Uno de los elementos fundamentales para la optimización de código es realizar simplificaciones previas a la codificación. Esto se vuelve especialmente importante en CUDA cuando tenemos en cuenta que si la simplificación conlleva la disminución en el número de variables y operaciones, esto se traduce en una disminución de registros necesarios para la ejecución y por tanto una mayor velocidad potencial de la aplicación. Además un análisis previo del problema algebraico nos permite deducir características de la matriz final y de las matrices intermedias que simplificarán los cálculos, disminuyendo como veremos las operaciones necesarias. Por tanto, a partir de cada triángulo del mallado se construye una matriz de 3x3 que será la matriz local. Para la determinación de dichos elementos intervienen las coordenadas de los tres vértices. Estos elementos corresponden a combinaciones de los vértices de cada triángulo tomados de dos en dos. Para cada triángulo tenemos tres vértices: v1, v2 y v3; que les corresponden 2 coordenadas de tipo (x,y). Se forma la matriz de coordenadas que corresponde a los vértices de cada x1 y1 triángulo: x2 y2 x3 y3] 147

3 El jacobiano será: 1 x1 y1 1 x2 y2 1 x3 y3] =(x2*y3)+(x3*y1)+(x1*y2)-(x2*y1)-(x1*y3)-(x3*y2) También se construye la matriz Bkt que es la matriz de transformación que lleva los vértices del triángulo (0,0) (0,1) (1,0) a la posición de los vértices V1, V2 y V3: x2 y2 x1 x2 x1 y2 x3 y3] - = x1 y1] x3 x1 y3 y1] La inversa de Bkt es inmediata por ser una matriz 2x2, inv Bkt: 1 Bkt 1 y3 y1 y1 y2 = Det * x1 x3 x2 x1] A partir de ahí construimos la matriz CK definida como: CK= Bkt 1T * Bkt 1 De ahí, CK= 1 CK= Det 2 * 2 2 y3 y1 + x1 x3 1 y3 y1 x1 x3 y3 y1 y1 23 Det 2 * y1 y2 x2 x1]* x1 x3 x2 x1] y3 y1 y1 y2 + x1 x3 x2 x1 y3 y1 y1 y2 + x1 x3 x2 x1 y1 y2 + x2 x1 2 2 Se usan las siguientes matrices auxiliares definidas para las matrices locales: K XX = ], K YY = ], K XY = ] y K T XY = ] Para cada triángulo se construye la matriz local: R=jacob*{CK11* K XX +CK22* K YY +CK12* K XY + K T XY ]} K XY + K T XY = ] ]= ] 148

4 R= 1 2 * 1 Det 2 *jacob* CK11+CK22+ 2Ck12 CK11+ 0 CK12 0 CK22 CK12 CK11+ 0 CK12 CK CK12 0 CK22 CK CK12 0+CK22+ 0 Observamos que: y que: R11= R22+ R33+2*R23 R12=-R22+0*R33- R23 R13=0*R22- R33- R23 R21=R12 R31=R13 R32=R23 Concluimos que las matrices locales son reales, cuadradas y simétricas con sólo 3 elementos independientes. Por tanto necesitamos obtener sólo 3 elementos que formarán la base de nuestros cálculos: R22, R33 y R23 tal y como están definidos en función de CK. Los 6 restantes son deducidos de manera inmediata. Estos cálculos permiten simplificar el código. Otro elemento esencial es que estas matrices locales una vez ensambladas forman una matriz de rigidez simétrica real, dispersa, y con diagonal no nula. Todas estas características son útiles para generarla y simplificarla. 3. ALGORITMO DE GENERACIÓN Para la parte de generador, se parte del código MATLAB, y se expresa en ALGEBRA LINEAL. Tras realizar los cálculos pertinentes para simplificar las operaciones y permitir en la medida de lo posible la obtención de resultados inmediatos, se transcribió a lenguaje de programación C. Rápidamente se observa que los cálculos de mayor exigencia, son los bucles y entre éstos los bucles anidados (dobles o incluso triples). En particular el bucle para calcular las matrices locales. Esta parte del código se transcribió a CUDA mediante inserción de código Host y código device. 149

5 En la CPU se realiza la lectura de los archivos y el almacenamiento de los datos en matrices. Por un lado se realiza la lectura del archivo de coordenadas y se almacena su contenido en la matriz Cor de coordenadas donde la fila i corresponde al vértice V=i+1 y almacena dos valores x(v) e y(v) que corresponden a sus coordenadas. Por otro lado se realiza la lectura del archivo de triángulos y se almacena su contenido en la matriz Tri donde la fila i corresponde al triángulo T=i+1 y almacena tres valores V1, V2 y V3 que corresponden a los vértices que lo forman. Es de señalar que no existe ni el triángulo "0", ni tampoco el vértice 0. Esto es importante debido al indexado de matrices en C, donde, recordémoslo, sí existen las posiciones 0. Estas matrices se copian a la GPU donde se generan las matrices resultado. Para cada uno de los vértices se leen sus coordenadas correspondientes y se realizan los cálculos mediante la invocación del kernel. Finalmente los resultados se trasladarán a la CPU. La sección del kernel es sin duda la más importante del código porque es la que implanta el algoritmo de generación de matrices locales y además lo hace de manera paralela y no secuencial. Cada hilo ejecuta el algoritmo para un triángulo individual. Las operaciones son básicamente las expuestas en el desarrollo algebraico descrito arriba. Se ha buscado por un lado reducir al máximo los pasos y por otro usar el menor número posible de registros. Esto permite acelerar la ejecución y aumentar los recursos disponibles para ejecutar un gran número de hilos simultáneamente. La lectura de los datos de entrada para cada triángulo se hace casi de manera independiente leyendo secciones independientes de la matriz de triángulos. Aunque en teoría estas secciones coinciden o se repiten entre triángulos (porque los triángulos comparten vértices), en la práctica no se ha observado una saturación debido a la lectura, ni tampoco una aceleración cuando se han almacenado las coordenadas en memoria compartida en lugar de hacerlo en los registros. Sin embargo la escritura de los resultados se debe hacer de manera independiente. No se controla la secuencia de escritura de los hilos independientes por ello si dos o varios hilos escribieran en una misma posición actualizando el dato almacenado pueden surgir inconsistencias. Para ello se ha optado por reservar memoria suficiente con posiciones contiguas para que cada hilo almacene los 9 datos que genera (Que corresponden a los elementos R de la matriz local) usando 3 arrays que forman una matriz en el formato COO. La matriz I almacena la fila que corresponde al vértice tomado como índice inicial, la matriz J almacena las columnas correspondientes a todas las combinaciones usando los demás vértices del triángulo para obtener todas las combinaciones posibles y la matriz Val almacena los valores que corresponden. 150

6 El índice de almacenamiento y el orden se basan en el índice del triángulo. De tal modo que al triángulo T le corresponden las posiciones de 9*T hasta la 9*T+8 todas contiguas en cada uno de los 3 arrays. El sistema de almacenamiento de resultados que se ha usado se basa en reservar en cada array un bloque de posiciones contiguas para la escritura. Como índice se usan los triángulos. Por tanto cada hilo escribe en una posiciones identificadas e independientemente de los demás hilos en ejecución o los que puedan ejecutarse o arrancarse durante su existencia. La reserva de estos espacios con una dirección de comienzo determinada por el índice del hilo (en total 9 posiciones en cada matriz para cada triángulo), evita colisiones en escritura e independiza los accesos de los hilos. El orden descrito en este apartado será esencial para realizar las tareas de simplificación. En las matrices generadas, sin embargo la posición "i" corresponde al triángulo i+1 ya que en C la matrices empiezan en el índice 0. Para evitar limitaciones de memoria, se ha optado por volcar el contenido de las matrices a un archivo provisional: prov.dat. 4. ALGORITMO DE SIMPLIFICACIÓN La matriz generada en el apartado anterior es una matriz que contiene valores nulos y duplicidades. En realidad su formato no es el de una matriz COO propiamente dicho. Por ello se hace necesario un paso adicional que es someterla a un ALGORTIMO SIMPLIFICADOR que elimina los valores nulos y las DUPLICIDADES. Las duplicidades Se generan debido a que los vértices son compartidos por varios triángulos. Además los triángulos contiguos comparten un lado. Las duplicidades dependen del patrón de mallado, pero generan pares (I,J) que se repiten aunque puedan tener el mismo valor. Especial relevancia tienen los pares (I,I) que constituyen la diagonal de la matriz de ensamblado. El número de estas duplicidades puede llegar a ser muy importante y de hecho lo demuestran los datos de salida durante las pruebas. 151

7 Para eliminar estas duplicidades se probaron 3 soluciones: a. MÉTODO DIRECTO: La idea es convertir el código CPU siguiente: for(i=0; i<n; i++){ for(j=i+1; j<n; j++){ if((ij]==ii])&&(jj]==ji])){ Vali]+=Valj] Valj]=0 } } En código GPU de manera directa: Si definimos t como índice de hilos, una solución sería ejecutar cada hilo el bucle interno para for(j=t+1; j<n; j++){ if((ij]==it])&&(jj]==jt])){ Tt]=j j=n } } Las posiciones se recorren una a una y se comparan. En la CPU este bucle tarda horas, sin embargo en la GPU la versión paralela no se ejecuta y la GPU lo interrumpe. Se debe señalar que al no poder usar el depurador CUDA-gdb por no disponer de una salida vídeo adicional, se optó por incorporar código adicional para ayudar a depurar el programa. Esto se hizo mediante la inserción de código para producir mensajes por pantalla para controlar los puntos de ejecución (Una especie de orden Break que no interrumpe la ejecución) y bloques de escritura a archivo para conocer y guardar el contenido de las variables. En especial para los kernels se mostró muy útil el uso del temporizador menor que mide la duración de ejecución del kernel. El temporizador mayor se usa para medir el tiempo total de ejecución del programa o de un módulo; incluye por tanto el tiempo CPU y tiempo GPU. 152

8 En condiciones exitosas la duración de un kernel es del orden de decenas o centenares de milisegundos; en caso de fracaso se detectan valores absurdos (enormes o infinitamente pequeños) o bien sencillamente "0". Al no disponer de acceso a los valores de registros de la CUDA en tiempo de ejecución, sólo se puede especular acerca de la causa. Sin embargo esta especulación está basada en experiencias parecidas expuestas en los foros CUDA y NVIDIA. Un kernel "rebota" cuando los recursos son insuficientes para su ejecución. Especialmente cuando se agotan las memorias tipo shared memory y registros. La reserva de recursos se hace previamente a la ejecución por ello simplemente se interrumpe. Al examinar el código expuesto y sus variaciones se pueden concluir 2 hipótesis: 1- No sólo las escrituras deben ser no competitivas entre hilos; sino también las lecturas. 2- Recorrer el array en orden implica el almacenamiento de un gran número de datos. Estos espacios o no se liberan durante la ejecución del hilo (por ejemplo escribiendo encima de ellos en un bucle for ) o lo hacen con lentitud ocasionando el agotamiento de los registros. Se debe observar que incluso cuando se modificaron los parámetros de lanzamiento de kernel bajando al máximo el número de hilos (llegando a 4 hilos por bloque), no se logró que arrancara. b. MÉTODO DE ORDENACIÓN Reconsiderando el problema y especialmente la disposición de los datos, en el archivo prov.dat ; se observa que los datos están dispuestos según los triángulos. Esta disposición no es la más idónea para una matriz donde el orden natural es según nodos. Por ello se buscó algún método para ordenar los arrays según los nodos. Y una vez ordenados, era de esperar que las posiciones contiguas contuvieran los valores repetidos. Por tanto el problema se reduciría a recorrer los arrays en bloques y no en su conjunto. Se partiría del primer elemento y se compararía con los k siguientes que contiene los datos que poseen la misma fila. En resumen: Se ordenan I, J, y VAL según los nodos fila de I, obteniendo en las posiciones contiguas el mismo I y distintos J que son los que se recorrerían buscando repeticiones. 153

9 Para llevar a cabo esta idea se debía usar un código de ordenación (sorting). - THRUST dispone de funciones templates (plantillas) para arrays lineales. - La biblioteca estándar de C contiene la función qsort. - La SDK de NVIDIA también contienen implantaciones de algoritmos Sorting. En general esas soluciones manejan arrays lineales. Una solución barajada era convertir cada línea en una cadena; es decir, generar un array lineal de cadenas (strings) y ordenarlo, porque al ordenador el array de columnas debemos reorganizar el de valores. Sin embargo esta solución tenía dos inconvenientes: 1. Conversión adicional de datos con especial cuidado a los formatos y longitud de cada campo. 2. No aprovechamiento en absoluto de la disposición de datos en la memoria que nos es conocida a priori. Esta opción sigue siendo válida, pero para un diseño adaptado era preferible particularizar la solución. c. MÉTODO DE MAPEADO Para este método se tuvo en cuenta la disposición de los datos en la memoria. Se decidió, por tanto, mapear los datos de los triángulos a vértices. Recordemos que triangulos.dat y la matriz que de él se genera contienen para la posiciones i que corresponde al triángulo "i+1" los vértices V1, V2 y V3. En cambio la matriz Vértices se construye haciendo que la línea "i" corresponda al vértice "i+1" y contenga los triángulos T1, T2, hasta Tk. Es decir a cada vértice le hace corresponder todos los triángulos en los que aparece. Una vez mapeados los triángulos a vértices y usando matrices auxiliares se ejecuta el código de ordenación en la GPU. En concreto se usa la matriz V, que contiene las veces que se repite un vértice en el mallado (en cuantos triángulos entra a formar parte) y la matriz P, que almacena las posiciones de comienzo de almacenamiento de todos los elementos que tienen la misma fila. Pi] es la posición de comienzo de los elementos cuya fila es "i+1". Por otro lado Vi] nos indica las veces que un nodo se repite. Para almacenar todos los elementos de la misma fila se necesitan 3xVi] posiciones de memoria. Que mediante P se direccionan y se hacen contiguas. 154

10 No hay colisiones porque los hilos que aquí corresponden a vértices leen de posiciones determinadas, en concreto, de aquellas en que su índice coincide con la fila. Estas posiciones corresponden a 3 posiciones seguidas en las matrices de resultados según los triángulos. Para escribir también lo hacen en posiciones determinadas de las matrices de salida previamente fijadas evitando colisiones. Se debe señalar que se eligió almacenar los índices de los nodos filas de un modo lineal en los arrays. Es decir primero todos los elementos cuyo elemento fila es "1", luego todos los que van en la fila "2" etc. Por tanto durante todo el proceso se ahorra el manejar al array de filas. Este kernel se ha llamado ordenadorseguni. Seguidamente se llama un segundo kernel llamado eliminador que realiza comparaciones para cada fila entre los nodos de las columnas. En este caso se obtiene, como las posiciones son contiguas y conocidas previamente (porque dependen de las veces que un vértice es compartido por los triángulos), bucles pequeños de un máximo de k, que son recorridos cada uno por un hilo independiente. En estos bucles se realizan comparaciones. Cuando hay una coincidencia se acumula en el valor inicial y se anula en los siguientes. En lugar de realizar desde el kernel una llamada a función device, se prefiere implantar un nuevo kernel. El objetivo es disminuir los requisitos de ejecución permitiendo que no se agoten en especial los registros. Finalmente los datos no nulos obtenidos son volcados a un archivo. Esto se hace de manera sencilla insertando la condición de no escribir los valores nulos. 5. PRUEBAS Y OBSERVACIONES En las pruebas iniciales realizadas en el equipo de transición, se trató un sistema de mallado con triángulos y nodos. El programa se ejecutó correctamente con los siguientes datos relevantes: PRIMERA PARTE: GENERADOR: La ejecución del programa ha requerido: 11 segundos en total. La ejecución del programa ha requerido: milisegundos en la GPU. SEGUNDA PARTE: SIMPLIFICADOR: La ejecución del programa ha requerido: segundos en total. La ejecución del programa ha requerido: milisegundos en la GPU. 155

11 Se observó lo siguiente: - Los códigos generados son bastante rápidos. Recordemos que la tarjeta usada tiene 4 procesadores con un total de 32 núcleos. - Los resultados coinciden con los ofrecidos para MATLAB. Esto se comprueba mediante inspección de los archivos generados por ambas aplicaciones. - Los arrays no se pueden inicializar en la GPU pasando el tamaño como parámetro de la función de llamada. Es decir Ak] no es válido. En cambio A6] sí lo es. - El tamaño de los bloques actúa como des-acelerador de la velocidad, pero permite acomodar un máximo de hilos. - Dentro de un mismo código host no se pueden variar las dimensiones de la malla y de los bloques entre los distintos kernels a los que se llama. - Los códigos se desarrollaron de forma compartimentada para permitir un análisis de cada sección del problema, aunque luego su fusión no produjo inconvenientes. - Hay que observar que cualquier bucle "for" excepto los de lectura y escritura de archivos son susceptibles de ser trasladados a CUDA. Incluyendo por ejemplo los de mapeado, el de determinación del máximo orden de repeticiones y los de inicialización de matrices y arrays (zero padding). La paralelización de estas secciones supondrá sin duda una mejora. - No se ha considerado el uso de otro tipo de memorias por ejemplo texture. - A la hora de determinar los tamaños de malla y bloques se debe garantizar que todos los hilos "caben" para que sean ejecutados, de ahí el redondeo al entero superior y la condición de t<número total de tríangulos ; por ejemplo. - El formato de los datos contenidos en los archivos de entrada generados por Matlab (triangulos.dat y coordenadas.dat) produjo problemas al intentar almacenarlos directamente como int. Se deben leer como float y reconvertir mediante cast a int. 156

ANÁLISIS DEL CÓDIGO MATLAB DE PARTIDA EN CPU

ANÁLISIS DEL CÓDIGO MATLAB DE PARTIDA EN CPU II. ANÁLISIS DEL CÓDIGO MATLAB DE PARTIDA EN CPU Como punto de partida se escogió un código MATLAB que debía ser adaptado a CUDA con el objetivo de explorar la nueva tecnología y realizar comparaciones.

Más detalles

PROGRAMACIÓN EN EL ENTORNO CUDA EN APLICACIONES DE MECÁNICA COMPUTACIONAL. PRUEBAS, RESULTADOS Y CONCLUSIONES CONCLUSIONES:

PROGRAMACIÓN EN EL ENTORNO CUDA EN APLICACIONES DE MECÁNICA COMPUTACIONAL. PRUEBAS, RESULTADOS Y CONCLUSIONES CONCLUSIONES: III. CONCLUSIONES: VELOCIDAD: La velocidad de la aplicación es elevada y satisfactoria. Para el mallado D se obtuvo una aceleración máxima de x200. Esta aceleración es especialmente debida al ahorro de

Más detalles

MATRICES DISPERSAS (Sparse) 1. FORMATO DE ALMACENAMIENTO DE MATRICES EN ARCHIVO MATRIX MARKET (MM)

MATRICES DISPERSAS (Sparse) 1. FORMATO DE ALMACENAMIENTO DE MATRICES EN ARCHIVO MATRIX MARKET (MM) IV. MATRICES DISPERSAS (Sparse) 1. FORMATO DE ALMACENAMIENTO DE MATRICES EN ARCHIVO MATRIX MARKET (MM) El formato MM proporciona un mecanismo sencillo para facilitar el intercambio de datos de matrices.

Más detalles

PRUEBAS, RESULTADOS y CONCLUSIONES

PRUEBAS, RESULTADOS y CONCLUSIONES PRUEBAS, RESULTADOS y CONCLUSIONES When you have eliminated all which is impossible, then whatever remains, however improbable, must be the truth. The Adventure of the Blanched Soldier. Sir Arthur Conan

Más detalles

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION

INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION INFORMATICA TECNICATURA DE NIVEL SUPERIOR ALGUNOS EJERCICIOS DE SELECCIÓN E ITERACION DIIAGRAMAS DE FLUJO Un diagrama de flujo es un dibujo que utiliza símbolos estándar de diagramación de algoritmos para

Más detalles

TEMA 7. ARRAYS (LISTAS Y TABLAS).

TEMA 7. ARRAYS (LISTAS Y TABLAS). TEMA 7. ARRAYS (LISTAS Y TABLAS). En capítulos anteriores se han descrito las características de los tipos de datos básicos o simples (carácter, entero y coma flotante). Asimismo, se ha aprendido a definir

Más detalles

SEGUNDA PARTE: TIPOS COMPLEJOS

SEGUNDA PARTE: TIPOS COMPLEJOS SEGUNDA PARTE: TIPOS COMPLEJOS Introducción En la primera parte del tema se vieron los tipos simples de datos que es capaz de almacenar el ordenador: booleanos, caracteres, enteros y reales. Sin embargo,

Más detalles

cuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar

cuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar cuevogenet Paralelización en CUDA de la Dinámica Evolutiva de Redes Génicas Realizado por: Raúl García Calvo Dirigido por: Fernando Díaz del Río José Luis Guisado Lizar Objetivos Implementar un algoritmo

Más detalles

Tema 18. Vectores o Tablas. Diego Gutiérrez

Tema 18. Vectores o Tablas. Diego Gutiérrez Tema 18. Vectores o Tablas 1 Vectores: Conceptos básicos Índice: 2 Ejemplo: Contar el número de apariciones de la letra A en un texto introducido por teclado (sólo mayúsculas) Variables veces_a: integer;

Más detalles

PROBLEMA 1. Rellena el hueco 1 (línea 23). Realiza la reserva de memoria para almacenar los n puntos.

PROBLEMA 1. Rellena el hueco 1 (línea 23). Realiza la reserva de memoria para almacenar los n puntos. PROBLEMA 1. El siguiente programa tiene algunos huecos en blanco que tienes que rellenar para que funcione correctamente. En cada hueco va una única línea de C, salvo en el cuerpo de la función calcula_area_triangulo,

Más detalles

ESTRUCTURA DE ASIGNACIÓN

ESTRUCTURA DE ASIGNACIÓN ALUMNA: GRADO: MODALIDAD-10 FECHA: PROFESOR: Hugo Nelson Ramírez Cárdenas LOGROS 1. Comprende la importancia que tiene el diseño de algoritmos, como forma de dar solución a un determinado problema. 2.

Más detalles

Objetivos. Conocer y saber utilizar diferentes tipos de datos. estructurados: cómo se definen. cómo están organizadas sus componentes

Objetivos. Conocer y saber utilizar diferentes tipos de datos. estructurados: cómo se definen. cómo están organizadas sus componentes Objetivos Conocer y saber utilizar diferentes tipos de datos estructurados: cómo se definen cómo están organizadas sus componentes cómo se accede a ellas y sus operaciones y algoritmos básicos Tema: Estructuras

Más detalles

Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda

Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda Programación (PRG) Facultad de Informática Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Valencia 1. Introducción El objetivo de esta práctica es estudiar el comportamiento

Más detalles

Formulación del problema de la ruta más corta en programación lineal

Formulación del problema de la ruta más corta en programación lineal Formulación del problema de la ruta más corta en programación lineal En esta sección se describen dos formulaciones de programación lineal para el problema de la ruta más corta. Las formulaciones son generales,

Más detalles

La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados.

La resolución de problemas es una tarea únicamente humana comprobable en todos los casos con los mismos resultados. Pseudocódigo Introducción La importancia de sistematizar procesos y crear programas de cómputo radica esencialmente en que estos se puedan utilizar como resolución de problemas similares en muchos casos,

Más detalles

Definición de matriz Una matriz A es un conjunto de números dispuestos en filas y en columnas.

Definición de matriz Una matriz A es un conjunto de números dispuestos en filas y en columnas. 1.- CONCEPTO DE MATRIZ. TIPOS DE MATRICES Definición de matriz Una matriz A es un conjunto de números dispuestos en filas y en columnas. 1 3 4 Por ejemplo, A = es una matriz de 2 filas y 3 columnas 0 5

Más detalles

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS Capítulo 3 Estructuras de datos estáticas 1/37 1. INTRODUCCIÓN Las estructuras de datos se utilizan, generalmente, para procesar una colección de valores que están

Más detalles

PROGRAMA PRINCIPAL: Se usan las siguientes variables en la función main()

PROGRAMA PRINCIPAL: Se usan las siguientes variables en la función main() PROGRAMA PRINCIPAL: Se trata de llevar un control de los datos característicos de varios modelos de vehículos, para poder calcular el consumo, emisión de dióxido de carbono y duración de viajes, a partir

Más detalles

Práctica Guiada: Vectores y Matrices

Práctica Guiada: Vectores y Matrices Práctica Guiada: Vectores y Matrices 1. Objetivos Al finalizar esta actividad, serás capaz de: 1. Escribir la declaración de vectores y matrices de tipos básicos. 2. Escribir el código necesario para recorrer

Más detalles

UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA CARRERA INGENIERÍA DE SISTEMAS MODELO DE RESPUESTA

UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA CARRERA INGENIERÍA DE SISTEMAS MODELO DE RESPUESTA 4-7- /8 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA CARRERA INGENIERÍA DE SISTEMAS MODELO DE RESPUESTA ASIGNATURA: COMPUTACIÓN GRÁFICA CÓDIGO: 4 MOMENTO: INTEGRAL FECHA DE APLICACIÓN:

Más detalles

Tema 2: Teorema de estructura de los grupos abelianos finitamente generados.

Tema 2: Teorema de estructura de los grupos abelianos finitamente generados. ESTRUCTURAS ALGEBRAICAS GRADO EN MATEMÁTICAS. CURSO 215/216 Tema 2: Teorema de estructura de los grupos abelianos finitamente generados. 1.1. Grupo abeliano libre. Bases. Definición 1.1. El grupo Z n con

Más detalles

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela PROGRAMACIÓN PARALELA Modelos de programación paralela Paradigmas de programación paralela Tipos de paralelismo Paso de mensajes Paralelismo de datos Memoria compartida Paradigmas de programación paralela

Más detalles

V. OPTIMIZACIÓN PARA COMPUTACIÓN GPU EN CUDA

V. OPTIMIZACIÓN PARA COMPUTACIÓN GPU EN CUDA V. OPTIMIZACIÓN PARA COMPUTACIÓN GPU EN CUDA La arquitectura de una GPU es básicamente distinta a la de una CPU. Las GPUs están estructuradas de manera paralela y disponen de un acceso a memoria interna

Más detalles

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios 35. Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas

Más detalles

MATRICES. Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden x (que se lee por ).

MATRICES. Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden x (que se lee por ). 1 MATRICES 1 Una matriz es una disposición rectangular de números (Reales); la forma general de una matriz con filas y columnas es Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden

Más detalles

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

Algoritmos y Estructuras de Datos Ingeniería en Informática

Algoritmos y Estructuras de Datos Ingeniería en Informática 2.1.Sean A= {1, 2, 3, 7, 8} y B= {3, 4, 5, 7, 9}, mostrar la ejecución y los resultados de las siguientes operaciones, suponiendo una representación con arrays de booleanos y con listas de elementos (ordenadas

Más detalles

TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN

TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN Y MEZCLA Grado en Ingeniería en Tecnologías Industriales Programación

Más detalles

4. Procedimiento de solución

4. Procedimiento de solución 4. Procedimiento de solución Para probar la validez del modelo desarrollado, se va a implementar su programación en la herramienta de optimización del programa Matlab R2008a. 4.1. Sub-rutina en Matlab

Más detalles

Retículos y Álgebras de Boole

Retículos y Álgebras de Boole Retículos y Álgebras de Boole Laboratorio de Matemática Discreta Jesús Martínez Mateo jmartinez@fi.upm.es Práctica 1. Ordenación topológica A. Herramientas necesarias Para la práctica que vamos a realizar

Más detalles

Objetivo El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan problemas de tipo numérico.

Objetivo El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan problemas de tipo numérico. Universidad Nacional Autónoma de México Facultad de Ingeniería ARREGLOS Y ESTRUCTURAS Objetivo El alumno conocerá y aplicará los conceptos de arreglo y estructura en la realización de programas que resuelvan

Más detalles

FUNDAMENTOS DE INFORMÁTICA Convocatoria de Febrero. EXAMEN DE TEORÍA T1 curso 2002 / 2003 TEST. Nombre DNI Grupo INSTRUCCIONES

FUNDAMENTOS DE INFORMÁTICA Convocatoria de Febrero. EXAMEN DE TEORÍA T1 curso 2002 / 2003 TEST. Nombre DNI Grupo INSTRUCCIONES FUNDAMENTOS DE INFORMÁTICA Convocatoria de Febrero EXAMEN DE TEORÍA T1 curso 2002 / 2003 Nombre DNI Grupo INSTRUCCIONES Todas las preguntas del test se han de contestar en la tabla a pie de página de esta

Más detalles

Teoría de redes y optimización en redes

Teoría de redes y optimización en redes Teoría de redes y optimización en redes Pedro Sánchez Martín Contenidos Definiciones básicas Árbol generador mínimo de expansión Camino mínimo Algoritmo Dkstra Algoritmo Bellman-Ford Fluo máximo Fluo de

Más detalles

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo.

FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA. Tema 3. Estructuras de Almacenamiento. Básicas. Definición y Manejo. FICHEROS Y BASES DE DATOS (E44) 3º INGENIERÍA EN INFORMÁTICA Tema 3. Estructuras de Almacenamiento Básicas. Definición y Manejo. 1.- Búsqueda de Información. Definición de Clave. 2.- Definición y Manejo

Más detalles

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A. Docente: Albert A. Osiris Sofía 1º Cuatrimestre 2002 Conceptos Básicos Indices Ordenados Arboles Asociación Indexación y Asociación Archivos Indice 1 2 3 1 Archivos Indice Ordenados Asociativos Primario

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten

Más detalles

Repaso del algoritmo SIMPLEX

Repaso del algoritmo SIMPLEX Universidad de Chile Facultad de Ciencias Físicas y Matemáticas Departamento de Ingeniería Industrial IN70K: Clase Auxiliar Repaso del algoritmo SIMPLEX Marcel Goic F. 1 1 Esta es una versión bastante

Más detalles

Espacios euclídeos. Transformaciones ortogonales

Espacios euclídeos. Transformaciones ortogonales Espacios euclídeos. Transformaciones ortogonales Álgebra con MATLAB: Práctica 3 Curso 2006-2007 Una ortogonalización Empezaremos esta práctica utilizando MATLAB para resolver el siguiente problema: En

Más detalles

CONTENIDOS EXÁMEN DE ADMISIÓN MATEMÁTICA SEGUNDO BÁSICO 2018

CONTENIDOS EXÁMEN DE ADMISIÓN MATEMÁTICA SEGUNDO BÁSICO 2018 SEGUNDO BÁSICO 2018 DEPARTAMENTO Ámbito numérico 0-50 - Escritura al dictado - Antecesor y sucesor - Uso de la tabla: parte parte todo. - Orden (menor a mayor y viceversa) - Patrones de conteo ascendente

Más detalles

2. ESTRUCTURAS BÁSICAS

2. ESTRUCTURAS BÁSICAS 2. ESTRUCTURAS BÁSICAS En el computador un conjunto (no vacío) de datos se almacenan en memoria; el área de memoria se denomina por el elemento X k ; esto es una celda, una unidad de memoria direccionable;

Más detalles

DETERMINANTES MATRICES EQUIVALENTES POR FILAS RANGO DE UNA MATRIZ. APLICACIONES

DETERMINANTES MATRICES EQUIVALENTES POR FILAS RANGO DE UNA MATRIZ. APLICACIONES Tema 2.- DETERMINANTES DETERMINANTES MATRICES EQUIVALENTES POR FILAS RANGO DE UNA MATRIZ. APLICACIONES 1 Un poco de historia Los determinantes es uno de los temas más útiles del Álgebra Lineal, con muchas

Más detalles

Estructuras Dinámicas de datos.

Estructuras Dinámicas de datos. Estructuras Dinámicas de datos. Las estructuras dinámicas de datos son estructuras que crecen a medida que ejecuta un programa. Una estructura dinámica de datos es una colección de elementos llamadas nodos

Más detalles

Capítulo 3. Introducción a la programación. Continuar

Capítulo 3. Introducción a la programación. Continuar Capítulo 3 Introducción a la programación Continuar Introducción Java es un lenguaje que tiene muchas ventajas frente a otros lenguajes de programación: es open source (código abierto), esto permite ver

Más detalles

Capítulo 5. 5.Seguimiento de objetos

Capítulo 5. 5.Seguimiento de objetos Capítulo 5 5. Introducción 5.1.Introducción El seguimiento de objetos en movimiento es el fin último de este proyecto. Para ello, como se comentó previamente, el sistema de visión capta las imágenes del

Más detalles

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año

A l g o r i t m o y E s t r u c t u r a d e D a t o s Ing. en Sistemas de Información 1º año Trabajo práctico Nº 5 (Resolución de problemas Arreglos bidimensionales ). Realiza el programa en Lenguaje C correspondiente. 1- Qué hay de incorrecto en los siguientes códigos? int main() { int x,y; int

Más detalles

Programación Estructurada

Programación Estructurada Programación Estructurada PROGRAMACIÓN ESTRUCTURADA 1 Sesión No. 7 Nombre: Estructuras de datos Contextualización Cuando un programa suele ser muy extenso, un problema clásico de los programadores es la

Más detalles

Alejandro Molina Zarca

Alejandro Molina Zarca Compute Unified Device Architecture (CUDA) Que es CUDA? Por qué CUDA? Dónde se usa CUDA? El Modelo CUDA Escalabilidad Modelo de programación Programación Heterogenea Memoria Compartida Alejandro Molina

Más detalles

OCW-V.Muto Eliminación Gaussiana y sustitución hacia atrás Cap. XIV CAPITULO XIV. ELIMINACION GAUSSIANA Y SUSTITUCION HACIA ATRAS

OCW-V.Muto Eliminación Gaussiana y sustitución hacia atrás Cap. XIV CAPITULO XIV. ELIMINACION GAUSSIANA Y SUSTITUCION HACIA ATRAS CAPITULO XIV ELIMINACION GAUSSIANA Y SUSTITUCION HACIA ATRAS 1 INTRODUCCION Y METODO El procedimiento general de eliminación Gaussiana aplicado al sistema E 1 : a 11 x 1 + a 1 x + + a 1n x n = b 1 E :

Más detalles

Resuelva las siguientes desigualdades justificando solo los pasos en que aplique postulados o teoremas de este modulo.

Resuelva las siguientes desigualdades justificando solo los pasos en que aplique postulados o teoremas de este modulo. Ejercicios de autoevaluación Matemáticas II MODULO I CUESTIONARIO Resuelva las siguientes desigualdades justificando solo los pasos en que aplique postulados o teoremas de este modulo. 10. 12. - 4x < 3x

Más detalles

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria Estructura de datos y Algoritmos Tema III Clasificación en memoria secundaria 3.1. Clasificación externa basada en mezcla 3.1.1. Mezcla directa. 3.1.2. Mezcla natural. 3.1.3. Mezcla balanceada múltiple.

Más detalles

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios

Algoritmos y Estructuras de Datos Curso 06/07. Ejercicios 6.1.(Clase) Un programa que utiliza la técnica divide y vencerás, divide un problema de tamaño n en a subproblemas de tamaño n/b. El tiempo g(n) de la resolución directa (caso base) se considerará constante.

Más detalles

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación INDICE Prologo XI Capitulo 1. Algoritmos y programas 1.1. Configuraciones de una computadora 1 1.2. Lenguajes de programación 2 1.3. Resolución de problemas 1.3.1. Fase de resolución del problema 3 1.3.1.1.

Más detalles

CUDA (Compute Unified Device Architecture)

CUDA (Compute Unified Device Architecture) CUDA (Compute Unified Device Architecture) Alvaro Cuno 23/01/2010 1 CUDA Arquitectura de computación paralela de propósito general La programación para la arquitectura CUDA puede hacerse usando lenguaje

Más detalles

Práctica 5: Códigos Lineales

Práctica 5: Códigos Lineales TRANSMISIÓN DE DATOS 2008/09 Práctica 5: Códigos Lineales Apellidos, nombre Apellidos, nombre Grupo Puesto Fecha 26 de Noviembre y 1y 4 de Diciembre del 2008 El objetivo de esta práctica es familiarizar

Más detalles

PRESENTACIÓN DEL ALGORITMO

PRESENTACIÓN DEL ALGORITMO PRESENTACIÓN DEL ALGORITMO Puede ser en distintas formas, analizaremos cuatro: a) Descripción Narrada b) Pseudocódigo c) Diagramas de Flujo d) Diagramas N- S (Nassi-Schneiderman o de Chapin) Descripción

Más detalles

UNIVERSIDAD SAN CARLOS DE GUATEMALA CUNIZAB

UNIVERSIDAD SAN CARLOS DE GUATEMALA CUNIZAB UNIVERSIDAD SAN CARLOS DE GUATEMALA CUNIZAB Facilitador del curso: Ing. Freddy Pérez Cuso: Introducción a la Programación Carrera: PEM en computación e informática Semestre: 2do Semestre Integrantes del

Más detalles

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS

Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS Capítulo 6: EVALUACIÓN Y COMPARACIÓN DE MÉTODOS En este capítulo, se realiza la evaluación y comparación de los métodos de paralelización de recurrencias descritos y propuestos en este trabajo. Los resultados

Más detalles

Estructura de Datos ARREGLOS

Estructura de Datos ARREGLOS Estructura de Datos ARREGLOS ESTRUCTURAS DE INFORMACIÓN Una estructura de datos o de información es una colección de datos que pueden ser caracterizados por su organización y las operaciones que se definen

Más detalles

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( "\nla temperatura media es %f\n", media );

media = ( temp0 + temp1 + temp2 + temp3 + temp temp23 ) / 24; printf( \nla temperatura media es %f\n, media ); Arrays en el lenguaje C Introducción Una posible definición de array sería: Un conjunto de datos del mismo tipo, identificados por el mismo nombre, y que se pueden distinguir mediante un número de índice.

Más detalles

1 Introducción a los algoritmos y a la programación de computadoras... 1

1 Introducción a los algoritmos y a la programación de computadoras... 1 Contenido - IX Contenido 1 Introducción a los algoritmos y a la programación de computadoras... 1 1.1 Introducción... 2 1.2 Concepto de algoritmo... 2 1.2.1 Definición de algoritmo y problema... 2 1.2.2

Más detalles

Capítulo 5 Introducción a la teoría de grafos

Capítulo 5 Introducción a la teoría de grafos Capítulo 5 Introducción a la teoría de grafos 5.1. Terminología básica y tipos de grafos Una primera aproximación a la teoría de grafos la tenemos cuando observamos un mapa de carreteras: ciudades (vértices)

Más detalles

suma de los n>0 primeros números que se lean del teclado. El número n es un dato y es

suma de los n>0 primeros números que se lean del teclado. El número n es un dato y es EJERCICIOS.. 1. Escribe un algoritmo que usando un bucle for infinito, y una sentencia break calcule la suma de los n>0 primeros números que se lean del teclado. El número n es un dato y es el primero

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

Prácticas de SAGE (caldum) 19 de Enero de 2012

Prácticas de SAGE (caldum) 19 de Enero de 2012 Prácticas de SAGE (caldum) 19 de Enero de 2012 1. Introducción En este ejercicio vamos a ver las posibilidades de programación de SAGE haciendo una implementación del algoritmo de reducción de Gauss de

Más detalles

Técnicas de Programación

Técnicas de Programación Técnicas de Programación 2.1.- Introducción: unos conceptos previos y primeros conceptos de la API Introducción La resolución de un problema con medios informáticos implica generalmente la siguiente secuencia

Más detalles

Programación: Sistemas unitriangulares inferiores

Programación: Sistemas unitriangulares inferiores Programación: Sistemas unitriangulares inferiores Objetivos. Programar en el lenguaje de MATLAB el método de la sustitución hacia adelante para resolver sistemas de ecuaciones lineales con matrices unitriangulares

Más detalles

ELECTRÓNICA DIGITAL 1. INTRODUCCIÓN. SEÑALES ANALÓGICAS Y DIGITALES.

ELECTRÓNICA DIGITAL 1. INTRODUCCIÓN. SEÑALES ANALÓGICAS Y DIGITALES. 1 ELECTRÓNICA DIGITAL 1. INTRODUCCIÓN. SEÑALES ANALÓGICAS Y DIGITALES. Podemos dividir la electrónica en dos grandes campos: la electrónica analógica y la electrónica digital, según el tipo de señales

Más detalles

Una forma fácil de recordar esta suma (regla de Sarrus): Primero vamos a estudiar algunas propiedades de los determinantes.

Una forma fácil de recordar esta suma (regla de Sarrus): Primero vamos a estudiar algunas propiedades de los determinantes. Una forma fácil de recordar esta suma (regla de Sarrus): Ejemplos: Tarea: realizar al menos tres ejercicios de cálculo de determinantes de matrices de 2x2 y otros tres de 3x3. PARA DETERMINANTES DE MATRICES

Más detalles

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación TUTORIAL PSEINT Ing. Ronald Rentería Ayquipa Fundamentos de Programación PSEINT Página Oficial: http://pseint.sourceforge.net/ Es un software que interpreta pseudocódigo. Permite la generación de diagramas

Más detalles

INDICE. Prólogo de la Segunda Edición

INDICE. Prólogo de la Segunda Edición INDICE Prólogo de la Segunda Edición XIII Capitulo 1. Algoritmos y Programas 1 1.1. Los sistemas de procesamiento de la información 2 1.2. Concepto de algoritmo 4 1.2.1. Características de los algoritmos

Más detalles

CONTENIDOS EXÁMEN DE ADMISIÓN MATEMÁTICA SEGUNDO BÁSICO 2017

CONTENIDOS EXÁMEN DE ADMISIÓN MATEMÁTICA SEGUNDO BÁSICO 2017 SEGUNDO BÁSICO 2017 DEPARTAMENTO ÁMBITO NUMÉRICO 0-50 - Escritura al dictado - Antecesor y sucesor - Orden (menor a mayor y viceversa) - Patrones de conteo ascendente (2 en 2, 5 en 5, 10 en 10) - Comparación

Más detalles

UNIDAD IV ESTRUCTURA DE DATOS ESTÁTICAS MATRICES

UNIDAD IV ESTRUCTURA DE DATOS ESTÁTICAS MATRICES UNIDAD IV ESTRUCTURA DE DATOS ESTÁTICAS MATRICES 1. Arreglos Unidimensionales (Vectores) Con fines académicos, un arreglo unidimensional puede compararse con una columna de una hoja electrónica, por ejemplo,

Más detalles

2.- TIPOS DE MATRICES

2.- TIPOS DE MATRICES 2º BACHILLERATO MATEMÁTICAS APLICADAS A LAS CIENCIAS SOCIALES II TEMA.- MATRICES PROFESOR: RAFAEL NÚÑEZ NOGALES.- CONCEPTO DE MATRIZ. Definición de matriz Una matriz real A es un conjunto de números reales

Más detalles

Introducción a Cómputo Paralelo con CUDA C/C++

Introducción a Cómputo Paralelo con CUDA C/C++ UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO Facultad de Ingeniería Introducción a Cómputo Paralelo con CUDA C/C++ Laboratorio de Intel y Cómputo de alto desempeño Elaboran: Revisión: Ing. Laura Sandoval Montaño

Más detalles

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema

Más detalles

INSTITUTO TECNOLÓGICO

INSTITUTO TECNOLÓGICO INSTITUTO TECNOLÓGICO DE NUEVO LAREDO Con la Ciencia por la Humanidad Introducción a la Ingeniería en Sistemas Computacionales y al Diseño de Algoritmos Curso propedéutico Instructor: Bruno López Takeyas

Más detalles

Primeros pasos con CUDA. Clase 1

Primeros pasos con CUDA. Clase 1 Primeros pasos con CUDA Clase 1 Ejemplo: suma de vectores Comencemos con un ejemplo sencillo: suma de vectores. Sean A, B y C vectores de dimensión N, la suma se define como: C = A + B donde C i = A i

Más detalles

RECORDAR TIPOS DE DATOS

RECORDAR TIPOS DE DATOS RECORDAR TIPOS DE DATOS VARIABLES: OBJETO CUYO valor cambia: A510 nombres NOTAS Int A=0; float B=1; CONSTANTES: OBJETO cuyo valor no cambia PI= 3.14159 LAS COMAS NO SE PERMITEN Int PI=3.1415 EXPRESIONES:

Más detalles

Es una ecuación polinómica de grado uno con una o varias incógnitas. Por ejemplo, son ecuaciones lineales: 2x 3y 4z

Es una ecuación polinómica de grado uno con una o varias incógnitas. Por ejemplo, son ecuaciones lineales: 2x 3y 4z 1. Ecuación lineal Es una ecuación polinómica de grado uno con una o varias incógnitas. Por ejemplo, son ecuaciones lineales: x y 4z 8 x 6y z 5 7y z 1. Sin embargo, no son, ecuaciones lineales: x y z 1,

Más detalles

Programación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM

Programación Web Tema 3.2 Java Script Estructura del Lenguaje. Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Programación Web Tema 3.2 Java Script Estructura del Lenguaje Miguel Ángel Manso Emerson Castañeda Ramón Alcarria ETSI en Topografía, Geodesia y Cartografía - UPM Contenido Variables Operadores Estructuras

Más detalles

Lógica: Algoritmo: Archivo: Base de datos: Bit:

Lógica: Algoritmo: Archivo: Base de datos: Bit: Lógica: Algoritmo: Archivo: Base de datos: Bit: 1 LÓGICA: Es una secuencia de operaciones realizadas por el hardware o por el software. Lógica del hardware, Son los circuitos y Chips que realizan las operaciones

Más detalles

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo.

NOTACIÓN O GRANDE. El análisis de algoritmos estima el consumo de recursos de un algoritmo. NOTACIÓN O GRANDE El análisis de algoritmos estima el consumo de recursos de un algoritmo. Esto nos permite comparar los costos relativos de dos o más algoritmos para resolver el mismo problema. El análisis

Más detalles

Práctica 1 Parte 2: Masa-Muelle y ODEs (Bloque OPCIONAL) (Asignación 19 de Febrero; Entrega 25 de Febrero a las 23:59)

Práctica 1 Parte 2: Masa-Muelle y ODEs (Bloque OPCIONAL) (Asignación 19 de Febrero; Entrega 25 de Febrero a las 23:59) Práctica 1 Parte 2: Masa-Muelle y ODEs (Bloque OPCIONAL) (Asignación 19 de Febrero; Entrega 25 de Febrero a las 23:59) Cómo entregar la práctica? Enviar una copia de los ficheros ExercisePoint.cpp y ExerciseSpring.cpp

Más detalles

Unidad II: Análisis semántico

Unidad II: Análisis semántico Unidad II: Análisis semántico Se compone de un conjunto de rutinas independientes, llamadas por los analizadores morfológico y sintáctico. El análisis semántico utiliza como entrada el árbol sintáctico

Más detalles

INSTITUTO SUPERIOR DE EDUCACION RURAL ISER FUNDAMENTOS DE PROGRAMACION

INSTITUTO SUPERIOR DE EDUCACION RURAL ISER FUNDAMENTOS DE PROGRAMACION INTRODUCCIÓN A LA PROGRAMACIÓN POR COMPUTADORA Muchos usuarios creen que la programación es simplemente teclear palabras en una computadora. Eso es una parte, pero de ninguna manera todo. La programación

Más detalles

4 MÉTODOS DIRECTOS PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES

4 MÉTODOS DIRECTOS PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES 57 4 MÉTODOS DIRECTOS PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES En este capítulo se estudia el componente algorítmico y computacional de los métodos directos para resolver sistemas de ecuaciones lineales.

Más detalles

Indexación y Asociación

Indexación y Asociación Bases de Datos Indexación y Asociación Contenidos Conceptos básicos Indices Ordenados Árboles B+ ArbolesB Asociación estática Bases de Datos Indexación y Asociación 2 Conceptos básicos Los Indices se utilizan

Más detalles

LECTURA No. 2: COMBINATORIA

LECTURA No. 2: COMBINATORIA LECTURA No. 2: COMBINATORIA En todo problema combinatorio hay varios conceptos claves que debemos distinguir: a) Población. Es el conjunto de elementos que se está estudiando. Denotaremos con m al número

Más detalles

Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la

Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la Es común al crear estructuras de datos y luego trabajar sobre las mismas, tener la necesidad de realizar búsquedas en forma más frecuente que la necesidad de realizar inserciones. Por ejemplo si tenemos

Más detalles

3. ÁLGEBRA LINEAL // 3.2. GEOMETRÍA

3. ÁLGEBRA LINEAL // 3.2. GEOMETRÍA 3. ÁLGEBRA LINEAL // 3.2. GEOMETRÍA ANALÍTICA EN EL PLANO Y EN EL ESPACIO. COMPLEMENTOS PARA LA FORMACIÓN DISCIPLINAR EN MATEMÁTICAS 3.2.1. Rectas en el plano y en el espacio La recta que pasa por el punto

Más detalles

EL4005 Principios de Comunicaciones Clase No.30: Códigos Lineales de Bloque

EL4005 Principios de Comunicaciones Clase No.30: Códigos Lineales de Bloque EL4005 Principios de Comunicaciones Clase No.30: Códigos Lineales de Bloque Patricio Parada Departamento de Ingeniería Eléctrica Universidad de Chile 26 de Noviembre de 2010 1 of 33 Contenidos de la Clase

Más detalles

Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas

Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por los profesores: Lourdes Miró Amarante Ignacio García Vargas Dpto. de ATC - Página 1 de 16 CONCEPTO DE ALGORITMO (1) Fundamentos de Informática E.U.P. Universidad de Sevilla Introducción a la Algorítmica Transparencias correspondientes a las clases impartidas por

Más detalles

CURSO BÁSICO DE MATEMÁTICAS PARA ESTUDIANTES DE ECONÓMICAS Y EMPRESARIALES

CURSO BÁSICO DE MATEMÁTICAS PARA ESTUDIANTES DE ECONÓMICAS Y EMPRESARIALES CONCEPTO MATRICES Se llama matriz de orden (dimensión) m n a un conjunto de m n elementos dispuestos en m filas y n columnas Se representa por A = a 11 a 12 a 1n a 21 a 22 a 2n a m1 a m2 a mn j=1,2,,n

Más detalles

Lección 8. Matrices y Sistemas de Ecuaciones Lineales

Lección 8. Matrices y Sistemas de Ecuaciones Lineales Lección 8 Matrices y Sistemas de Ecuaciones Lineales MIGUEL ANGEL UH ZAPATA 1 Análisis Numérico I Facultad de Matemáticas, UADY Septiembre 2014 1 Centro de Investigación en Matemáticas, Unidad Mérida En

Más detalles

ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA

ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA ALGORITMOS II PSEUDOCODIGOS INTRODUCCION AL PSEINT CORPODICES VICTOR ANDRES OCHOA CORREA CONTENIDOS Definición de un algoritmo Tipos de datos Representaciones de un algoritmo Lenguaje natural Pseudocódigo

Más detalles

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás

Programa de teoría. Algoritmos y Estructuras de Datos II. 3. Algoritmos voraces. 1. Análisis de algoritmos 2. Divide y vencerás Programa de teoría Algoritmos y Estructuras de Datos II 1. Análisis de algoritmos 2. Divide y vencerás 3. Algoritmos voraces 4. Programación dinámica 5. Backtracking 6. Ramificación y poda A.E.D. II 1

Más detalles

Arreglos. Juan Pablo Cobá Juárez Pegueros Algoritmos y Programación Básica Bioingeniería Médica Facultad de Medicina 2015

Arreglos. Juan Pablo Cobá Juárez Pegueros Algoritmos y Programación Básica Bioingeniería Médica Facultad de Medicina 2015 Arreglos Juan Pablo Cobá Juárez Pegueros Algoritmos y Programación Básica Bioingeniería Médica Facultad de Medicina 2015 Contenido Objetivo Qué son los Arreglos? Cómo son los Arreglos? Características

Más detalles