1 / 92

Programación Numérica

Programación Numérica. FGV. Repaso funciones y arreglos. Que es un modulo? Cuantos tipos de módulos existes? Como simula C los procedimientos Diferencia entre definir y declarar Los módulos de lenguaje C son inyectivos, biyectivos o sobreyectivos? Variables locales y globales.

chesmu
Download Presentation

Programación Numérica

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programación Numérica FGV

  2. Repaso funciones y arreglos • Que es un modulo? • Cuantos tipos de módulos existes? • Como simula C los procedimientos • Diferencia entre definir y declarar • Los módulos de lenguaje C son inyectivos, biyectivos o sobreyectivos? • Variables locales y globales. • Definición de: • Función (Tarea Obtener xy sin pow) • Parámetro • Iteración • Arreglo • Como obtener 500 decimales con lenguaje C

  3. Repaso • Ordenar el siguiente arreglo • 100,5,30,55,70,300,20 • Dibujar el Triángulo de Pascal • Hacer una función que obtenga el Máx. Común Divisor

  4. Recursión • Es una herramienta matemática-computacional que permite solucionar problemas utilizando su propia definición, es decir es una solución en términos de ella misma. • La recursión es equivalente a la iteración, la diferencia radica en la filosofía de trabajo y en el manejo de recursos, cuando se implanta computacionalmente (tiempo y espacio en bytes) • Uno de los usos es la de descomponer un problema en problemas más pequeños, como el método de ordenamiento Quicksort

  5. Recursión Todo lo recursivo se puede hacer iterativo y viceversa. Existen problemas cuya solución recursiva es mas práctica que la iterativa ya que la complejidad del problema nos llevaría muchas líneas de código y al contrario, existen procesos que no vale la pena el esfuerzo de convertirlo a recursivo cuando la solución iterativa es lo más recomendable.

  6. Recursión • El concepto de Función Recursiva fue introducido por Kleene el año 1936. • Son una clase de funciones numérico-teóricas (se llaman así las funciones f(N) : N f(N)n ) que pueden ser evaluadas algorítmicamente. • Se pueden evaluar en tiempo, espacio y complejidad • Ejemplo de complejidad con un método de ordenación • Tarea Investigar O grande y o asintótica

  7. Recursión • Las recursiones se pueden clasificar por • Su forma de estar construidas para solucionar algo en: • Recursión simple ó Múltiple • Su forma de solucionar el problema en : • Recursión hacia de adelante ó Hacia atrás Backtracking • Las combinaciones de estas clasificaciones son 5, debido a que la recursión múltiple puede darse con las dos categorías. • Ejemplos: Factorial, Fibonacci, árboles binarios

  8. Recursión • Los elementos básicos de la definición de una función recursiva son: • Una base (equivalente a axiomas o condiciones límite) que establece que ciertos números son, por definición, valores de la función para argumentos dados. • Una regla de construcción recursiva que nos dice como determinar otros valores de la función a partir de valores conocidos. • Una afirmación de que la función sólo toma aquellos valores que resultan por aplicación, un número finito de veces, de la regla de construcción recursiva sobre los valores de la función básica.

  9. Recursión FRP • Debido a que las funciones recursivas originales, fueron hechas para representar problemas básicos de las matemáticas se crearon funciones que representaban dichos procesos a éstas se les llamo “Funciones Primitivas Recursivas”. • Toda función que se base en FPR se considera de la misma clase.

  10. Recursión FRP Tomaremos como conjunto base, tres funciones que por definición decimos que son recursivas primitivas (y de ellas se pueden derivar otras): 1) Función Cero “z” : z(x) = 0 2) Función Sucesor “s” : s(0) = 1, s(1) = 2 ... 3) Funciones Identidad id11(x) = x id21 (x,y) = x, id22 (x,y) = y, id31 (x,y,z) = x, id32 (x,y,z) = y, id33 (x,y,z) = z

  11. Recursión FRP • En algunos casos en las FPR se utilizan subindices para indicar cuales argumentos o parámetros se utilizaran, ej: • S3(x,y-1,fh(x,y-1)) = fh(x,y-1)+1 • Suma2,4(x,y,z,fg(x+1,y)) = y+fg(x+1,y)

  12. Recursión • Ejemplos de funciones recursivas primitivas • Problema encontrar la forma recursiva de: suma(n1, n2) = n1 + n2 • Idea Básica • suma(n1, 0) = n1 • suma(n1, n2) = suma(n1, n2-1) + 1 • Expresada en Notación de FRP • suma(n1, 0) = 11(n1) = n1 • suma(n1, n2) = sucesor3(n1, n2-1, suma(n1, n2-1))

  13. Recursión • Problema encontrar la forma recursiva de: producto(n1, n2) = n1*n2 • producto(n1, 0) = 0 • producto(n1, n2) = n1+prod(n1,(n2 – 1)) • Expresado en Términos de FRP • producto(n1, 0) = Z(n1) = 0 • producto(n1, n2) = suma1,3(n1, n2 – 1, producto(n1, n2 –1))

  14. FPR • Potencia • Pot(x,y)=x*pot(x,y-1) • Pot(x,0)=1

  15. La recursión desde el punto de vista de C • Como se crean funciones (tamaños y tipos de datos. • Se puedo aproximar el numero de veces que una Recursión se va ha realizar. • El Stack (over flow y underflow) • Esqueleto de una función • Funciones Vacías • Ejercicios • Imprimir números del 1 al 10 • Hacia delante • Hacia atrás

  16. Que procesos hace la recursión en la computadora • Bajo una llamada recursiva el sistema reserva espacio (tabla de activación, también llamada Stack o Pila) donde almacenar una copia de los objetos locales y parámetros del subprograma en ese momento (variables locales, parámetros y la dirección de reingreso). • La tabla de activación se amontona sobre las llamadas recursivas anteriores formando lo que se conoce como pila recursiva. • Este proceso termina cuando un nuevo valor del parámetro no produce una nueva llamada recursiva (se alcanza el caso base). • Una vez alcanzada esta situación el sistema va liberando el espacio reservado conforme los subprogramas se van ejecutando sobre su tabla de activación. • Este proceso finaliza con la llamada inicial.

  17. Como Funciona la memoria de la computadora

  18. Función que busca un dato en un arreglo (tarea modificarlo para que busque en un arreglo bidimensional) • Función que imprime una cadena al revés (ejemplo de cuando no usar la recursión)

  19. Procesos recursivos e iterativos x=0 0; x=1 1 • Fibonacci(X) x>2 fibonacci(x-1) + fibonacci(x-2) int fbI(int z) { int R,i,a,b; R=1; a=0; b=1; i=1; while(i<z) { R=a+b; a=b; b=R; i++ } } int fbR(int z) { if (z==0) return 0; else if (z==1) return 1; else return fbR(z-1)+fbR(z-2); }

  20. Números de catalán Uso de los números de Catalán. El juego de la vida problemas poblacionales

  21. Número Aureo

  22. Particiones y combinatorias • Como obtener las combinatorias de un conjunto de términos o de un conjunto • Búsqueda en profundidad y anchura

  23. Particiones de números • Dado un número natural n llamamos “particiones de n” a todas las maneras de escribir n como suma de números naturales. Por ejemplo: hay 11 particiones del número 6: • 1+1+1+1+1+1 2+1+1+1+1 • 2+2+1+1 2+2+2 • 3+1+1+1 3+2+1 • 3+3 4+1+1 • 4+2 5+1 • 6 • Diversos matemáticos han propuesto teorías de cómo calcular el numero de formas de partir un número en sumas, el más conocido de ellos fue Leonard Euler quien expuso una serie de conjeturas al respecto

  24. Particiones de números • De las teorías de Euler se desprende que la suma de valores anteriores de la serie de números nos establece el numero de particiones de un numero. • Por ejemplo si p(n) representa el numero de particiones de un numero “n” es decir p(n) son el total de formas distintas de obtener “n”, haciendo sumas temenos que: • p(4)= p(3)+p(2) • p(6)= p(5)+p(4)-p(1) • P(5)=p(4)+p(3)-p(1) • p(9)=p(8)+p(7)-p(4)-p(2)

  25. Particiones de números • Estos valores provienen de la formula matemática • En donde el limite ó paro de la sumatoria esta dado por el hecho de que la resta de n con el término debe de ser positivo o cero, y conocemos que p(0)=1; • Dos problemas

  26. Particiones de números • Como se representaría de forma 100% recursiva esta formula? • Como se pueden obtener las combinaciones en si?, es decir todas las sumas? • Planteando el problema desde otro punto de vista: tenemos a un conjunto formado por números del 1 hasta n, que combinación con repetición podemos hacer de ese conjunto de elementos de tal suerte que la suma de los elementos de cada combinación sumen n. 1,2,3, 4,5,6 Conjunto de elementos para n=6, el problema de esto es la cantidad de combinaciones a evaluar, 46656 combinaciones.

  27. Particiones de conjuntos • Una partición de un conjunto X es una colección • {A1,A2, . . . ,An} de subconjuntos de X, no vacíos y disjuntos • dos a dos, tales que A1 U A2 U .. . U An = X. • A cada uno de los conjuntos Ai se le llama bloque de la partición. • Las particiones del conjunto {a, b, c} son: • {a, b, c} (un solo bloque), • {a, b}, {c} (2 bloques), • {a, c}, {b} (2 bloques), • {b, c}, {a} (2 bloques), • {a}, {b}, {c} (3 bloques).

  28. Particiones de conjuntos • Para un conjunto de 3 elementos tenemos 5 formas diferentes de partir el conjunto. • El número total de particiones que admite un conjunto de n elementos se denomina número de Bell de orden n y se denota Bn. • Se sabe que Los primeros números de Bell son • B0 = 1, B1 = 1, B2 = 2 B3 = 5. • SE puede obtener el numero de particiones de un conjunto a partir de la siguiente formula

  29. Coeficientes Binomiales • Los coeficientes binomiales, que son los coeficientes enteros de la expansión de (a+b)n fueron conocidos en el siglo XII. El triángulo de Pascal que es un arreglo triangular de los coeficientes binomiales fue desarrollado en el siglo XIII. • En donde cada entrada de la tabla es la suma de los dos números que están inmediatamente encima de ella

  30. Particiones de conjuntos • Por otra parte, el número de particiones que admite un conjunto de n elementos con exactamente k bloques se denomina número de Stirling de segunda clase con índices n y k y se denota mediante el símbolo • Cuya relación de recurrencia es la siguiente :

  31. Torres de Hanoi • El problema consiste en mover n discos (todos ellos de diferente tamaño) de un poste a otro siguiendo las reglas • Solo se puede mover un disco a la vez • Un disco grande no puede quedar encima de otro de menor tamaño

  32. Torres de Hanoi Posibilidades de 4 discos

  33. Torres de Hanoi • Solución: No seguir un proceso ordenado podría llevarnos a un camino cerrado o a un serie de pasos redundantes. • Realmente la solución viene dada por el hecho de solucionar un problema previo, es decir antes de mover el último disco necesitamos mover todos los de arriba de él a otro poste.

  34. Torres de Hanoi • Solución 1- Mover n-1 discos de A a B 2- Mover 1 disco de A a C 3- Mover n-1 discos de B a C

  35. Torres de Hanoi void Hanoi( n, inicial, aux, final ) { if ( n>0 ) { Hanoi(n-1, inicial, final, aux ); printf("Mover %d de %c a %c", n, inicial, final ); Hanoi(n-1, aux, inicial, final ); } }

  36. Josephus Problem • Cuenta una leyenda sobre el historiador Josephus Flavius que, durante las guerras judeo-romanas, él y otros 40 soldados judíos quedaron atrapados en una cueva rodeados por los romanos.  Visto que tenían pocas posibilidades de salir con vida, decidieron suicidarse. Josephus y un amigo suyo no estaban muy felices con esa idea. Así pues, propusieron que si había que hacerlo, se hiciera con cierto orden: se colocarían en círculo y se irían suicidando por turno cada tres empezando a contar por uno determinado. • Josephus y su amigo se colocaron de tal forma que fueron los dos últimos y así, como ya nadie les podía llevar la contraria, decidieron seguir viviendo.

  37. Fractales • Un fractal es un objeto semi geométrico cuya estructura básica se repite a diferentes escalas. • El término fue propuesto por el matemático Benoît Mandelbrot en 1975 y deriva del Latín fractus, que significa quebrado o fracturado. Los fractales pueden ser generados por un proceso recursivo o iterativo, capaz de producir estructuras auto-similares a cualquier escala de observación. Los fractales son estructuras geométricas irregulares y de detalle infinito. Muchas estructuras naturales son de tipo fractal.

  38. Fractales LA CONSTRUCCIÓN de un fractal, esta la posibilidad de utilizarlo para producir, almacenar, analizar o transmitir una imagen se simplifica considerablemente haciendo uso de la computadora. De hecho, el efecto y la utilidad que ha demostrado tener la geometría fractal no se hubieran manifestado sin las facilidades de cálculo y representación gráfica que proporciona el trabajo en computadora; parecen estar hechos el uno para el otro. Los fractales se generan a través de procesos en los que una misma operación se repite un sin número de veces, y eso es precisamente lo que una computadora sabe hacer mejor.

  39. Tipos de fractales Algoritmos de escape, Malderbrot y Julia IFS, sistemas de funciones iteradas Lindermayer y Sierpinsky Orbitas Caóticas Aleatorios y Celulares

  40. Fractales La mayoría de los métodos desarrollados para construir imágenes fractales se basan en procedimientos muy sencillos que en cualquier lenguaje computacional se expresan en unos cuantos renglones; de ahí la sorpresa que provoca observar la complejidad de la imagen que hacen surgir en la pantalla.

  41. Fractales Los fractales más simples de crear se basan en las teorías de Lindermayer y Sierpinski, normalmente son procesos recursivos o iterativos que van creando una estructura simétrica basa en procesos pendientes. Dentro de este grupo de fractales se encuentran los de Niels Helge von Koch y David Hillbert, el primero para la simulación de copos de nieves y el segundo para la creación de semilaberintos.

  42. Fractales • Que se necesita para hacer un fractal de éste tipo? • Un proceso recursivo o iterativo • Un determinado numero de repeticiones que permitan ver el efecto, con un paro determinado por las condiciones del problema • Un número de ramificaciones dentro del proceso que permita representar mejor el problema que se plantea

  43. 1.2.8 Solución Ec. No Lineales Raíces de ecuaciones • Sea f(x)=y. Los valores de x que hacen que y=0 se denominan raíces de la ecuación.

  44. 1.2.8 Solución Ec. No Lineales Raíces de ecuaciones • Las raíces de un polinomio pueden ser reales o complejas. • Si un polinomio tiene coeficientes a0, a1, a2, a3, .. an-1, an reales, entonces todas las raíces complejas siempre ocurrirán en pares conjugados complejos. Por ejemplo, un polinomio cúbico tiene la siguiente forma general: • El teorema fundamental del álgebra indica que un polinomio de grado n, tiene n raíces. En el caso del polinomio cúbico pueden darse los siguientes casos: • Tres raíces reales distintas. • Una raíz real con multiplicidad 3. • Una raíz real simple y una raíz real con multiplicidad 2. • Una raíz real y un par conjugado complejo.

  45. 1.2.8 Solución Ec. No Lineales Raíces de ecuaciones Ejemplo1 3 Raíces reales diferentes f(x)= x3-3x2-x+3 (x-3)(x+1)(x-1) x1=3, x2=-1, x3=1

  46. 1.2.8 Solución Ec. No Lineales Raíces de ecuaciones Ejemplo 2 1 Raíz real simple y 1 raíz Real con multiplicidad 2 f(x)= x3-12x+16 (x-4)(x-2)2 x1=4, x2=2, x3=2

  47. 1.2.8 Solución Ec. No Lineales Raíces de ecuaciones Ejemplo 3 1 Raíz real simple y 1 par conjugado complejo f(x)= x3-2x2-3x+10 (x+2)(x-(2+i)) (x-(2-i)) x1=-2, x2=2+i, x3=2-i Tarea investigar cuales son las Ecuaciones trascendentales.

  48. 1.2.8 Solución Ec. No Lineales Raíces reales de ecuaciones algebraicasy trascendentales • En general, los métodos para encontrar las raíces reales de ecuaciones algebraicas y trascendentales se dividen en métodos de intervalos y en métodos abiertos.

  49. 1.2.8 Solución Ec. No Lineales Raíces reales de ecuaciones algebraicasy trascendentales • Los métodos de intervalos aprovechan el hecho de que una función en forma típica cambia de signo en la vecindad de una raíz. Reciben dicho nombre debido a que se necesita de dos valores iniciales que deben “encapsular” a la raíz. A través de este tipo de métodos se va reduciendo gradualmente el tamaño del intervalo de manera que la aplicación repetida de los métodos siempre generan aproximaciones cada vez más cercanas al valor real de la raíz, por lo que se dice que son métodos convergentes.

  50. 1.2.8 Solución Ec. No Lineales Raíces reales de ecuaciones algebraicasy trascendentales • Los métodos abiertos, en contraparte, se basan en fórmulas que requieren de un solo valor inicial x  (aproximación inicial a la raíz). Algunas veces, estos métodos se alejan del valor real de la raíz conforme crece el número de iteraciones, es decir, divergen .

More Related