Você está na página 1de 23

UNIVERSIDAD DE EL SALVADOR FACULTAD DE INGENIERA Y ARQUITECTURA ESCUELA DE INGENIERA ELCTRICA ANLISIS NUMRICOS CICLO I-2013

Tema: Tarea final de Anlisis Numrico Ciclo I - 2013

Catedrtico: Ing. Wilber Caldern Alumnos:

Fuentes Chicas Hctor Mauricio Vsquez Lpez Nstor Gabriel Herrera Ruiz Nilson Eduardo

FC11023 VL10008 HR11046

Ciudad Universitaria, 26 de junio de 2013

INDICE
Contenido Pg.

Introduccin.........3

Objetivos.4

Marco Terico.....5

Descripcin de los Mtodos para Ecuaciones Diferenciales...........9

Diseo de Interfaz Grfica de Usuario14

Conclusiones22

Bibliografa..........23

INTRODUCCION En nuestro vivir diario nos enfrentamos con la realizacin de tareas bastantes tediosas, difciles y muchas veces hasta casi interminables, en ocasiones fracasamos por nuestra falta de concentracin y dedicacin, 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 da se facilitan muchos de esos clculos gracias a algoritmos informticos tales como las hojas de clculo en Excel. En nuestro caso como estudiantes de ingeniera se nos presentan labores tan sencillas pero a la vez extensas, de ah la importancia de conocer o familiarizarnos con mtodos que nos faciliten desde realizar una serie de sumas, hasta la resolucin de ecuaciones diferenciales. Es aqu donde nos concentraremos en analizar dichos mtodos sin antes dar una antesala a los Mtodos Numricos para Ingenieros. Los cules sern nuestro centro de estudio, pero en especial para la resolucin de Ecuaciones Diferenciales Ordinarias. En el reporte mostrado a continuacin se presenta el desarrollo de una interfaz de usuario desarrollada en lenguaje Python y funciones en Octave para aplicar los mtodos numricos para resolver ecuaciones diferenciales utilizando los Mtodos de Heun, Euler y Runge Kutta de Orden 4 ms adelante mostraremos en que consiste cada mtodo para resolver las ecuaciones diferenciales.

OBJETIVOS Objetivo General: Profundizar en el estudio de los mtodos numricos para resolver ecuaciones diferenciales y facilitar los clculos matemticos ah realizar

Objetivos Especficos: Aplicar los mtodos numricos para Resolver Ecuaciones Diferenciales. Desarrollar y manejar funciones en lenguaje de programacin tales como Octave para los mtodos numricos planteados. Desarrollar una interfaz de usuario para poder ejecutar las funciones numricas y poder facilitar el proceso de resolver ecuaciones diferenciales.

