Anda di halaman 1dari 14

OBJETIVOS

Estudiar el mtodo de Euler para encontrar soluciones a ecuaciones diferenciales


de tipo ordinarias, buscar la manera de optimizar nuestro programa para
acercarnos lo mas posible al comportamiento real de la solucin real as como
crear las respectivas graficas con distintos tamaos de paso para analizar el error
que tienen los puntos obtenidos por el mtodo con la solucin real.

MARCO TEORICO
INTRODUCCION
En este mtodo se buscara la solucin de ecuaciones diferenciales ordinarias de
la forma:

Recuerde que el mtodo fue de la forma general

o, en trminos matemticos,

De acuerdo con esta ecuacin, la pendiente estimada f se usa para extrapolar


desde un valor anterior yi a un nuevo valor yi+1 en una distancia h. Esta frmula
se aplica paso a paso para calcular un valor posterior y, por lo tanto, para trazar la
trayectoria de la solucin.

Todos los mtodos de un paso que se expresen de esta forma general, tan solo
van a diferir en la manera en la que se estima la pendiente. El procedimiento ms
simple consiste en usar la ecuacin diferencial, para estimar la pendiente, en la
forma de la primera derivada en xi . En otras palabras se toma la pendiente al
inicio del intervalo como una aproximacin de la pendiente promedio sobre todo el
intervalo. Tal procedimiento, llamado mtodo de Euler.

METODO DE EULER

La primera derivada ofrece una estimacin directa de la pendiente en xi.

donde (xi , yi ) es la ecuacin diferencial evaluada en xi y yi . La estimacin se


sustituye en la ecuacin.

Esta frmula se conoce como mtodo de Euler (o de Euler-Cauchy o de punto


pendiente ). Se predice un nuevo valor de y usando la pendiente (igual a la
primera derivada en el valor original de x ) para extrapolar linealmente sobre el
tamao de paso h.
ANLISIS DEL ERROR PARA EL MTODO DE EULER

La solucin numrica de las EDO implica dos tipos de error:

1.Errores de truncamiento , o de discretizacin, originados por la naturaleza de las


tcnicas empleadas para aproximar los valores de y .
2. Errores de redondeo , causados por el nmero limitado de cifras significativas
que una computadora puede retener.

Los errores de truncamiento se componen de dos partes. La primera es un error


de truncamiento local que resulta de una aplicacin del mtodo considerado, en
un solo paso. La segunda es un error de truncamiento propagado que resulta de
las aproximaciones producidas durante los pasos previos. La suma de los dos es
el error de truncamiento global o total.

Al adquirir cierta comprensin de la magnitud y de las propiedades del error de


truncamiento, puede desarrollarse el mtodo de Euler directamente de la
expansin de la serie de Taylor. Para ello, observe que la ecuacin diferencial que
se va a integrar ser de la forma general:

donde y = dy /dx , x y y son las variables independiente y dependiente,


