You are on page 1of 12

Objetivo

Aplicar los conocimientos bsicos del clculo para encontrar la solucin a ecuaciones diferenciales ordinarias

Marco terico
Las ecuaciones diferenciales aparecen naturalmente al modelar situaciones fsicas en las ciencias naturales, ingeniera, y otras disciplinas, donde hay envueltas razones de cambio de una o varias funciones desconocidas con respecto a una varias variables independientes. Estos modelos varan entre los ms sencillos que envuelven una sola ecuacin diferencial para una funcin desconocida, hasta otros ms complejos que envuelven sistemas de ecuaciones diferenciales acopladas para varias funciones desconocidas. Por ejemplo, la ley de enfriamiento de Newton y las leyes mecnicas que rigen el movimiento de los cuerpos, al ponerse en trminos matemticos dan lugar a ecuaciones diferenciales. Usualmente estas ecuaciones estn acompaadas de una condicin adicional que especifica el estado del sistema en un tiempo o posicin inicial. Esto se conoce como la condicin inicial y junto con la ecuacin diferencial forman lo que se conoce como el problema de valor inicial. Por lo general, la solucin exacta de un problema de valor inicial es imposible difcil de obtener en forma analtica. Por tal razn los mtodos numricos se utilizan para aproximar dichas soluciones. En este caso utilizaremos los mtodos de Euler. Se llama mtodo de Euler al mtodo numrico consistente en ir incrementando paso a paso la variable independiente

Error para el mtodo de Euler La solucin numrica de las ecuaciones diferenciales ordinarias (EDO) involucra dos tipos de error. 1) Errores de Truncamiento, causados por la naturaleza de las tcnicas empleadas para aproximar los valores de y. 2) Errores de Redondeo, que son el resultado del nmero lmite de cifras significativas que pueden retener una computadora.

Ejemplo
Con el mtodo de Euler integre la ecuacin hasta x=4 con h=0.5 la condicin inicial es dada por Solucin: ( ( ( ( ( ) ( ) ( ( ( ) ( ) ( ( ( ) ( ) ( ( ( ) ( ) ) ) ( ( ( ( ) ) ) ) ( ( ( ( ) ) ) ) ) ) ) ( ( ( ) ( ) ) ) ) ) ( ( ( ) ( ( ) ) ) ) ) ) ) desde x=0 la solucin exacta esta

x 0 0.5 1 1.5 2 2.5 3 3.5 4 Grafica

Y(x) verdadera 1 3.21875 3 2.218175 2 2.71875 4 4.71875 3

Y(x) evaluada 1 5.25 5.875 5.125 4.5 4.75 5.875 7.125 7

Error % ------------63.1 -95.8 -131.04 -125 -74.71 -46.87 -50.99 -133.3

Sol. Euler

Sol. Verdadera

Pseudocdigo
Proceso METODO_DE_EULER 1. Escribir "Ecuacin a evaluar -2x^3+12x^2-20x+8.5"; 2. Escribir "Ecuacin a verdadera -.5x^4+4x^3-10x^2+8.5x+1"; 3. Escribir "Ingrese desde x= "; 4. Leer x1; 5. Escribir "Ingrese hasta x= "; 6. Leer x2; 7. Escribir "Ingrese la condicin inicial yo= "; 8. Leer yi; 9. Escribir "Ingrese la condicin inicial xo= "; 10. Leer xi; 11. Escribir "Ingrese el nmero de paso h= "; 12. Leer h; 13. Repetir i. f[i]=(-2*pow(a,3))+(12*pow(a,2))-(20*a)+(8.5); ii. yexa[i]=(-0.5*pow(a,4))+(4*pow(a,3))-(10*pow(a,2))+8.5*a+1; iii. y1[i+1]=y1[i]+f[i]*h; iv. e=((yexa[i]-y1[i])/yexa[i])*100; v. a=a+h; vi. i=i+1; 14. Hasta Que (x2>=a) 15. FinProceso Proceso METODO_DE_EULER 1. Escribir "Ecuacin a evaluar -2x^3+12x^2-20x+8.5"; 2. Escribir "Ecuacin a verdadera -.5x^4+4x^3-10x^2+8.5x+1"; 3. Escribir "Ingrese desde x= "; 4. Leer x1; 5. Escribir "Ingrese hasta x= "; 6. Leer x2; 7. Escribir "Ingrese la condicin inicial yo= "; 8. Leer yi; 9. Escribir "Ingrese la condicin inicial xo= "; 10. Leer xi; 11. Escribir "Ingrese el nmero de paso h= "; 12. Leer h; 13. Repetir i. f[i]=(-2*pow(a,3))+(12*pow(a,2))-(20*a)+(8.5);

