Instituto Tecnológico de Costa Rica Ingenierı́a en Computadores Nombre:Andrey Sibaja Garro CE-3102: Análisis Numéricos para Ingenierı́a Semestre: II - 2019 Carnet: 2017101898 Catálogo del Curso 1 1.1 1.1.1 Solución de Ecuaciones No Lineales Método de la Bisección Fórmula Matemática xk = 1.1.2 a+b 2 (1) Descripción breve del método Para utilizar este método se hace el uso de un teorema llamado: ”Teorema del Bolzano”, el cual nos asegura la existencia de al menos un cero en un cierto intervalo [a, b], esto si se cumple la siguiente inecuación: f (a) ∗ f (b) 6 0 (2) Los valores iniciales del método son los proporcionados por el intervalo [a,b]. Su orden de convergencia es lineal, es decir, q = 1. Ventajas: este siempre converge y se puede utilizar su aproximación como valor inicial para otros métodos. Desventajas: al utilizar el teorema del bolzano solo toma en cuenta el signo y hace una aproximación intermedia, en el peor de los casos la aproximación podrı́a ser uno de los valores iniciales y harı́a que este haga varias recursiones, haciendo que sea poco eficiente 1.1.3 Pseudocódigo del método Entradas: a, b, tol, funcion. Salidas: [valorX, iteraciones] Donde: a = lı́mite mı́nimo del intervalo. b = lı́mite máximo del intervalo. tol = tolerancia aceptada. funcion = función para realizar la aproximación. valorX = aproximación final de ”X” con la tolerancia dada. iteraciones = cantidad de iteraciones hechas para llegar a la solución. 1 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: if f (a) ∗ f (b) 6 0 then xk = (a + b)/2 while abs(xk) 6 tol do if (f (a) ∗ f (xk) 6 0) then b = xk else a = xk end if iteraciones ++ end while return[xk, iteraciones] else No se puede garantizar un cero en el intervalo end if 2 1.1.4 Código OCTAVE del Método 3 1.1.5 1.2 1.2.1 Código Python del Método Método de Newton-Raphson Fórmula Matemática xk+1 = xk − 1.2.2 f (xk ) f 0 (xk ) (3) Descripción breve del método Este método es de los más utilizados y más efectivos, no necesita ningún intervalo si no que se basa en procesos iterativos con un solo valor inicial. Utiliza la recta tangente a f(x) en un punto (xn , f (xn )) y toma como una siguiente aproximación (xn+1 ) la intersección con el eje ”x” de la tangente calculada. El valor xn+1 se calcula mediante (3). La estructura de este método, al necesitar una sola iteración se le llama ”método sin uso de memoria”, ya que este solo usa el valor calculado en esa iteración. Su orden de convergencia es cuadrático, es decir, q = 2. Entre sus ventajas tenemos que es un método certero en la identificación y resolución de ecuaciones y ecuaciones lineales y da muy buenas aproximaciones, sin embargo, una de sus desventajas en lo lento que es para converger y además de esto se necesita el cálculo de la derivada de la función original. 4 1.2.3 Pseudocódigo del método Entradas: xk , tol, funcion. Salidas: [valorX, iteraciones] Donde: xk = valor inicial. tol = tolerancia aceptada. funcion = función para realizar la aproximación. valorX = aproximación final de ”X” con la tolerancia dada. iteraciones = cantidad de iteraciones hechas para llegar a la solución. 1: 2: 3: 4: 5: 6: 7: 8: 9: Se calcula la derivada de la función. if derivada == 0 then Error. Derivada no puede ser cero end if while abs(xk ) 6 tol do xk+1 = xk - f (xk )/f 0 (xk ) iteraciones ++ end while return[xk, iteraciones] 5 1.2.4 Código OCTAVE del Método 6 1.2.5 1.3 1.3.1 Código Python del Método Método de la Secante Fórmula Matemática xk+1 = xk − 1.3.2 f (xk ) − (xk − xk−1 ) f (xk ) − f (xk−1 ) (4) Descripción breve del método El método de Newton-Raphson visto anteriormente tiene como restricción el cálculo de la derivada, el método de la secante busca eliminar esto, sabiendo la definición de la derivada y sustituyendo en la ecuación (3) se obtiene la ecuación (4). La estructura de este método, al necesitar más de una iteración se le llama ”método con uso de memoria”, ya que este usa √ el valor calculado anteriormente. Su orden de convergencia si f es p veces diferenciable es 7 1+ 1+4(p−1) . 2 La ventaja de este método es que se puede aplicar a funciones más complejas ya que no requieren el cálculo de una derivada, además para sistemas informáticos es más eficiente que Newton-Raphson por la misma razón, ya que solo se hacen cálculos algebraicos. Su desventaja es que es de los métodos que poseen una menor aproximación al valor de X y si posee varios valores no asegura encontrar uno. 1.3.3 Pseudocódigo del método Entradas: xo , xk , tol, funcion. Salidas: [valorX, iteraciones] Donde: xk = valor inicial. tol = tolerancia aceptada. funcion = función para realizar la aproximación. valorX = aproximación final de ”X” con la tolerancia dada. iteraciones = cantidad de iteraciones hechas para llegar a la solución. 1: 2: 3: 4: 5: 6: 7: 8: k −xo ) xnuevo = xk − ff(x(xk k)∗(x )−f (xo ) while f (xnuevo ) 6 tol do temp = xnuevo )∗(xnuevo −xk ) xnuevo = xn uevo − f (xfnuevo (xnuevo )−f (xk ) xk = temp iteraciones + + end while return[xnuevo , iteraciones] 8 1.3.4 Código OCTAVE del Método 9 1.3.5 1.4 1.4.1 Código Python del Método Método de Falsa Posición Fórmula Matemática xk+1 = xk − xk − C k ∗ f (xk ) f (xk ) − f (Ck ) (5) Donde: Ck es ak si se selecciona el intervalo [ak , xk ] o bk si se selecciona el intervalo [xk , bk ]. 1.4.2 Descripción breve del método Este método consiste en una combinación entre los métodos de la bisección y el de la secante. Este método mediante dos valores iniciales, como intervalo [a, b], se traza una linea tangente a las imágenes de estos dos (f(a) y f(b)) y su intersección con el eje es el nuevo valor para el intervalo, se escoge un dependiendo 10 de los casos expuestos en la ecuación (5). Utiliza del método de la bisección el teorema del bolzano para saber que intervalo escoger y del método de la secante se realiza la aproximación al siguiente valor de x. Su orden de convergencia si φ0 () = m 6= 0 es lineal y si φ = 0 y φ00 () = m 6= 0 entonces es cuadrática (q = 2). Una de sus ventajas es que al buscar un nuevo valor de x esta estará más cerca de la aproximación que con el caso de la bisección que este divide el intervalo en mitades. Su principal desventaja es que este converje muy lentamente hacia la solución. 1.4.3 Pseudocódigo del método Entradas: a, b, tol, funcion. Salidas: [valorX, iteraciones] Donde: a = valor inicial del intervalo. b = valor final del intervalo. tol = tolerancia aceptada. funcion = función para realizar la aproximación. valorX = aproximación final de ”X” con la tolerancia dada. iteraciones = cantidad de iteraciones hechas para llegar a la solución. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: if f (a) ∗ f (b) 6 0 then (b−a) ∗ f (b) xnuevo = b − f (b)−f (a) while abs(xnuevo ) 6 tol do if (f (a) ∗ f (xk) 6 0) then b = xnuevo else a = xnuevo end if (b−a) ∗ f (b) xnuevo = b − f (b)−f (a) iteraciones + +s end while end if 11 1.4.4 Código OCTAVE del Método 12 1.4.5 Código Python del Método 13 2 Métodos Iterativos para Optimización 3 Sistemas de Ecuaciones Lineales: Métodos Directos 4 Sistemas de Ecuaciones Lineales: Métodos Iterativos 5 Interpolación 6 Regresión Numérica 7 Diferenciación Numérica 8 Integración Numérica 9 Ecuaciones Diferenciales Numéricas 10 Método Iterativos para Calcular Valores Propios 14