P. 1
Método de Euler

Método de Euler

|Views: 4.485|Likes:
Publicado porManuel Garcia

More info:

Published by: Manuel Garcia on Jun 19, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

10/23/2015

pdf

text

original

Método de Euler. Objetivos.

1. Conocer y desarrollar el Método de Euler tanto su aplicación en los problemas matemáticos y el desarrollo en la programación (en este caso en el lenguaje C++).

2. Diferenciar el Método de Euler del método de Runge-Kutta.

3. Observar y analizar las ventajas y desventajas que tiene el Método de Euler para encontrar las aproximaciones de una función con un porcentaje de error aceptable.

4. Aprender y comprender el Método de Euler para su desarrollo en la programación en C++ y en su estructura en código para razonar su procedimiento.

5. Obtener una visión clara de cuál es el comportamiento de este Método tanto en las matemáticas como en la programación.

MARCO TEÓRICO. Leonhard Paul Euler (Basilea, Suiza, 15 de abril de 1707 - San Petersburgo, Rusia, 18 de septiembre de 1783), conocido como Leonhard Euler, fue un matemático y físico suizo. Se trata del principal matemático del siglo XVIII y uno de los más grandes y prolíficos de todos los tiempos. Vivió en Rusia y Alemania la mayor parte de su vida y realizó importantes descubrimientos en áreas tan diversas como el cálculo o la teoría de grafos. También introdujo gran parte de la moderna terminología y notación matemática, particularmente para el área del análisis matemático, como por ejemplo la noción de función matemática. Asimismo se le conoce por sus trabajos en los campos de la mecánica, óptica y astronomía. Euler ha sido uno de los matemáticos más prolíficos, y se calcula que sus obras completas reunidas podrían ocupar entre 60 y 80 volúmenes.Una afirmación atribuida a Pierre Simon Laplace expresa la influencia de Euler en los matemáticos posteriores: «Lean a Euler, lean a Euler, él es el maestro de todos nosotros.» Euler trabajó prácticamente en todas las áreas de las matemáticas: geometría, cálculo, trigonometría, álgebra, teoría de números, además de física continua, teoría lunar y otras áreas de la física. Adicionalmente, aportó de manera relevante a la lógica matemática con su diagrama de conjuntos. Ha sido uno de los matemáticos más prolíficos de la historia. Su actividad de publicación fue incesante (un promedio de 800 páginas de artículos al año en su época de mayor producción, entre 1727 y 1783), y una buena parte de su obra completa está sin publicar. La labor de recopilación y publicación completa de sus trabajos, llamados Opera Omnia, comenzó en 1911 y hasta la fecha ha llegado a publicar 76 volúmenes. El proyecto inicial planeaba el trabajo sobre 887 títulos en 72 volúmenes. Se le considera el ser humano con mayor número de trabajos y artículos en cualquier campo del saber, sólo equiparable a Gauss. Si se imprimiesen todos sus trabajos, muchos de los cuales son de una importancia fundamental, ocuparían entre 60 y 80 volúmenes. Además, y según el matemático Hanspeter Kraft, presidente de la Comisión Euler de la Universidad de Basilea, no se ha estudiado más de un 10% de sus escritos. Por todo ello, el nombre de Euler está asociado a un gran número de cuestiones matemáticas. Euler introdujo y popularizó varias convenciones referentes a la notación en los escritos matemáticos en sus numerosos y muy utilizados libros de texto. Posiblemente lo más notable fue la introducción del concepto de función matemática, siendo el primero en escribir f(x) para hacer referencia a la función f aplicada sobre el argumento x. Esta nueva forma de notación ofrecía más comodidad frente a los rudimentarios métodos del cálculo infinitesimal existentes hasta la fecha, iniciados por Newton y Leibniz, pero desarrollados basándose en las matemáticas del último.

También introdujo la notación moderna de las funciones trigonométricas, la letra e como base del logaritmo natural o neperiano (el número e es conocido también como el número de Euler), la letra griega Σ como símbolo de los sumatorios y la letra para hacer referencia a la unidad imaginaria. El uso de la letra griega π para hacer referencia al cociente entre la longitud de la circunferencia y la longitud de su diámetro también fue popularizado por Euler, aunque él no fue el primero en usar ese símbolo. Método de Euler En matemática y computación, el método de Euler, llamado así en honor de Leonhard Euler, es un procedimiento de integración numérica para resolver ecuaciones diferenciales ordinarias a partir de un valor inicial dado. El método de Euler es el más simple de los métodos numéricos resolver un problema del siguiente tipo:

Considere el problema de calcular la pendiente de una curva desconocida que comienza en un punto dado y safisface una cierta ecuación diferencial dada. Se puede pensar en la ecuación diferencial como una fórmula que nos permite calcular la pendiente de la recta tangente a la curva en cualquier punto de la curva, siempre que el punto se conozca. La idea es que a pesar de que la curva es desconocida en principio, su punto de comienzo(al cual denotamos por A0) es conocido. Entonces, de la ecuación diferencial se puede computar la pendiente de la curva en el punto A0 y por lo tanto la recta tangente a la curva. Ahora, dando un pequeño paso sobre dicha recta, podemos tomarnos un nuevo punto A1 y suponer que dicho punto pertenece a la curva, entonces seguimos el mismo razonamiento aplicado anteriormente y volvemos a calcular la pendiente de la recta tangente a la curva en el punto A1. Luego de varios pasos tendremos formada una curva poligonal A0A1A2A3... En general esta curva que obtenemos al aplicar el método no diverge lejos de la curva original, además el error entre ambas curvas se puede minimizar si se dan pasos muy pequeños al avanzar sobre la recta tangente a la curva y además el intervalo sobre el que trabajamos es finito(aunque las cosas son más complicadas para ecuaciones inestables, como se discute más abajo).

Consiste en dividir los intervalos que va de

a

en

subintervalos de ancho ; osea:

de manera que se obtiene un conjunto discreto de del intervalo de interes

puntos:

. Para cualquiera de estos puntos se cumlple que:

.

La condición inicial , representa el punto por donde pasa la curva solución de la ecuación de el planteamiento inicial, la cual se denotará como . Ya teniendo el punto lo tanto: se puede evaluar la primera derivada de en ese punto; por

Con esta información se traza una recta, aquella que pasa por . Esta recta aproxima en una vecinidad de

y de pendiente .

. Tómese la recta como

reemplazo de y localícese en ella (la recta) el valor de y correspondiente a Entonces, podemos deducir segun la Gráfica A:

Se resuelve para

:

Es evidente que la ordenada

calculada de esta manera no es igual a sirve para que se aproxime

, pues en el

existe un pequeño error. Sin embargo, el valor

punto y repetir el procedimiento anterior a fin de generar la sucesión de aproximaciones siguiente:

La solución de las Ecuaciones diferenciales por medio de métodos númericos involucra varios tipos de errores:

Error del Método (Error de Truncamiento Local y Global): Este se debe a que, cómo la aproximación de una curva mediante una línea recta no es exacta, se comete un error propio del método. En este caso, el error es de primer orden - O(h1) -

Local: Es la diferencia que se produce entre el valor real de la función y el aproximado mediante la recta tangente -en lugar de moverse por la curvasuponiendo que el punto desde el que partimos -donde se cruzan la curva real y la recta que la aproxima- no tiene error alguno.

Propagado: Acumulación de errores por las aproximaciones producidas durante los pasos previos acumuladas. Es decir, ya no se supone que el punto del cual partimos -donde se cruzan la curva real y la recta que la aproxima- no tenía error sino que asumimos que dicho error existe y que se propaga de paso en paso. Dicha propagación es, en el peor de los casos, lineal.

La suma de los dos es el error global.

Redondeo/Truncamiento: Resultado del número límite de cifras significativas que puede retener una computadora. Ya que el número de dígitos utilizados para hacer los cálculos es finito y los números representados puede que no lo sean (es decir, numeros con infinita cantidad de dígitos). Al limitar los números con infinita cantidad de dígitos -mediante truncamiento o redondeo- a números con finita cantidad de dígitos estamos cometiendo un error extra.

Como se muestra en la Grafica B, básicamente el método se encarga de aproximar la curva por medio de una serie de segmentos en recta. Debido a que la aproximación de una curva por medio de una línea recta no es exacta, se comete un error derivado del método. A este error se le conoce como error de truncamiento. Este error se puede disminuir reduciendo el valor de , pero se obtendra un mayor número de cálculos y, por consiguiente, un error de redondeo mucho más alto.