ii. yexa[i]=(-0.5*pow(a,4))+(4*pow(a,3))-(10*pow(a,2))+8.5*a+1; iii. y1[i+1]=y1[i]+f[i]*h; iv. e=((yexa[i]-y1[i])/yexa[i])*100; v. a=a+h; vi. i=i+1; 14. Hasta Que (x2>=a) 15. FinProceso

Diagrama de flujo

Cdigo

// METODO DE EULER // ELABORADO POR: ISLAS DE LA TORRE SERGIO #include<cstdlib> #include<iostream> #include<iomanip> #include<string> #include <math.h> using namespace std; int main() { // declaracion de mis variables int i=0,x1=0,x2=0,yi=0,xi=0; double h=0,y[500],f[500],yexa[500],a=0,e=0; cout<<"\n\n\t\tMETODO DE EULER\n"; cout<<"\n\nEcuacion a evaluar -2x^3+12x^2-20x+8.5\n"; cout<<"\n\nEcuacion a verdadera -.5x^4+4x^3-10x^2+8.5x+1\n"; cout<<"\nIngrese el numero de inicialisacion de la integral de la ecuacion x= "; cin>>x1; // ingreso de mi variable inicial cout<<"\nIngrese el numero de finalizacion de la integral de la ecuacion x= "; cin>>x2; // ingreso de mi variable final cout<<"\nIngrese el numero de la condicion inicial yo= "; cin>>yi; // ingreso de mi condicion y cout<<"\nIngrese el numero de la condicion inicial xo= "; cin>>xi; // ingreso de mi condicion x cout<<"\nIngrese el numero de paso a tomar h= "; cin>>h; // ingreso de mi tamao de paso cout<<"\nx\t\ty(x)|verdadera\t\ty(x)|EULER\t\tEt(%)\n\n"; y[0]=yi; do // ciclo de calculos { f[i]=(-2*pow(a,3))+(12*pow(a,2))-(20*a)+(8.5); // calculo de mi funcion en el tamao de paso yexa[i]=(-0.5*pow(a,4))+(4*pow(a,3))-(10*pow(a,2))+8.5*a+1; // calculo de mi ecuacion verdadera y[i+1]=y[i]+f[i]*h; // calculo de mi ecuacion estimada con el metodo de Euler e=((yexa[i]-y[i])/yexa[i])*100; // calculo de mi error con respecto paso dado cout<<setiosflags(ios::fixed)<<a<<"\t"<<yexa[i]<<"\t\t"<<y[i]<<"\t\t"<<e<<"\n"; // imprecion de resultados a=a+h, i=i+1; // caculo de los saltos } while(x2>=a); // condicion de paso de mis calculos cout<<"\n\nELABORADO POR ISLAS DE LA TORRE SERGIO\n"<<endl; system("PAUSE"); }

Resultados

En esta imagen podemos observar como al principio del programa nos dice la ecuacin a evaluar y la original, despus pidiendo los valor a ingresar con respecto al mtodo de Euler y para finalizar una tabla con mis valores del mtodo.

Referencias http://www.cidse.itcr.ac.cr/cursos-linea/EcuacionesDiferenciales/EDO-Geo/edo-cap1geo/node14.html fecha 03/06/11 hora 00:32 http://math.uprm.edu/~josediaz/MetododeEuler.pdf fecha 03/06/11 hora 01:11

You might also like