Método Numérico de Euler en C++

Ejemplo uso del elemento div y del atributo id

El siguiente archivo contiene el trabajo de investigación y programación, del Equipo 4 de la materia de Programación de Ecuaciones Diferenciales. El objetivo de este, utilizando el modelo de programación de Euler Mejorado, resolver el siguiente caso de ecuaciones diferenciales, comparando con el resultado de Euler básico/tradicional y de la solución real, resolviendo la ecuación diferencial. Tabular y graficar resultados para los diferentes casos de h, conforme a lo indicado.



A continuación se presenta una explicación a detalle del desarrollo, algoritmo y limitantes presentes en el método

DEFINICIÓN

Entendemos como método numérico, un procedimiento o definición matemática que nos permite encontrar las funciones F(x) que dan solución a una ecuación diferencial, comúnmente del tipo Y´(x,y), por otro lado, con el método de Euler podemos encontrar dicha solución de ecuaciones diferenciales ordinarias (EDO),mediante la integración de valores, partiendo de un punto inicial dado, que define una curva de solución concreta.

Antes de realizar nuestro programa decidimos apoyarnos en el software Wolfram Alpha para poder contrastar los resultados obtenidos, y así comprobar qué tan cerca o lejos se encuentran nuestros resultados de la solución real.

Nos apoyamos en Wolfram Alpha para poder ver cómo se comportan las gráficas de la solución “xy” y nuestra ecuación “y’y”.

Se decidió utilizar la calculadora gráfica Geogebra para ver la representación gráfica de la solución de nuestro problema.

MÉTODO TRADICIONAL

Desarrollo

Una vez planteado resultados por un apoyo de software matemático comenzamos a trabajar en el código para el método de euler.

El desarrollo de la función del método numérico tradicional de Euler, partimos de la definición matemática previamente establecida, y definimos su estructura como un ciclo que depende de los valores previamente obtenidos, partiendo de una solución o curva definida que es proporcionada, para este caso siendo F(0)=1.

Resultados

A partir del código previamente expuesto se obtuvieron los siguientes resultados para diferentes h o “paso”: 0.5, 0.25 y 0.1

Posteriormente, para realizar un análisis comparativo del comportamiento de la “y” de euler con su “y” real decidimos alterar el paso de 0.5 a .25 para obtener una mayor precisión entre las “y” al tener más datos reduciendo el error acumulado del método de euler, pudimos observar que el porcentaje de error se reducía un poco.

Adicionalmente por el ocio de experimentar reducimos el paso a 0.1 con el fin de ver la mejora en los resultados de y-euler comparada con la y-real esto se ve muy claro en la columna de error donde se logra observar que en lugar de los errores que varían del 20% hasta el 120% de la Imagen 5 donde el paso era 0.25 el error con una precisión de 0.1 onda entre el 5% a un máximo de 80% que considerando que el método acumula bastante error el paso sin duda alguna mejora la precisión de los datos a obtener.

Resultados Gráficos

Haciendo una tabulación de nuestros resultados y graficando con la herramienta Microsoft Excel, obtuvimos las aproximaciones gráficas del método numérico respecto a la solución real. La graficación de los resultado permite analizar los datos de modo más intuitivo donde se aprecia visualmente el efecto del paso en la precisión entre métodos de derivación.


MÉTODO EULER-GAUSS

Desarrollo

Ahora bien lo mostrado anteriormente fue solo un método para encontrar los puntos y de una ecuación diferencial no obstante existen diversos sistemas para obtener un resultado con esto en mente comenzamos a trabajar con la idea de un método más preciso que no acumule errores gigantescos cómo lo hace el método tradicional, en su lugar se optó por obtener un promedio de dos pendientes inmediatas, reduciendo el error del cálculo.

A este procedimiento se le conoce cómo Euler-Gauss definido por la siguiente ecuación:

A diferencia de Euler Tradicional el método Euler-Gauss obtiene el promedio de la pendiente anterior con la actual, aproximando el valor “y” por medio de un valor predictor.
Por lo tanto, cómo se busca mejorar el código este se vio alterado para acoplar el método Euler-Gauss.
Desarrollando primero una función para predictor que devuelve el valor en un punto específico requerido y complementada por la función de corrector, la cual está ciclada para obtener el promedio de las pendientes para todo el rango de “x” solicitado.

Resultados

Se muestran en las imágenes 10,11 y 12 los resultados del código ordenado en la primera columna, el paso, que va de los valores 0 a 4, la columna 2 indicando nuestros valores predictores y la tercera valores correctores.
En dichos resultados podemos percibir una considerables disminución del porcentaje de error con respecto al método tradicional, siendo casi despreciable para nuestro paso de 0.1

A partir del código previamente expuesto se obtuvieron los siguientes resultados para diferentes h o “paso”: 0.5, 0.25 y 0.1

Resultados Gráficos

CONCLUSIONES

Con la ejecución de este proyecto podemos concluir que es posible la optimización de cualquier método o definición matemática, aún más si nos referimos a su desarrollo en el ámbito de la programación, no obstante, aunque este tipo de tecnologías facilite o simplifique los cálculos tradicionales siempre se estará presente un grado de error ya sea generado por el lenguaje de programación,compilador , la naturaleza de las operaciones o la capacidad de la computadora, por esta razón, es necesario resaltar la importancia de verificar nuestros resultados con cualquier otro tipo de herramientas adicionales.
Finalmente, cabe resaltar que el grado de complejidad de este ejercicio fue el desarrollo de soluciones programables que redujeron el factor de error en los cálculos, encontrando así una aproximación a la solución real de nuestra ecuación diferencial.

Contacto
manuelestradamaldonado123@gmail.com
amilcar.cs18@gmail.com
yael.soto@cejv.edu.mx

Comentarios