Mtodos Numricos El anlisis numrico o clculo numrico es la rama de las matemticas que se encarga de disear algoritmos para, a travs de nmeros y reglas matemticas simples, simular procesos matemticos ms complejos aplicados a procesos del mundo real. El anlisis numrico cobra especial importancia con la llegada de los ordenadores. Los ordenadores son tiles para clculos matemticos extremadamente complejos, pero en ltima instancia operan con nmeros binarios y operaciones matemticas simples. Desde este punto de vista, el anlisis numrico proporcionar todo el andamiaje necesario para llevar a cabo todos aquellos procedimientos matemticos susceptibles de expresarse algortmicamente, basndose en algoritmos que permitan su simulacin o clculo en procesos ms sencillos empleando nmeros. Definido el error, junto con el error admisible, pasamos al concepto de estabilidad de los algoritmos. Muchas de las operaciones matemticas pueden llevarse adelante a travs de la generacin de una serie de nmeros que a su vez alimentan de nuevo el algoritmo. Esto proporciona un poder de clculo y refinamiento importantsimo a la mquina que a medida que va completando un ciclo va llegando a la solucin. El problema ocurre en determinar hasta cundo deber continuar con el ciclo, o si nos estamos alejando de la solucin del problema. Finalmente, otro concepto paralelo al anlisis numrico es el de la representacin, tanto de los nmeros como de otros conceptos matemticos como los vectores, polinomios, etc. Por ejemplo, para la representacin en ordenadores de nmeros reales, se emplea el concepto de coma flotante que dista mucho del empleado por la matemtica convencional. En general, estos mtodos se aplican cuando se necesita un valor numrico como solucin a un problema matemtico, y los procedimientos "exactos" o "analticos" (manipulaciones algebraicas, teora de ecuaciones diferenciales, mtodos de integracin, etc.) son incapaces de dar una respuesta. Debido a ello, son procedimientos de uso frecuente por fsicos e ingenieros, y cuyo desarrollo se ha visto favorecido por la necesidad de stos de obtener soluciones, aunque la precisin no sea completa. Debe recordarse que la fsica experimental, por ejemplo, nunca arroja valores exactos sino intervalos que engloban la gran mayora de resultados experimentales obtenidos, ya que no es habitual que dos medidas del mismo fenmeno arrojen valores exactamente iguales. Los problemas de esta disciplina se pueden dividir en dos grupos fundamentales: Problemas de dimensin finita: aquellos cuya respuesta son un conjunto finito de nmeros, como las ecuaciones algebraicas, los determinantes, los problemas de valores propios, etc. Problemas de dimensin infinita: problemas en cuya solucin o planteamiento intervienen elementos descritos por una cantidad infinita de nmeros, como integracin y derivacin numricas, clculo de ecuaciones diferenciales, interpolacin, etc.

Asimismo, existe una subclasificacin de estos dos grandes apartados en tres categoras de problemas, atendiendo a su naturaleza o motivacin para el empleo del clculo numrico: 1) Problemas de tal complejidad que no poseen solucin analtica. 2) Problemas en los cuales existe una solucin analtica, pero sta, por complejidad u otros motivos, no puede explotarse de forma sencilla en la prctica. 3) Problemas para los cuales existen mtodos sencillos pero que, para elementos que se emplean en la prctica, requieren una cantidad de clculos excesiva; mayor que la necesaria para un mtodo numrico.

El anlisis numrico se divide en diferentes disciplinas de acuerdo con el problema que resolver.
Clculo de los valores de una funcin Uno de los problemas ms sencillos es la evaluacin de una funcin en un punto dado. Para polinomios, uno de los mtodos ms utilizados es el algoritmo de Horner, ya que reduce el nmero de operaciones a realizar. En general, es importante estimar y controlar los errores de redondeo que se producen por el uso de la aritmtica de punto flotante. La extrapolacin es muy similar a la interpolacin, excepto que ahora queremos encontrar el valor de la funcin desconocida en un punto que no est comprendido entre los puntos dados. La regresin es tambin similar, pero tiene en cuenta que los datos son imprecisos. Dados algunos puntos, y una medida del valor de la funcin en los mismos (con un error debido a la medicin), queremos determinar la funcin desconocida. El mtodo de los mnimos cuadrados es una forma popular de conseguirlo. Resolucin de ecuaciones y sistemas de ecuaciones Otro problema fundamental es calcular la solucin de una ecuacin o sistema de ecuaciones dado. Se distinguen dos casos dependiendo de si la ecuacin o sistema de ecuaciones es o no lineal. Mucho esfuerzo se ha puesto en el desarrollo de mtodos para la resolucin de sistemas de ecuaciones lineales. Mtodos directos, i.e., mtodos que utilizan alguna factorizacin de la matriz son el mtodo de eliminacin de Gauss, la descomposicin LU, la descomposicin de Cholesky para matrices simtricas (o hermticas) definidas positivas, y la descomposicin QR. Mtodos iterativos como el mtodo de Jacobi, el mtodo de GaussSeidel, el mtodo de las aproximaciones sucesivas y el mtodo del gradiente conjugado se utilizan frecuentemente para grandes sistemas. En la resolucin numrica de ecuaciones no lineales algunos de los mtodos ms conocidos son los mtodos de biseccin, de la secante y de la falsa posicin. Si la funcin es adems derivable y la derivada se conoce, el mtodo de Newton es muy utilizado. Este mtodo es un mtodo de iteracin de punto fijo. La linealizacin es otra tcnica para resolver ecuaciones no lineales.

