UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERÍA Y ARQUITECTURA ESCUELA DE INGENIERÍA ELÉCTRICA ANÁLISIS NUMÉRICOS CICLO I-2013 Tema: Tarea final de Análisis Numérico Ciclo I - 2013 Catedrático: Ing. Wilber Calderón Alumnos: Fuentes Chicas Héctor Mauricio FC11023 Vásquez López Néstor Gabriel VL10008 Herrera Ruiz Nilson Eduardo HR11046 Ciudad Universitaria, 26 de junio de 2013
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE INGENIERÍA Y ARQUITECTURA
ESCUELA DE INGENIERÍA ELÉCTRICA
ANÁLISIS NUMÉRICOS
CICLO I-2013
Tema: Tarea final de Análisis Numérico Ciclo I - 2013
Catedrático:
Ing. Wilber Calderón
Alumnos:
Fuentes Chicas Héctor Mauricio FC11023
Vásquez López Néstor Gabriel VL10008
Herrera Ruiz Nilson Eduardo HR11046
Ciudad Universitaria, 26 de junio de 2013
2
INDICE
Contenido Pág.
Introducción…..…………………………………………………….......3
Objetivos…….…………………………………………………………4
Marco Teórico…....…………………………………………………….5
Descripción de los Métodos para Ecuaciones Diferenciales……...........9
Diseño de Interfaz Gráfica de Usuario…………………………………14
Conclusiones……………………………………………………………22
Bibliografía………………………………………………………..........23
3
INTRODUCCION
En nuestro vivir diario nos enfrentamos con la realización de tareas bastantes tediosas,
difíciles y muchas veces hasta casi interminables, en ocasiones fracasamos por nuestra falta
de concentración y dedicación, es por ello que se crearon e idearon algoritmos que nos
facilitan dichas tareas, como ejemplo tenemos: Las Tablas de Contabilidad, en ellas se
llevan a cabo diferentes tareas, sencillas pero tediosas, hoy en día se facilitan muchos de
esos cálculos gracias a algoritmos informáticos tales como las hojas de cálculo en Excel.
En nuestro caso como estudiantes de ingeniería se nos presentan labores tan sencillas pero a
la vez extensas, de ahí la importancia de conocer o familiarizarnos con métodos que nos
faciliten desde realizar una serie de sumas, hasta la resolución de ecuaciones diferenciales.
Es aquí donde nos concentraremos en analizar dichos métodos sin antes dar una antesala a
los “Métodos Numéricos para Ingenieros”.
Los cuáles serán nuestro centro de estudio, pero en especial para la resolución de
Ecuaciones Diferenciales Ordinarias.
En el reporte mostrado a continuación se presenta el desarrollo de una interfaz de usuario
desarrollada en lenguaje Python y funciones en Octave para aplicar los métodos numéricos
para resolver ecuaciones diferenciales utilizando los Métodos de Heun, Euler y Runge
Kutta de Orden 4 más adelante mostraremos en que consiste cada método para resolver las
ecuaciones diferenciales.
4
OBJETIVOS
Objetivo General:
“Profundizar en el estudio de los métodos numéricos para resolver ecuaciones
diferenciales y facilitar los cálculos matemáticos ah realizar”
Objetivos Específicos:
Aplicar los métodos numéricos para Resolver Ecuaciones Diferenciales.
Desarrollar y manejar funciones en lenguaje de programación tales como Octave
para los métodos numéricos planteados.
Desarrollar una interfaz de usuario para poder ejecutar las funciones numéricas y
poder facilitar el proceso de resolver ecuaciones diferenciales.
5
Métodos Numéricos
El análisis numérico o cálculo numérico es la rama de las matemáticas que se encarga de
diseñar algoritmos para, a través de números y reglas matemáticas simples, simular
procesos matemáticos más complejos aplicados a procesos del mundo real.
El análisis numérico cobra especial importancia con la llegada de los ordenadores. Los
ordenadores son útiles para cálculos matemáticos extremadamente complejos, pero en
última instancia operan con números binarios y operaciones matemáticas simples.
Desde este punto de vista, el análisis numérico proporcionará todo el andamiaje necesario
para llevar a cabo todos aquellos procedimientos matemáticos susceptibles de expresarse
algorítmicamente, basándose en algoritmos que permitan su simulación o cálculo en
procesos más sencillos empleando números.
Definido el error, junto con el error admisible, pasamos al concepto de estabilidad de los
algoritmos. Muchas de las operaciones matemáticas pueden llevarse adelante a través de la
generación de una serie de números que a su vez alimentan de nuevo el algoritmo. Esto
proporciona un poder de cálculo y refinamiento importantísimo a la máquina que a medida
que va completando un ciclo va llegando a la solución. El problema ocurre en determinar
hasta cuándo deberá continuar con el ciclo, o si nos estamos alejando de la solución del
problema.
Finalmente, otro concepto paralelo al análisis numérico es el de la representación, tanto de
los números como de otros conceptos matemáticos como los vectores, polinomios, etc. Por
ejemplo, para la representación en ordenadores de números reales, se emplea el concepto de
coma flotante que dista mucho del empleado por la matemática convencional.
En general, estos métodos se aplican cuando se necesita un valor numérico como solución a
un problema matemático, y los procedimientos "exactos" o "analíticos" (manipulaciones
algebraicas, teoría de ecuaciones diferenciales, métodos de integración, etc.) son incapaces
de dar una respuesta. Debido a ello, son procedimientos de uso frecuente por físicos e
ingenieros, y cuyo desarrollo se ha visto favorecido por la necesidad de éstos de obtener
soluciones, aunque la precisión no sea completa. Debe recordarse que la física
experimental, por ejemplo, nunca arroja valores exactos sino intervalos que engloban la
gran mayoría de resultados experimentales obtenidos, ya que no es habitual que dos
medidas del mismo fenómeno arrojen valores exactamente iguales.
Los problemas de esta disciplina se pueden dividir en dos grupos fundamentales:
• Problemas de dimensión finita: aquellos cuya respuesta son un conjunto finito de
números, como las ecuaciones algebraicas, los determinantes, los problemas de
valores propios, etc.
• Problemas de dimensión infinita: problemas en cuya solución o planteamiento
intervienen elementos descritos por una cantidad infinita de números, como
integración y derivación numéricas, cálculo de ecuaciones diferenciales,
interpolación, etc.
6
Asimismo, existe una subclasificación de estos dos grandes apartados en tres categorías de
problemas, atendiendo a su naturaleza o motivación para el empleo del cálculo numérico:
1) Problemas de tal complejidad que no poseen solución analítica.
2) Problemas en los cuales existe una solución analítica, pero ésta, por complejidad u
otros motivos, no puede explotarse de forma sencilla en la práctica.
3) Problemas para los cuales existen métodos sencillos pero que, para elementos que se
emplean en la práctica, requieren una cantidad de cálculos excesiva; mayor que la
necesaria para un método numérico.
El análisis numérico se divide en diferentes disciplinas de acuerdo con el
problema que resolver.
Cálculo de los valores de una función
Uno de los problemas más sencillos es la evaluación de una función en un punto dado. Para
polinomios, uno de los métodos más utilizados es el algoritmo de Horner, ya que reduce el
número de operaciones a realizar. En general, es importante estimar y controlar los errores
de redondeo que se producen por el uso de la aritmética de punto flotante.
La extrapolación es muy similar a la interpolación, excepto que ahora queremos encontrar
el valor de la función desconocida en un punto que no está comprendido entre los puntos
dados.
La regresión es también similar, pero tiene en cuenta que los datos son imprecisos. Dados
algunos puntos, y una medida del valor de la función en los mismos (con un error debido a
la medición), queremos determinar la función desconocida. El método de los mínimos
cuadrados es una forma popular de conseguirlo.
Resolución de ecuaciones y sistemas de ecuaciones
Otro problema fundamental es calcular la solución de una ecuación o sistema de ecuaciones
dado. Se distinguen dos casos dependiendo de si la ecuación o sistema de ecuaciones es o
no lineal.
Mucho esfuerzo se ha puesto en el desarrollo de métodos para la resolución de sistemas de
ecuaciones lineales. Métodos directos, i.e., métodos que utilizan alguna factorización de la
matriz son el método de eliminación de Gauss, la descomposición LU, la descomposición
de Cholesky para matrices simétricas (o hermíticas) definidas positivas, y la
descomposición QR. Métodos iterativos como el método de Jacobi, el método de Gauss-
Seidel, el método de las aproximaciones sucesivas y el método del gradiente conjugado se
utilizan frecuentemente para grandes sistemas.
En la resolución numérica de ecuaciones no lineales algunos de los métodos más conocidos
son los métodos de bisección, de la secante y de la falsa posición. Si la función es además
derivable y la derivada se conoce, el método de Newton es muy utilizado. Este método es
un método de iteración de punto fijo. La linealización es otra técnica para resolver
ecuaciones no lineales.
7
Las ecuaciones algebraicas polinomiales poseen una gran cantidad de métodos numéricos
para enumerar:
• Método de Gräeffe (o método de Lobachevsky o de Lobachevsky-Dandelin-Gräeffe
o del cuadrado de las raíces)
• Método de Laguerre
• Método de Bairstow (o método de Lin-Bairstow)
• Método de Bernoulli
• Método de Horner
• Método de Householder
• Método de Newton-Raphson especializado para polinomios
• Método de Richmond especializado para polinomios
• Método modificado de Richmond
• Método de Newton-Horner
• Método de Richomnd-Horner
• Método de Birge-Biète
• Método de Jenkins-Traub
Descomposición espectral y en valores singulares
Bastantes problemas importantes pueden ser expresados en términos de descomposición
espectral (el cálculo de los vectores y valores propios de una matriz) o de descomposición
en valores singulares. Por ejemplo, el análisis de componentes principales utiliza la
descomposición en vectores y valores propios.
Optimización
Los problemas de optimización buscan el punto para el cual una función dada alcanza su
máximo o mínimo. A menudo, el punto también satisface cierta restricción.
Ejemplos de ,problemas de optimización son la programación lineal en que tanto la función
objetivo como las restricciones son lineales. Un método famoso de programación lineal es
el método simplex.
El método de los multiplicadores de Lagrange puede usarse para reducir los problemas de
optimización con restricciones a problemas sin restricciones.
Evaluación de integrales
La integración numérica, también conocida como cuadratura numérica, busca calcular el
valor de una integral definida. Métodos populares utilizan alguna de las fórmulas de
Newton–Cotes (como la regla del rectángulo o la regla de Simpson) o de cuadratura
gaussiana. Estos métodos se basan en una estrategia de "divide y vencerás", dividiendo el
intervalo de integración en subintervalos y calculando la integral como la suma de las
integrales en cada subintervalo, pudiéndose mejorar posteriormente el valor de la integral
obtenido mediante el método de Romberg. Para el cálculo de integrales múltiples estos
métodos requieren demasiado esfuerzo computacional, siendo útil el método de Monte
Carlo.
8
Ecuaciones diferenciales
El análisis numérico también puede calcular soluciones aproximadas de ecuaciones
diferenciales, bien ecuaciones diferenciales ordinarias, bien ecuaciones en derivadas
parciales. Los métodos utilizados suelen basarse en discretizar la ecuación correspondiente.
Es útil ver la derivación numérica.
Para la resolución de ecuaciones diferenciales ordinarias los métodos más utilizados son el
método de Euler y los métodos de Rugen-Kutta.
Las ecuaciones en derivadas parciales se resuelven primero discretizando la ecuación,
llevándola a un subespacio de dimensión finita. Esto puede hacerse mediante un método de
los elementos finitos.
9
Ecuaciones Diferenciales Ahora nos centraremos en presentar los métodos utilizados en clases, los cuales son:
Método de Euler
Método de Heun
Método de Rugen Kutta
Método de Euler
La idea del método de Euler es muy sencilla y está basada en el significado geométrico de
la derivada de una función en un punto dado.
Supongamos que tuviéramos la curva solución de la ecuación diferencial y trazamos la
recta tangente a la curva en el punto dado por la condición inicial.
Debido a que la recta tangente aproxima a la curva en valores cercanos al punto de
tangencia, podemos tomar el valor de la recta tangente en el punto como una
aproximación al valor deseado .
Así, calculemos la ecuación de la recta tangente a la curva solución de la ecuación
diferencial dada en el punto . De los cursos de Geometría Analítica, sabemos que
la ecuación de la recta es:
Donde m es la pendiente. En este caso, sabemos que la pendiente de la recta tangente se
calcula con la derivada:
10
Por lo tanto, la ecuación de la recta tangente es :
Ahora bien, suponemos que es un punto cercano a , y por lo tanto estará dado
como . De esta forma, tenemos la siguiente aproximación:
De aquí, tenemos nuestra fórmula de aproximación:
Esta aproximación puede ser suficientemente buena, si el valor de h es realmente pequeño,
digamos de una décima ó menos. Pero si el valor de h es más grande, entonces podemos
cometer mucho error al aplicar dicha fórmula. Una forma de reducir el error y obtener de
hecho un método iterativo, es dividir la distancia en n partes iguales
(procurando que estas partes sean de longitud suficientemente pequeña) y obtener entonces
la aproximación en n pasos, aplicando la fórmula anterior n veces de un paso a otro, con
la nueva h igual a .
En una gráfica, tenemos lo siguiente:
Ahora bien, sabemos que:
Para obtener únicamente hay que pensar que ahora el papel de lo toma el
punto , y por lo tanto, si sustituímos los datos adecuadamente, obtendremos que:
De aquí se ve claramente que la fórmula recursiva general, está dada por:
Esta es la conocida fórmula de Euler que se usa para aproximar el valor
de aplicándola sucesivamente desde hasta en pasos de longitud h.
11
Método de Heun
Una fuente fundamental del error en el método de Euler es que la derivada al inicio del
intervalo supuestamente se aplica a todo el intervalo. Para mejorar la estimación de la
pendiente se involucra la determinación de dos derivadas para el intervalo( una en el punto
de inicio y otra en el punto final). Las dos derivadas se promedian con el fin de obtener una
estimación mejorada de la pendiente para todo el intervalo.
Recuerde que para el método de Euler, la pendiente al inicio de un intervalo
iii yxfy ,'
se utiliza para interpolar linealmente a yn+1
hyxfyy nnnn ,*
1
Esta sería la estimación de yn+1 en el caso del método de Euler estándar. Sin embargo, en el
método de Euler modificado( o método de Heun), la *
1ny , calculada anteriormente no es la
repuesta final, sino una predicción intermedia. Es por esto que se la distingue con un
asterisco como superíndice. A la ecuación hyxfyy nnnn ,*
1 , se le denomina
ecuación predictor. Ahora, con *
1ny y xn+1=xn+h, se estima la pendiente al final del
intervalo ( xn, xn+1), como
*
11
'
1 , nnn yxfy
Así las dos pendientes se pueden combinar para obtener la pendiente promedio en el
intervalo.
2
,,
2
*
11
'
1
'
'
nnnnnn yxfyxfyy
y
Esta pendiente promedio es la que se utiliza para extrapolar linealmente desde yn hasta yn+1
usando el método de Euler:
h
yxfyxfyy nnnn
nn
2
,, *
11
1
La cual se conoce como ecuación corrector.
Por lo tanto, el método de Euler modificado o Método de Heun es un procedimiento
predictor–corrector.
Este método se podría resumir este método como la expresión:
h
yxfyxfyy nnnn
nn
2
,, *
11
1
En donde
hyxfyy nnnn ,*
1 .
12
Método de Rugen Kutta
La convergencia lenta del método de Euler y lo restringido de su región de estabilidad
absoluta nos lleva a considerar métodos de orden de convergencia mayor. En clase
mencionamos que en cada paso el método de Euler se mueve a lo largo de la tangente de
una cierta curva que esta "cerca" a la curva desconocida o buscada. Los métodos Runge-
Kutta extienden esta idea geométrica al utilizar varias derivadas o tangentes intermedias, en
lugar de solo una, para aproximar la función desconocida. Los métodos Runge-Kutta más
simples se obtienen usando dos de estas derivadas intermedias.
Métodos Runge-Kutta de dos Evaluaciones: Aqui buscamos métodos o fórmulas
numéricas de la forma:
Note que apesar de que en la fórmula se perciven tres f's, el método envuelve solo dos
evaluaciones ya que dos de estas f's tienen los mismos argumentos. La idea ahora es
determinar los parámetros de modo que el método tenga orden de convergencia
lo más alto posible. Un análisis del error local de esta fórmula basado en el Teorema de
Taylor muestra que el orden más alto que puede tener esta fórmula es dos y que esto puede
ocurrir si y solo si:
Es decir si cumplen con estas condiciones, entonces ej=y(tj)-yj=O(h2) para toda
j. Algunos casos especiales de estas fórmulas son:
1. Método de Heun: Aqui se toma de modo que el método reduce a:
Para propositos de hacer cálculos es mejor escribir esta fórmula como:
2. Método del Punto Medio: Aqui se toma de modo que el método reduce a:
13
Métodos Runge-Kutta de más de dos Evaluaciones: Aunque el método de Heun fué
bastante efectivo en el ejemplo anterior, nos interesa encontrar métodos de orden aún más
alto que no requieran h's muy pequeñas. Vimos aqui que un método Runge-Kutta de dos
evaluaciones intermedias genera un método de orden dos. Es razonable pensar que tres o
cuatro evaluaciones intermedias producen métodos Runge-Kutta de ordenes tres y cuatro
respectivamente. Este el caso pero ya para cinco evaluaciones no obtenemos
necesariamente métodos Runge-Kutta de orden cinco pero si con seis evaluaciones. Un
ejemplo de un método Runge-Kutta de orden cuatro de cuatro evaluaciones es el llamado
método Runge-Kutta clásico definido por las fórmulas:
14
Implementación de una Interfaz Gráfica de Usuario
Breve Descripción de los Lenguajes de Programación
GNU Octave
Octave o GNU Octave es un programa libre para realizar cálculos numéricos. Como indica
su nombre es parte de proyecto GNU. MATLAB es considerado su equivalente comercial.
Entre varias características que comparten se puede destacar que ambos ofrecen un
intérprete permitiendo ejecutar órdenes en modo interactivo. Nótese que Octave no es un
sistema de álgebra computacional como podría ser Maxima, sino que usa un lenguaje que
está orientado al análisis numérico.
El proyecto fue creado alrededor del año 1988 pero con una finalidad diferente: ser
utilizado en un curso de diseño de reactores químicos. Posteriormente en el año 1992, se
decide extenderlo y comienza su desarrollo a cargo de John W. Eaton.1 La primera versión
alpha fue lanzada el 4 de enero de 1993. Un año más tarde, el 17 de febrero de 1994
aparece la versión 1.0.
El nombre surge de Octave Levenspiel, profesor de unos de los autores conocido por sus
buenas aproximaciones por medio de cálculos mentales a problemas numéricos en
ingeniería química.
Detalles técnicos:
Octave está escrito en C++ usando la biblioteca STL.
Tiene un intérprete de su propio lenguaje (de sintaxis similar a Matlab), y
permite una ejecución interactiva o por lotes.
Puede extenderse el lenguaje con funciones y procedimientos por medio de
módulos dinámicos.
Utiliza otros programas GNU para ofrecer al usuario crear gráficos para luego
imprimirlos o guardarlos (Grace).
Dentro del lenguaje también se comporta como una consola de órdenes (shell).
Esto permite listar contenidos de directorios, por ejemplo.
Además de correr en plataformas Unix también lo hace en Windows.
Puede cargar archivos con funciones de Matlab de extensión .m.
Ayuda en español
La sintaxis es similar a la utilizada en MATLAB.
Es un lenguaje interpretado.
No permite pasar argumentos por referencia. Siempre se pasan por valor.
No permite punteros.
Se pueden generar scripts.
Soporta gran parte de las funciones de la biblioteca estándar de C.
Puede extenderse para ofrecer compatibilidad a las llamadas al sistema UNIX.