respectivamente. Si la solucin (es decir, la funcin que describe el
comportamiento de y tiene derivadas continuas, se representa por una expansin
de la serie de Taylor respecto a un valor inicial (xi , yi ), como sigue:

donde h = xi+1 xi y Rn = trmino remanente, definido como

donde esta en algn lugar en el intervalo de xi a xi+1 . Es posible desarrollar


una forma alternativa:

donde O (hn+1 ) especifica que el error de truncamiento local es proporcional al


tamao de paso elevado a la potencia (n + 1). Al comparar las ecuaciones (25.2)
y (25.6), se advierte que el mtodo de Euler corresponde a la serie de Taylor,
hasta el trmino (xi , yi )h inclusive. Adems, la comparacin indica que el error
de truncamiento se debe a que aproximamos la solucin verdadera mediante un
nmero finito de trminos de la serie de Taylor. AsI, truncamos, o dejamos fuera,
una parte de la solucin verdadera. Por ejemplo, el error de truncamiento en el
mtodo de Euler se atribuye a los trminos remanentes en la expansin de la
serie de Taylor,

donde Et= error de truncamiento local verdadero. Para h suficientemente pequea,


los errores en los trminos de la ecuacin normalmente disminuyen, en tanto
aumenta el orden y el resultado se representa como:

donde Ea= error de truncamiento local aproximado.

De acuerdo con la ecuacin, se advierte que el error local es proporcional al


cuadrado del tamao de paso y a la primera derivada de la ecuacin diferencial.
Tambin se puede demostrar que el error de truncamiento global es O (h ); es
decir, es proporcional al tamao de paso (Carnahan y colaboradores,1969). Estas
observaciones permiten establecer las siguientes conclusiones tiles:

1. Se puede reducir el error disminuyendo el tamao del paso.


2. El mtodo dar como resultado predicciones sin error si la funcin que se
analiza (es decir, la solucin de la ecuacin diferencial) es lineal, debido a que en
una lnea recta la segunda derivada es cero.

Esta ultima conclusin tiene un sentido intuitivo, puesto que el mtodo de Euler
usa segmentos de lnea recta para aproximar la solucin. De ah que al mtodo de
Euler se le conozca como un mtodo de primer orden.

Tambin deber. observarse que este patrn general rige a los mtodos de orden
superior de un paso, que se describen en las siguientes pginas. Es decir, un
mtodo de n esimo. orden dar resultados perfectos si la solucin de la EDO es
un polinomio de n esimo grado. Adems, el error de truncamiento local ser. O
(hn+1 ); y el error global, O (hn ).
EJEMPLO RESUELTO

Con el mtodo de Euler resuelva numricamente:


dy
=2 x 3+ 12 x 220 x+ 8.5
dx
De X=0 hasta X=4, con un tamao de paso de 0.5 (h=0.5) y la condicin inicial de
que x = 0 es y = 1.

La solucin exacta esta dada por:


y=0.5 x 4 +4 x3 10 x 2 +8.5 x+ 1
Solucin:

Y verdaderas:
4 3 2
y 0= y ( x 0 )=0.5( 0) +4 (0) 10 ( 0 ) +8.5(0)+1=1
y 1= y ( x 1) =0.5(0.5)4 + 4(0.5)3 10 ( 0.5 )2+ 8.5(0)+1=3.21875
y 2= y ( x 2 )=0.5(1)4 + 4(1)310 ( 1 )2+ 8.5(1)+1=3
4 3 2
y 3= y ( x 3 )=0.5(1.5) + 4(1.5) 10 ( 1.5 ) +8.5 (1.5)+1=2.21875
y 4 = y ( x 4 )=0.5(2)4 + 4( 2)310 ( 2 )2 +8.5(2)+1=2
y 5= y ( x 5 )=0.5(2.5)4 + 4 (2.5)3 10 (2.5 )2+ 8.5(2.5)+ 1=2.71875
y 6= y ( x 6 )=0.5( 3) 4 +4 (3)310 ( 3 )2 +8.5(3)+1=4
y 7= y ( x 7 )=0.5(3.5)4 + 4 (3.5)3 10 ( 3.5 )2+ 8.5(3.5)+ 1=4.71875
4 3 2
y 8= y ( x 8 )=0.5( 4) + 4 (4) 10 ( 4 ) +8.5(4)+1=3

Y Euler:
y 0= y ( x 0 )= y ( 0 ) =1
i=0
y 1= y o + f ( x0 , y 0 ) h
3 2
f ( x 0 , y 0 )=f ( 0,1 )=2 ( 0 ) +12 ( 0 ) 20 ( 0 )+ 8.5=8.5
y 1=1+ ( 8.5 ) ( 0.5 )
y 1=5.25
i=1
y 2= y 1 +f ( x 1 , y 1 ) h
f ( x 1 , y 1 ) =f ( 0.5,5 .25 )=2 ( 0.5 )3 +12 ( 0.5 )220 ( 0.5 ) +8.5=1.25
y 2=5.25+ ( 1.25 ) ( 0.5 )
y 2=5.875
i=2
y 3= y 2 + f ( x 2 , y 2) h
f ( x 2 , y 2 ) =f ( 1,5.875 )=2 ( 1 )3+ 12 ( 1 )220 ( 1 ) +8.5=1.5
y 1=5.875+ (1.5 ) ( 0.5 )
y 3=5.125
i=3
y 4 = y 3+ f ( x 3 , y 3 ) h
f ( x 3 , y 3 ) =f ( 1.5,5 .125 )=2 ( 1.5 )3+ 12 ( 1.5 )220 ( 1.5 )+ 8.5=1.25
y 4 =5.125+ (1.25 )( 0.5 )
y 4 =4.5
i=4
y 5= y 4 + f ( x 4 , y 4 ) h
f ( x 4 , y 4 ) =f ( 2,4.5 ) =2 ( 2 )3 +12 (2 )2 20 ( 2 )+ 8.5=0.5
y 5=4.5+ ( 0.5 ) ( 0.5 )
y 5=4.75
i=5
y 6= y 5 + f ( x5 , y 5 ) h
f ( x 5 , y 5 ) =f ( 2.5,4 .75 )=2 ( 2.5 )3 +12 ( 2.5 )220 ( 2.5 ) +8.5=2.25
y 6=4.75+ ( 2.25 ) ( 0.5 )
y 6=5.875
i=6
y 7= y 6 + f ( x 6 , y 6 ) h
3 2
f ( x 6 , y 6 )=f (3,5.875 )=2 ( 3 ) +12 ( 3 ) 20 ( 3 ) +8.5=2.5
y 6=5.875+ ( 2.5 )( 0.5 )
y 7=7.125
i=7
y 8= y 7 + f ( x7 , y 7 ) h
f ( x 7 , y7 )=f ( 3.5,7 .125 ) =2 ( 3.5 )3 +12 ( 3.5 )220 ( 3.5 ) +8.5=0.25
y 6=7.125+ (0.25 ) ( 0.5 )
y 8=7
Porcentaje de error:

11
( 100 ) =0
1
3.218755.25
( 100 )=63.106796
3.21875
35.875
( 100 )=95.833336
3
2.2187535.125
( 100 )=130.985916
2.21875
24.5
( 100 )=125
2
2.718754.75
( 100 )=74.712646
2.71875
45.875
( 100 )=46.875
4
4.718757.125
( 100 )=50.993378
4.71875
37
(100 )=133.333328
3

Y obtenemos los siguientes datos:

X Yv Ye Ea
0 1 1 0
0.5 3.21875 5.25 63.106796
1 3 5.875 95.833336
1.5 2.21875 5.125 130.985916
2 2 4.5 125
2.5 2.71875 4.75 74.712646
3 4 5.875 46.875
3.5 4.71875 7.125 50.993378
4 3 7 133.333328

Y grficamente obtenemos:

0
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5
siendo:
serie 1= Y verdadera.
serie2= Y calculada por Euler.

PSEUDOCODIGO
Inicio
Dobles Y[50000],X[[50000],Ye[50000],F[50000],Et[50000].
Doble X,h,n.
Entero i;
Pedir X[0] y Y[0].
Pedir X ultima y h.
Asignar X[0],Y[0],X,h;
Obtenemos el numero de iteraciones
N=(X-X[0])/h;
Para i=0; i menor o igual a n; aumentar i en 1;
{
X[i+1]=X[i]+h;
f[i]=2*-(pow(X[i],3))+(12*(pow(X[i],2)))-(20*X[i])+8.5;
Ye[i+1]=Ye[i]+(f[i]*h);
Y[i]=-(0.5*pow(X[i],4))+(4*pow(X[i],3))-(10*pow(X[i],2))+(8.5*X[i])+1
Et[i]=fabs((Y[i]-Ye[i])/Y[i])*100;
Imprimir X[i],Y[i],Ye[i] y Et[i];
}
Fin
euler::euler() void euler::tabla()
int i;

Diagramas UML
euler
euler();
void calculos();
void tabla();
*float a,b;
*double
Ye[40001];
*double
Y[40001];
*double
X[40001];
*double P;
*double x;
*double h;
*double n;

void
euler::calculos()
int i;
double
Et[40001];
double
f[40001];
CODIGO
/*METODO DE EULER*/
/*MARIO ALBERTO SEYDLITZ RIVERA
PRACTICA 11
3EM1*/
#include <cstdlib>
#include <iostream>
#include <math.h>
#include <iomanip>
#include <stdio.h>
#include <conio.h>
using namespace std;
FILE*fid;

class euler
{
public:
euler();
void calculos();
void tabla();
private: /*asignamos un vector a Yverdadera Yde euler y X*/
double Ye[40001];
double Y[40001];
double X[40001];
double P;
double x;
double h;
double n;
};

euler::euler()/*en el constructor pedimos los valores de la x0,y0,la altura y hasta donde queremos
que llegue x*/
{
cout<<"\ndame tus condiciones iniciales:\t";
cout<<"\n dame X0=\t";
cin>>X[0];
cout<<"\n dame el valor de h:\t";
cin>>h;
cout<<"\n dame el valor de y en Y0=\t";
cin>>P;
cout<<"\n hasta que valor de X quieres llegar?\t";
cin>>x;
}

void euler::tabla()
{
int i;
fid=fopen("Tabla2.xls","w");/*creamos nuestra hoja de calculo*/
for (i=0;i<=n;i++)
{
fprintf(fid,"%f\t %f\t %f\n",X[i],Y[i],Ye[i]); /*imprimimos datos en nuestra hoja de calculo*/
}
fclose(fid); *cerramos el archivo*/
}
void euler::calculos()
{
int i;
double Et[40001];
double f[40001];
n=(x-X[0])/h; /*obtenemos el numero de veces que se debe iterar para llegar a la x final*/
for(i=0;i<=n;i++)
{
X[i+1]=X[i]+h; /*se asignan valores a x*/
f[i]=2*-(pow(X[i],3))+(12*(pow(X[i],2)))-(20*X[i])+8.5;
Ye[0]=P;
Ye[i+1]=Ye[i]+(f[i]*h); /*aplicando el metodo de euler*/
Y[i]=-(0.5*pow(X[i],4))+(4*pow(X[i],3))-(10*pow(X[i],2))+(8.5*X[i])+1; *obtenemos el valor de la
Y verdadera*/
Et[i]=fabs((Y[i]-Ye[i])/Y[i])*100; *se calcula el error relativo porcentual*/
cout<<"\n X\t\t"<<"Yverdadera\t"<<"Yeuler\t\t et \n";
cout<<X[i]<<"\t"<<Y[i]<<"\t"<<Ye[i]<<"\t"<<Et[i]<<endl; /*se imprimen resultados*/
}
}
int main()
{
cout<<"\n metodo de euler:";
cout<<"\n la ecuacion diferencial es:\t";
cout<<"n dy/dx=-2x3+12x2-20x+8.5\n";
cout<<setprecision(6)<<fixed;
euler E;
E.calculos();
E.tabla();
return 0;
}
RESULTADOS

Como podemos ver se presentan las incgnitas necesarias para la solucin de


esta ecuacin diferencial, en el ejemplo se utilizo una altura con una magnitud baja
para poder analizar mejor el ejercicio.
En la pantalla se imprimen los valores de cada X, su respectivo valor con respecto
a la solucin verdadera de la ecuacin y el valor obtenido por el mtodo asi como
el error relativo respectivo, cuando las alturas que se dan al programa son muy
pequeas las soluciones ocasionan que la longitud de la pantalla se haga muy
extensa.

Al terminar de ejecutar nuestro programa creamos una hoja de calculo. En esta


imagen se muestran varias hojas de calculo debido a que es muy fcil cambiar el
nombre de la hoja de calculo a crear y se genera un archivo distinto por cada
corrida.


Al abrir nuestra hoja de calculo se quedan guardados todos los datos de lo que
son nuestros valores en X, Y verdadera y Y Euler.

Utilizando Excel graficamos los valores obtenidos para crear dos curvas una la
cual es nuestra curva obtenida se representa mediante la unin de rectas en cada
punto y la otra es la solucin verdadera la cual simplemente se grafica con una
curva.

CONCLUSIONES

Bello cabrera Ricardo Enrique


Con esta prctica aprend a calcular el valor de una ecuacin
deferencial, este mtodo es bueno, ya que no tiene complicaciones a la
hora de calcular, pero su facilidad tiene una desventaja, su porcentaje
de error verdadero es muy drstico, o en otras palabras, no es ptimo.
Es cuestin de la programacin es muy sencillo, solo bastan unas
cuantas lneas para hacer dicho procedimiento.

Jennyfer isidro flores


Es un buen mtodo para resolver ecuaciones, solo que se puede volver
complicado al momento de hacer los clculos ya que si te equivocas ese
error se ira arrastrando y ya no se obtendr el resultado que se busca.
Es un mtodo efectivo y entre ms pequeos sean los segmentos
tendremos una mejor exactitud.
BIBLIOGRAFIA:
METODOS NUMERICOS PARA INGENIEROS
Steven C. Chapra, Ph.D.
Sexta edicin

Anda mungkin juga menyukai