Sistema a resolver. Yi+1 = yi + f(xi, yi)h Con el Método de Euler integre numéricamente: Y´= -2x3 + 12x2 -20x +8.5 Desde: x=0 hasta x=4 con h=0.5 y y=1 Solución: i=0: f(x,y) = f(0,1) = -2(0)3 + 12(0)2 -20(0) +8.5 = 8.5 y1 = 1 + (8.5) (0.5) = 5.25 i=1: f(x,y) = f(0.5,5.25) = -2(0.5)3 + 12(0.5)2 -20(0.5) +8.5 = 1.25 y2 = 5.25 + (1.25) (0.5) = 5.875 i=2: f(x,y) = f(1.0,5.875) = -2(1.0)3 + 12(1.0)2 -20(1.0) +8.5 = -1.5 y3 = 5.875 + (-1.5) (0.5) = 5.125 i=3: f(x,y) = f(1.5,5.125) = -2(1.5)3 + 12(1.5)2 -20(1.5) +8.5 = -1.25 y4 = 5.125 + (-1.25) (0.5) = 4.5 i=4: f(x,y) = f(2.0,4.5) = -2(2.0)3 + 12(2.0)2 -20(2.0) +8.5 = 0.5 y5 = 5.125 + (0.5) (0.5) = 4.75 i=5: f(x,y) = f(2.5,4.75) = -2(2.5)3 + 12(2.5)2 -20(2.5) +8.5 = 2.25 y6 = 5.125 + (2.25) (0.5) = 5.875

i=6: f(x,y) = f(3.0,5.875) = -2(3.0)3 + 12(3.0)2 -20(3.0) +8.5 = 2.5 y7 = 5.875 + (0.5) (0.5) = 7.125 i=7: f(x,y) = f(3.5,7.125) = -2(3.5)3 + 12(3.5)2 -20(3.5) +8.5 = -0.25 y8 = 7.125 + (-0.25) (0.5) = 7

PSEUDOCÓDIGO “Método de Euler”. Para integrar numéricamente, proporciona los siguientes datos: - Datos: Los limites inferior y superior de las x´s, condiciones iniciales y valor del intervalo. - Resultados: La aproximación de la integración numérica y el cálculo de errores. Paso 1: Ingresar valores. Paso 2: Obtener L dividiendo x superior y el valor del intervalo. Paso 3: i=0. Paso 4: Mientras i<L repetir los pasos 5 y 6 (ciclo for). Paso 5: Hacer y[-1] igual a 1. También se desarrollara para la función dada en el problema f[i]=-(2*(pow((x0+(h*i)),3)))+(12*(pow((x0+(h*i)),2)))-(20*(x0+(h*i)))+8.5 y la formula del metodo y[i]=y[i-1]+(f[i]*h). Paso 6: Hacer i=i+1. Paso 7: i=0. Paso 8: Mientras que i<L repetir los pasos 9 y 10 (ciclo for). Paso 9: Hacer yv[i]=-(0.5*(pow((x0+(h*i)),4)))+(4*(pow((x0+(h*i)),3)))(10*(pow((x0+(h*i)),2)))+(8.5*x0+h)+1; Para el valor real et=(yv[i]-y[i])*100; Para encontrar el error. Paso 10: Hacer i=i+1. Paso 11: Imprimir resultados y errores calculados. Terminar

Diagrama de flujo.
Inicio

H, x0, x1, y0

L=x1/h

i=0 i<L i++

y[-1]=1 f[i]=(2*(pow((x0+(h*i)),3)))+(12*(pow((x0+(h*i)),2))) -(20*(x0+(h*i)))+8.5 y[i]=y[i-1]+(f[i]*h)

i=j i<L i++

yv[i]=(0.5*(pow((x0+(h*i)),4)))+(4*(pow((x0+(h*i)),3)) )-(10*(pow((x0+(h*i)),2)))+(8.5*x0+h)+1 et=(yv[i]-y[i])*100;

Resultados. Y(Euler), et. (La aproximación y los errores).

Fin

Código en C++ /* INSTITUTO POLITECNICO NACIONAL ESIME ZACATENCO ALUMNO: GARCIA RANGEL JOSE MANUEL GRUPO: 3EM1 MATERIA: METODOS NUMERICOS COMPILADOR: Dev C++ PROGRAMA: Ecuaciones Diferenciales: Metodo de Euler */ #include <cstdlib> #include <iostream> #include <cmath> #include <iomanip> using namespace std; int main(int argc, char *argv[]) { //Definicion de variables double h,x0,x1,y0=1,y1,y[100],f[100],L,yv[100],et; cout<<"\n\t **Ecuaciones Diferenciales**"; cout<<"\n\t *Metodo de Euler*"; cout<<"\n\n Ingresa los valores que se te piden"; cout<<"\n Ingresa h: "; cin>>h; cout<<"\n x0: "; cin>>x0; cout<<"\n y0: "<<y0; cout<<"\n\n x1: "; cin>>x1; cout<<endl; //Desarrollo del Metodo de Euler //Calculo de limite L=x1/h; //Tabla para el Metodo cout<<"\n\n X \t\tY(x)Verdadero\tY(x)Euler \tEt(%)"<<endl; //Ciclo for para el desarrollo del metodo y que va imprimiendo los valores for(int i=0;i<=L;i++){ y[0]=1; f[i]=-(2*(pow((x0+(h*i)),3)))+(12*(pow((x0+(h*i)),2)))-(20*(x0+(h*i)))+8.5;