Las ecuaciones algebraicas polinomiales poseen una gran cantidad de mtodos numricos para enumerar: Mtodo de Greffe (o mtodo de Lobachevsky o de Lobachevsky-Dandelin-Greffe o del cuadrado de las races) Mtodo de Laguerre Mtodo de Bairstow (o mtodo de Lin-Bairstow) Mtodo de Bernoulli Mtodo de Horner Mtodo de Householder Mtodo de Newton-Raphson especializado para polinomios Mtodo de Richmond especializado para polinomios Mtodo modificado de Richmond Mtodo de Newton-Horner Mtodo de Richomnd-Horner Mtodo de Birge-Bite Mtodo de Jenkins-Traub Descomposicin espectral y en valores singulares Bastantes problemas importantes pueden ser expresados en trminos de descomposicin espectral (el clculo de los vectores y valores propios de una matriz) o de descomposicin en valores singulares. Por ejemplo, el anlisis de componentes principales utiliza la descomposicin en vectores y valores propios. Optimizacin Los problemas de optimizacin buscan el punto para el cual una funcin dada alcanza su mximo o mnimo. A menudo, el punto tambin satisface cierta restriccin. Ejemplos de ,problemas de optimizacin son la programacin lineal en que tanto la funcin objetivo como las restricciones son lineales. Un mtodo famoso de programacin lineal es el mtodo simplex. El mtodo de los multiplicadores de Lagrange puede usarse para reducir los problemas de optimizacin con restricciones a problemas sin restricciones. Evaluacin de integrales La integracin numrica, tambin conocida como cuadratura numrica, busca calcular el valor de una integral definida. Mtodos populares utilizan alguna de las frmulas de NewtonCotes (como la regla del rectngulo o la regla de Simpson) o de cuadratura gaussiana. Estos mtodos se basan en una estrategia de "divide y vencers", dividiendo el intervalo de integracin en subintervalos y calculando la integral como la suma de las integrales en cada subintervalo, pudindose mejorar posteriormente el valor de la integral obtenido mediante el mtodo de Romberg. Para el clculo de integrales mltiples estos mtodos requieren demasiado esfuerzo computacional, siendo til el mtodo de Monte Carlo.

Ecuaciones diferenciales El anlisis numrico tambin puede calcular soluciones aproximadas de ecuaciones diferenciales, bien ecuaciones diferenciales ordinarias, bien ecuaciones en derivadas parciales. Los mtodos utilizados suelen basarse en discretizar la ecuacin correspondiente. Es til ver la derivacin numrica. Para la resolucin de ecuaciones diferenciales ordinarias los mtodos ms utilizados son el mtodo de Euler y los mtodos de Rugen-Kutta. Las ecuaciones en derivadas parciales se resuelven primero discretizando la ecuacin, llevndola a un subespacio de dimensin finita. Esto puede hacerse mediante un mtodo de los elementos finitos.

Ecuaciones Diferenciales Ahora nos centraremos en presentar los mtodos utilizados en clases, los cuales son: Mtodo de Euler Mtodo de Heun Mtodo de Rugen Kutta Mtodo de Euler La idea del mtodo de Euler es muy sencilla y est basada en el significado geomtrico de la derivada de una funcin en un punto dado. Supongamos que tuviramos la curva solucin de la ecuacin diferencial y trazamos la recta tangente a la curva en el punto dado por la condicin 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 aproximacin al valor deseado . como una

