MatLabMorena

viernes, 11 de abril de 2008

Método de Euler

La idea del método de Euler es muy sencilla y está basada en el significado geométrico de la derivada de una función en un punto dado.
Supongamos que tuviéramos la curva solución de la ecuación diferencial y trazamos la recta tangente a la curva en el punto dado por la condición 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

como una aproximación al valor deseado


Así, calculemos la ecuación de la recta tangente a la curva solución de la ecuación diferencial dada en el punto
De los cursos de Geometría Analítica, sabemos que la ecuación de la recta es:

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 ecuación de la recta tangente es :
Ahora bien, suponemos que es un punto cercano a y por lo tanto estará dado como
De esta forma, tenemos la siguiente aproximación:

De aquí, tenemos nuestra fórmula de aproximación:

Esta aproximación puede ser suficientemente buena, si el valor de h es realmente pequeño, digamos de una décima ó menos. Pero si el valor de h es más grande, entonces podemos cometer mucho error al aplicar dicha fórmula. Una forma de reducir el error y obtener de hecho un método iterativo, es dividir la distancia
en n partes iguales(procurando que estas partes sean de longitud suficientemente pequeña) y obtener entonces la aproximación en n pasos, aplicando la fórmula anterior n veces de un paso a otro, con la nueva h igual a
En una gráfica, tenemos lo siguiente:

Ahora bien, sabemos que: Para obtener únicamente hay que pensar que ahora el papel de lo toma el punto y por lo tanto, si sustituímos los datos adecuadamente, obtendremos que:

De aquí se ve claramente que la fórmula recursiva general, está dada por:

Esta es la conocida fórmula de Euler que se usa para aproximar el valor de

aplicándola sucesivamente desde
hasta

en pasos de longitud h.












Programa en matlab del método de Euler

function f
fprintf('\n \tRESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO METODO DE EULER\n')
f=input('\nIngrese la ecuacion diferencial de la forma: dy/dx=f(x,y)\n','s');
x0=input('\nIngrese el primer punto x0:\n');
x1=input('\nIngrese el segundo punto x1:\n');
y0=input('\nIngrese la condicion inicial y(x0):\n');
n=input('\nIngrese el numero de pasos n:\n');
h=(x1-x0)/n;
xs=x0:h:x1;
y1=y0;
fprintf('\n''it x0 x1 y1');
for i=1:n
it=i-1;
x0=xs(i);
x=x0;
x1=xs(i+1);
y=y0;
y1=y0+h*eval(f);
fprintf('\n%2.0f%10.6f%10.6f%10.6f\n',it,x0,x1,y1);
y0=y1;
end
fprintf('\n El punto aproximado y(x1) es = %10.6f\n',y1);


Solución
Respuesta

>> euler

RESOLUCION DE ECUACIONES DIFERENCIALES POR MEDIO METODO DE EULER

Ingrese la ecuacion diferencial de la forma: dy/dx=f(x,y)
sqrt(x^2+y^2)

Ingrese el primer punto x0:
2

Ingrese el segundo punto x1:
2.3

Ingrese la condicion inicial y(x0):
0.5

Ingrese el numero de pasos n:
3

'it x0 x1 y1
0 2.000000 2.100000 0.706155

1 2.100000 2.200000 0.927710

2 2.200000 2.300000 1.166470

El punto aproximado y(x1) es = 1.166470
>>

10 comentarios:

Juan Mauricio Muñoz Flores dijo...

te discutes ^-^

royert mateo dijo...
Este comentario ha sido eliminado por el autor.
royert mateo dijo...
Este comentario ha sido eliminado por el autor.
royert mateo dijo...
Este comentario ha sido eliminado por el autor.
royert mateo dijo...

no me dan las ultimas respuestas falta alguna linea de codigo ?

royert mateo dijo...

no me dan los ultimos resultados falta alguna linea de codigo

royert mateo dijo...

no me dan los ultimos resultados falta alguna linea de codigo

royert mateo dijo...

no me dan los ultimos resultados falta alguna linea de codigo

GERARDO DANIEL AGUILAR JUAREZ dijo...

No mames! Te amo! jajajaja

Lady Livia dijo...

Si quisiera aplicar este mismo codigo a la ecuacion dy/dx = yx^3 -1.1y con h siendo .25 como seria? ya que lo aplico igual y ocurre error en la linea 18 y1=y0+h*eval(f); . que error podra ser?