y[i+1]=y[i]+(f[i]*h); yv[i]=-(0.5*pow((x0+(h*i)),4))+(4*pow((x0+(h*i)),3))(10*pow((x0+(h*i)),2))+(8.5*(x0+(h*i)))+1; et=((yv[i]-y[i])/yv[i])*100; cout<<"\n"<<setiosflags(ios::fixed)<<x0+(h*i)<<"\t"<<yv[i]<<"\t"<<y[i]<<"\t"<<et; } cout<<endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

Resultados del programa en C++

Al principio del ejecutable del código en c++ del método de Euler nos piden ingresar los valores correspondientes para realizar el programa y la solución aproximada para la solución de ecuaciones diferenciales. El condigo en si realiza con ciclos for las operaciones y cálculos indicados por el usuario donde este mismo introdujo las formulas del método y la organización para que se fuera desarrollando. También en otro ciclo for se colocaron las formulas para los valores verdaderos de la ecuación diferencial y los errores que se fueron calculando entre el método de Euler y el del valor verdadero. La pantalla muestra como se imprime en forma de lista las operaciones realizadas con el desarrollo del método en el programa.

Análisis del programa en C++ del “Método de Euler” El desarrollo del programa en c++ se baso en la creación de dos ciclos for para ir desarrollando las formulas y ecuaciones del problema a partir de los ciclos con ciertas condiciones de inicio que fueron ingresadas por el usuario. El primer for desarrolla la parte de las formulas las cuales sustituyen los valores iniciales ingresados por el usuario y después de sacar el limite al cual debe de detenerse el ciclo como también para el segundo ciclo for. Ya resueltos la sustitución y desarrollo de las formulas para la aproximación de los resultados el segundo ciclo for realiza las operaciones correspondientes a las funciones verdaderas y los errores para también imprimirlos en ese mismo for y asi mostrarlos en el ejecutable.

CONCLUSIONES. “Método de Euler” Conclusiones de Eyenith Saraliz Hernández Hernández: En mi opinión general sobre el Método pues es muy favorable su procedimiento ya que cuenta con menos cálculos a comparación del método de kutta. Su desarrollo se basa en el numero de intervalos obtenidos por el valor del intervalo que le asigne el usuario y correspondiente entre los limites de los puntos que se encuentra para obtenerla. En si el método es fascinante ya que su procedimiento como dije antes es muy poco a comparación del otro método visto en clase pero tiene un detalle su margen de error es muy grande dependiendo al valor del intervalo que se encuentre, mientras más pequeño sea el valor del intervalo más exacto será la aproximación al valor verdadero de la función. Esto significa que se llevara mas procedimiento o más bien mas operaciones mientras más aproximado deseemos que este el resultado.

Conclusiones de José Manuel García Rangel: El Método de Euler es más fácil desarrollarlo que con el Método de Kutta ya que es más fácil en desarrollar por las formulas que se emplean para este método. Las formulas ocupadas en este método pueden ser muy sencillas pero si el intervalo que se proponga para los extremos de la función es demasiado grande serán pocos las operaciones que se desarrollen mientras que si el intervalo es demasiado pequeño su gran cantidad de operaciones serán muchos y eso complicaría mucho la existencia del usuario pero estarían mas exactos los resultados con un mínima casi inexistente de error. La única ventaja de este método que su desarrollo es muy fácil y sencillo de realizar su desventaja sería el de hacer muchas operaciones si queremos llegar a la exactitud. En mi conclusión es muy sencillo este método y recomendable para la práctica pero para la exactitud estaría mejor la del método de Runge-Kutta.

Bibliografía. Métodos Numéricos aplicados a la ingeniería. Antonio Nieves. Tercera edición. Grupo Editorial Patria.

Cybergrafia. http://es.wikipedia.org/wiki/Leonhard_Euler http://es.wikipedia.org/wiki/M%C3%A9todo_de_Euler

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->