As, calculemos la ecuacin de la recta tangente a la curva solucin de la ecuacin diferencial dada en el punto la ecuacin de la recta es: . De los cursos de Geometra Analtica, sabemos que

Donde m es la pendiente. En este caso, sabemos que la pendiente de la recta tangente se calcula con la derivada:

Por lo tanto, la ecuacin de la recta tangente es : Ahora bien, suponemos que como es un punto cercano a , y por lo tanto estar dado

. De esta forma, tenemos la siguiente aproximacin:

De aqu, tenemos nuestra frmula de aproximacin: Esta aproximacin puede ser suficientemente buena, si el valor de h es realmente pequeo, digamos de una dcima menos. Pero si el valor de h es ms grande, entonces podemos cometer mucho error al aplicar dicha frmula. Una forma de reducir el error y obtener de hecho un mtodo iterativo, es dividir la distancia en n partes iguales (procurando que estas partes sean de longitud suficientemente pequea) y obtener entonces la aproximacin en n pasos, aplicando la frmula anterior n veces de un paso a otro, con la nueva h igual a . En una grfica, tenemos lo siguiente:

Ahora bien, sabemos que: Para obtener punto nicamente hay que pensar que ahora el papel de lo toma el

, y por lo tanto, si sustitumos los datos adecuadamente, obtendremos que:

De aqu se ve claramente que la frmula recursiva general, est dada por: Esta es la conocida frmula de Euler que se usa para aproximar el valor de aplicndola sucesivamente desde hasta en pasos de longitud h.

10

Mtodo de Heun Una fuente fundamental del error en el mtodo de Euler es que la derivada al inicio del intervalo supuestamente se aplica a todo el intervalo. Para mejorar la estimacin de la pendiente se involucra la determinacin 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 estimacin mejorada de la pendiente para todo el intervalo. Recuerde que para el mtodo de Euler, la pendiente al inicio de un intervalo yi' f xi , yi se utiliza para interpolar linealmente a yn+1
* yn 1 y n f x n , y n h Esta sera la estimacin de yn+1 en el caso del mtodo de Euler estndar. Sin embargo, en el * mtodo de Euler modificado( o mtodo de Heun), la y n 1 , calculada anteriormente no es la repuesta final, sino una prediccin intermedia. Es por esto que se la distingue con un * asterisco como superndice. A la ecuacin y n 1 y n f x n , y n h , se le denomina

* ecuacin predictor. Ahora, con y n 1 y xn+1=xn+h, se estima la pendiente al final del intervalo ( xn, xn+1), como ' * yn 1 f x n 1 , y n 1

As las dos pendientes se pueden combinar para obtener la pendiente promedio en el intervalo.
' ' * yn yn f x n , y n f x n 1 , y n 1 1 2 2 Esta pendiente promedio es la que se utiliza para extrapolar linealmente desde yn hasta yn+1 usando el mtodo de Euler: * f x n , y n f x n 1 , y n 1 y n 1 y n h 2 La cual se conoce como ecuacin corrector. Por lo tanto, el mtodo de Euler modificado o Mtodo de Heun es un procedimiento predictorcorrector. Este mtodo se podra resumir este mtodo como la expresin: * f x n , y n f x n 1 , y n 1 y n 1 y n h 2 En donde * yn 1 y n f x n , y n h .

y'

11

