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.
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:
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
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
>>