Mtodo de Rugen Kutta La convergencia lenta del mtodo de Euler y lo restringido de su regin de estabilidad absoluta nos lleva a considerar mtodos de orden de convergencia mayor. En clase mencionamos que en cada paso el mtodo de Euler se mueve a lo largo de la tangente de una cierta curva que esta "cerca" a la curva desconocida o buscada. Los mtodos RungeKutta extienden esta idea geomtrica al utilizar varias derivadas o tangentes intermedias, en lugar de solo una, para aproximar la funcin desconocida. Los mtodos Runge-Kutta ms simples se obtienen usando dos de estas derivadas intermedias. Mtodos Runge-Kutta de dos Evaluaciones: Aqui buscamos mtodos o frmulas numricas de la forma: Note que apesar de que en la frmula se perciven tres f's, el mtodo envuelve solo dos evaluaciones ya que dos de estas f's tienen los mismos argumentos. La idea ahora es determinar los parmetros de modo que el mtodo tenga orden de convergencia lo ms alto posible. Un anlisis del error local de esta frmula basado en el Teorema de Taylor muestra que el orden ms alto que puede tener esta frmula 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 frmulas son: 1. Mtodo de Heun: Aqui se toma de modo que el mtodo reduce a:

Para propositos de hacer clculos es mejor escribir esta frmula como:

2. Mtodo del Punto Medio: Aqui se toma

de modo que el mtodo reduce a:

12

Mtodos Runge-Kutta de ms de dos Evaluaciones: Aunque el mtodo de Heun fu bastante efectivo en el ejemplo anterior, nos interesa encontrar mtodos de orden an ms alto que no requieran h's muy pequeas. Vimos aqui que un mtodo Runge-Kutta de dos evaluaciones intermedias genera un mtodo de orden dos. Es razonable pensar que tres o cuatro evaluaciones intermedias producen mtodos Runge-Kutta de ordenes tres y cuatro respectivamente. Este el caso pero ya para cinco evaluaciones no obtenemos necesariamente mtodos Runge-Kutta de orden cinco pero si con seis evaluaciones. Un ejemplo de un mtodo Runge-Kutta de orden cuatro de cuatro evaluaciones es el llamado mtodo Runge-Kutta clsico definido por las frmulas:

13

Implementacin de una Interfaz Grfica de Usuario Breve Descripcin de los Lenguajes de Programacin GNU Octave Octave o GNU Octave es un programa libre para realizar clculos numricos. Como indica su nombre es parte de proyecto GNU. MATLAB es considerado su equivalente comercial. Entre varias caractersticas que comparten se puede destacar que ambos ofrecen un intrprete permitiendo ejecutar rdenes en modo interactivo. Ntese que Octave no es un sistema de lgebra computacional como podra ser Maxima, sino que usa un lenguaje que est orientado al anlisis numrico. El proyecto fue creado alrededor del ao 1988 pero con una finalidad diferente: ser utilizado en un curso de diseo de reactores qumicos. Posteriormente en el ao 1992, se decide extenderlo y comienza su desarrollo a cargo de John W. Eaton.1 La primera versin alpha fue lanzada el 4 de enero de 1993. Un ao ms tarde, el 17 de febrero de 1994 aparece la versin 1.0. El nombre surge de Octave Levenspiel, profesor de unos de los autores conocido por sus buenas aproximaciones por medio de clculos mentales a problemas numricos en ingeniera qumica. Detalles tcnicos: Octave est escrito en C++ usando la biblioteca STL. Tiene un intrprete de su propio lenguaje (de sintaxis similar a Matlab), y permite una ejecucin interactiva o por lotes. Puede extenderse el lenguaje con funciones y procedimientos por medio de mdulos dinmicos. Utiliza otros programas GNU para ofrecer al usuario crear grficos para luego imprimirlos o guardarlos (Grace). Dentro del lenguaje tambin se comporta como una consola de rdenes (shell). Esto permite listar contenidos de directorios, por ejemplo. Adems de correr en plataformas Unix tambin lo hace en Windows. Puede cargar archivos con funciones de Matlab de extensin .m. Ayuda en espaol 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 estndar de C. Puede extenderse para ofrecer compatibilidad a las llamadas al sistema UNIX.
14

El lenguaje est pensado para trabajar con matrices y provee mucha funcionalidad para trabajar con stas. Soporta estructuras similares a los "struct"s de C.

Al ser su licencia Licencia pblica general de GNU, puede ser compartido y utilizado libremente. Python Python es un lenguaje de programacin interpretado cuya filosofa hace hincapi en una sintaxis muy limpia y que favorezca un cdigo legible. Se trata de un lenguaje de programacin multiparadigma, ya que soporta orientacin a objetos, programacin imperativa y, en menor medida, programacin funcional. Es un lenguaje interpretado, usa tipado dinmico y es multiplataforma. Es administrado por la Python Software Foundation. Posee una licencia de cdigo abierto, denominada Python Software Foundation License, que es compatible con la Licencia pblica general de GNU a partir de la versin 2.1.1, e incompatible en ciertas versiones anteriores. Python fue creado a finales de los ochenta por Guido van Rossum en el Centro para las Matemticas y la Informtica (CWI, Centrum Wiskunde & Informatica), en los Pases Bajos, como un sucesor del lenguaje de programacin ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba. El nombre del lenguaje proviene de la aficin de su creador original, Guido van Rossum, por los humoristas britnicos Monty Python. Van Rossum es el principal autor de Python, y su continuo rol central en decidir la direccin de Python es reconocido, refirindose a l como Benevolente Dictador Vitalicio (en ingls: Benevolent Dictator for Life, BDFL). Python es un lenguaje de programacin multiparadigma. Esto significa que ms que forzar a los programadores a adoptar un estilo particular de programacin, permite varios estilos: programacin orientada a objetos, programacin imperativa y programacin funcional. Otros paradigmas estn soportados mediante el uso de extensiones. Python usa tipado dinmico y conteo de referencias para la administracin de memoria. Una caracterstica importante de Python es la resolucin dinmica de nombres; es decir, lo que enlaza un mtodo y un nombre de variable durante la ejecucin del programa (tambin llamado enlace dinmico de mtodos). Otro objetivo del diseo del lenguaje es la facilidad de extensin. Se pueden escribir nuevos mdulos fcilmente en C o C++. Python puede incluirse en aplicaciones que necesitan una interfaz programable.
15

Aunque la programacin en Python podra considerarse en algunas situaciones hostil a la programacin funcional tradicional del Lisp, existen bastantes analogas entre Python y los lenguajes minimalistas de la familia Lisp como puede ser Scheme.

Explicacin de Pasos: Bueno para ello, utilizamos el lenguaje de programacin de alto nivel como lo es Python, en dicho lenguaje encontramos un sin fin de funciones para la elaboracin de innumerables proyectos, entre ellos este sencillo y eficaz programa. As tambin hemos utilizado un potente interprete matemtico que en si no es un sistema de algebra computacional, pero si permite el manejo de ordenes en modo interactivo, perfecto para el anlisis numrico, y nos referimos precisamente a Octave. La elaboracin de nuestra interfaz fue diseada en el entorno del sistema operativo Ubuntu/Linux, por lo cual muchos de los procesos son directamente desde la terminal. Ahora empezaremos primeramente con la obtencin de los ficheros necesarios para el uso de los programas anteriormente mencionados, comencemos con la obtencin de Octave, lo primero que haremos es abrir la terminal y escribir la siguiente lnea:
sudo apt-get install octave

Con ello ya tenemos todo para la instalacin de Octave; ahora haremos un proceso similar para obtener Python, con el complemento para la elaboracin de interfaces grficas, pues bien abrimos nuevamente el terminal y escribimos el siguiente comando: sudo apt-get install python python-tk idle python-pmw pythonimaging Listo con ello ya estamos listos para la elaboracin y ejecucin de una interfaz grfica de usuario.

16

Para empezar, lo primero que tenemos que hacer, es importar Tkinter, que es el mdulo que vamos a usar para este tutorial (existen otros mucho mejores, pero este me parece el ms simple)
from Tkinter import *

Ahora creamos una ventana vaca, para ello:


root = Tk() utilizaremos #Creamos identificador que sera el que

#para referirnos a la ventana root.title('Empezando en Tkinter...')#Nombramos la ventana root.mainloop() #Cerramos la edicion de la ventana y esperamos a eventos

Con esto creamos nuestra ventana. Ahora realizaremos los botones para ejecutar procesos y escribimos lo siguiente: boton=Button(win,text="Solucion",command=Solucion) Ahora definiremos el comando Solucin para la implementacion del metodo de Runge Kutta de orden 4: def Solucion(): octa=popen("octave -qf","w") funcionRungekutta="[X Ysol] = rungekutta4(%s,%s,%s,%s,\"%s\");\n" %(text.get(),text2.get(),text3.get(),text4.get(),text5.get()) octa.write(funcionRungekutta) octa.close() lectura1=open("X.txt","r") label6=Label(win,text=lectura1.read()) label6.grid(column=2,row=7) linea=lectura1.read() lectura1.close lectura2=open("Y.txt","r") label7=Label(win,text=lectura2.read()) label7.grid(column=3,row=7) linea=lectura2.read() lectura2.close En este bloque hacemos referencia a una subrutina para la apertura de Octave ya que nuestra interfaz grfica y la solucin de los mtodos es gracias a Octave y a la apertura y lectura de ficheros. Por lo cual necesitamos de un fichero con sintaxis propia de Octave que al final mostraremos. Continuando con la elaboracin de nuestra interfaz, ahora llamaremos a nuestros Label o cajas para la captura de datos y escribimos el siguiente bloque:

17

label=Label(win,text="x0") label2=Label(win,text="y0") label3=Label(win,text="xn") label4=Label(win,text="h") label5=Label(win,text="dydx") label8=Label(win,text="Solucion") label9=Label(win,text="XSol") label10=Label(win,text="YSol") Ahora los ubicamos en nuestra ventana junto con el botn que anteriormente creamos: label.grid(column=1, row=1) text.grid(column=2, row=1) label2.grid(column=1, row=2) text2.grid(column=2, row=2) label3.grid(column=1, row=3) text3.grid(column=2, row=3) label4.grid(column=1,row=4) text4.grid(column=2, row=4) label5.grid(column=1,row=5) text5.grid(column=2, row=5) label8.grid(column=1,row=6) label9.grid(column=2,row=6) label10.grid(column=3,row=6) boton.grid(column=3, row=1) Como pasos finales declaramos las variables de nuestra captura de datos: text=Entry(win) text2=Entry(win) text3=Entry(win) text4=Entry(win) text5=Entry(win) Luego le ponemos nombre a nuestra ventana: win.title("Metodo de Runge Kutta")

18

En fin todo el Bloque completo tendra que quedar as:


from Tkinter import * from os import popen def Solucion(): octa=popen("octave -qf","w") funcionRungekutta="[X Ysol] = rungekutta4(%s,%s,%s,%s,\"%s\");\n" %(text.get(),text2.get(),text3.get(),text4.get(),text5.get()) octa.write(funcionRungekutta) octa.close() lectura1=open("X.txt","r") label6=Label(win,text=lectura1.read()) label6.grid(column=2,row=7) linea=lectura1.read() lectura1.close lectura2=open("Y.txt","r") label7=Label(win,text=lectura2.read()) label7.grid(column=3,row=7) linea=lectura2.read() lectura2.close win=Tk() win.title("Metodo de Runge Kutta") text=Entry(win) text2=Entry(win) text3=Entry(win) text4=Entry(win) text5=Entry(win) label=Label(win,text="x0") label2=Label(win,text="y0") label3=Label(win,text="xn") label4=Label(win,text="h") label5=Label(win,text="dydx") label8=Label(win,text="Solucion") label9=Label(win,text="XSol") label10=Label(win,text="YSol") boton=Button(win,text="Solucion",command=Solucion) label.grid(column=1, row=1) text.grid(column=2, row=1) label2.grid(column=1, row=2) text2.grid(column=2, row=2) label3.grid(column=1, row=3) text3.grid(column=2, row=3) label4.grid(column=1,row=4) text4.grid(column=2, row=4) label5.grid(column=1,row=5) text5.grid(column=2, row=5) label8.grid(column=1,row=6) label9.grid(column=2,row=6) label10.grid(column=3,row=6) boton.grid(column=3, row=1) win.mainloop()

19

Y nuestra interfaz quedara as:

Como vemos ah ya le hemos metido valores pero antes de esto debemos tener nuestro fichero en sintaxis Octave con la implementacin del mtodo el cual lo dejo a continuacin:
% Argumentos: % x0: valor inicial para variable independiente % y0: valor inicial para variable dependiente % xn: valor final para la variable independiente % h: valor de avances o desplazamientos para llegar al valor % final de la variable independiente. % fx: variable donde almacena un strig de la funcin o ecuacin diferencial a resolver function [xn y B] = rungeKutta4 (x0, y0, xn, h, fx) B = zeros (length(x0 : h : xn), 2); B(:,1) = x0 : h : xn; B(1,2) = y0; for a = 1:length(x0:h:xn)-1; x = B(a,1); y = B(a,2); k1 = eval(fx,x,y); x = B(a,1) + h/2; y = B(a,2) + h*k1/2; k2 = eval(fx,x,y); x = B(a,1) + h/2; y = B(a,2) + h*k2/2; k3 = eval(fx,x,y); x = B(a,1) + h; y = B(a,2) + h*k3; k4 = eval(fx,x,y); y = B(a+1,2) = B(a,2) + (k1 + 2*k2 + 2*k3 + k4)*h/6; Retorno1 = fopen('Y.txt','w'); %creacion de un archivo .txt Retorno2 = fopen('X.txt','w'); fprintf(Retorno1, '%4.6f\n',B(:,2));% impresin en el archivo .txt creado anteriormente fclose(Retorno1); fprintf(Retorno2, '%4.6f\n',B(:,1)); fclose(Retorno2); endfor endfunction

20

Luego de haber realizado las dems funciones y puesto todos nuestros mtodos investigados, obtendremos lo siguiente:

Nuestra interfaz con todos los mtodos estudiados. *Nota: En este Proyecto Incluimos un Manual de Usuario para el Manejo Correcto de la Interfaz Grfica.

21

Conclusiones Como hemos aprendido, estos mtodos se aplican cuando se necesita un valor numrico como solucin a un problema matemtico, y los procedimientos "exactos" o "analticos" (manipulaciones algebraicas, teora de ecuaciones diferenciales, mtodos de integracin, etc.) son incapaces de dar una respuesta. Es por ello que tanto Fsicos como Ingenieros utilizan dichos mtodos para la obtencin de resultados favorables. Ahora con la invencin de los ordenadores o computadoras se ha facilitado a un ms la obtencin de resultados de una forma ms precisa y rpida y controlable. Adems hemos tratado de hacer lo ms comprensible posible como trabajan los mtodos estudiados en este caso los de diferenciacin, y la implementacin de estos en el rea de programacin hasta crear una interfaz de usuario. Cabe recalcar que de los mtodos ms exactos es el de Runge Kutta de orden 4 y que como vimos su implementacin es bien sencilla, pero de todos es el ms conveniente a utilizar o recurrir.

22

Bibliografa Steven C. Chapra y Raymond P. Canale, Mtodos Numricos para Ingenieros, Quinta Edicin, McGraw-Hill Mtodos Numricos con Octave Luis Guillermo Bustamante Camilo Zuluaga Camilo Duque Velsquez http://chuwiki.chuidiang.org/index.php?title=Ejemplo_b%C3%A1sico_de_interface_gr%C 3%A1fica_de_usuario_con_Python https://es.wikipedia.org/wiki/An%C3%A1lisis_num%C3%A9rico

23

Você também pode gostar