solución de ecuaciones diferenciales ordinarias por los métodos de euler, runge-kutta 4 y la...

8
Carlos A. Aguilar A.Control de Maquinas Eléctricas Tarea1- 30/01/2012 Métodos Numéricos para la Solución de Ecuaciones Diferenciales Método de Euler El método de Euler, es un procedimiento numérico de primer orden para resolver ecuaciones diferenciales ordinarias con un valor inicial dado. Es el más básico de los métodos explícitos para la integración numérica de ecuaciones diferenciales ordinarias, y es la forma más simple del método de Runge-Kutta Busca aproximar la solución del problema de valor inicial, usando los dos primeros términos de la expansión de Taylor de la función y, basándose en el estimado del próximo valor de y después de un tiempo de integración o paso de integración h. Método de Runge-Kutta Procedimiento numérico que, al igual que el de Euler, sirve para resolver ecuaciones diferenciales ordinarias con un valor inicial dado. Sea un problema de valor inicial La solución de este problema está dada por donde y n + 1 es la aproximación de y ( t n + 1 ) , y 1

Upload: carlos-aguilar

Post on 25-Jun-2015

11.298 views

Category:

Education


1 download

DESCRIPTION

En este documento se comparan los métodos de Euler, Runge-Kutta 4 y la función ODE45 de MATLAB para la solución aproximada de ecuaciones diferenciales ordinarias con distintos pasos de integración.

TRANSCRIPT

Page 1: Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Runge-Kutta 4 y la Función de MATLAB ODE45 (Comparativa)

Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012

Métodos Numéricos para la Solución de Ecuaciones Diferenciales

Método de Euler

El método de Euler, es un procedimiento numérico de primer orden para resolver ecuaciones diferenciales ordinarias con un valor inicial dado. Es el más básico de los métodos explícitos para la integración numérica de ecuaciones diferenciales ordinarias, y es la forma más simple del método de Runge-Kutta

Busca aproximar la solución del problema de valor inicial, usando los dos primeros términos de la expansión de Taylor de la función y , basándose en el estimado del próximo valor de y después de un tiempo de integración o paso de integraciónh.

Método de Runge-Kutta

Procedimiento numérico que, al igual que el de Euler, sirve para resolver ecuaciones diferenciales ordinarias con un valor inicial dado.

Sea un problema de valor inicial

La solución de este problema está dada por

donde yn + 1 es la aproximación de y(tn + 1), y

1

Page 2: Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Runge-Kutta 4 y la Función de MATLAB ODE45 (Comparativa)

Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012

A continuación se presenta el código en MATLAB con el cual es posible resolver por los métodos de Euler, Runge-Kutta y la función ODE45 con pasos de integración de 0.1, 0.01 y 0.001 la siguiente

ecuación: A) d2 xdt2

−μ [1−x2 ] dxdt

+x−Asinωt=0

Código para la solución de la ecuación “A” por los métodos de Euler, Runge-Kutta 4 y la función ODE45.

Nota: Esta función (las siguientes 2 líneas de código) se debe escribir en un m-file aparte y nombrarlo “vdp2.m”, el cual se debe encontrar en la misma carpeta que el otro m-file con el resto del programa.

function x = vdp(t,y)x=[y(2); 2*(1-y(1)^2)*y(2)-y(1)+2*sin(3*t)];

clcclear all%Propiedades del analisis discretoa=0;b=20;h=0.01; %Variar el paso e intervalo de integracion aqui%Declaracion de vectorest=a:h:b;x1=a:h:b;x2=a:h:b;%Condiciones iniciales y constantes dadasu=2;A=2;w=3;x1(1)=2;x2(1)=0;%Calculo de la solucion aproximada por el metodo de Eulerfor n=2:((b-a)/h)+1x1(n)=x1(n-1)+h*(x2(n-1));x2(n)=x2(n-1)+h*(u*(1-x1(n-1)^2)*x2(n-1)-x1(n-1)+A*sin(w*t(n-1)));endhold onplot(t,x1,'r--')%Calculo de la solucion aproximada por el metodo de Runge-Kutta 4for n=2:((b-a)/h)+1k1=h*x2(n-1);l1=h*[u*(1-x1(n-1)^2)*x2(n-1)-x1(n-1)+A*sin(w*t(n-1))];k2=h*(x2(n-1)+(1/2)*l1);l2=h*[u*(1-(x1(n-1)+(1/2)*k1)^2)*(x2(n-1)+(1/2)*l1)-(x1(n-1)+(1/2)*k1)+A*sin(w*(t(n-1)+(1/2)*h))];k3=h*[x2(n-1)+(1/2)*l2];l3=h*[u*(1-(x1(n-1)+(1/2)*k2)^2)*(x2(n-1)+(1/2)*l2)-(x1(n-1)+(1/2)*k2)+A*sin(w*(t(n-1)+(1/2)*h))];k4=h*(x2(n-1)+l3);l4=h*[u*(1-(x1(n-1)+k3)^2)*(x2(n-1)+l3)-(x1(n-1)+k3)+A*sin(w*(t(n-1)+h))];x1(n)=x1(n-1)+(1/6)*(k1+2*k2+2*k3+k4);x2(n)=x2(n-1)+(1/6)*(l1+2*l2+2*l3+l4);endplot(t,x1,'k:')%Calculo de la solucion aproximada usando la funcion ODE45 que corresponde%al me metodo de Runge-Kutta(4,5) de paso adaptativo options = odeset('InitialStep',h,'MaxStep',h);[t,y] = ode45(@vdp,[a,b],[x1(1); x2(1)],options);plot(t,y(:,1))%Etiquetado y leyendas en la graficalegend('Euler','RK4','ODE45')title(['SOLUCION APROXIMADA DE LA ECUACION "A" h=',num2str(h),' seg'])xlabel('TIEMPO(t)')ylabel('SOLUCION(x)')

2

Page 3: Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Runge-Kutta 4 y la Función de MATLAB ODE45 (Comparativa)

Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012

Graficas de la solución de “A” por los métodos de Euler, Runge-Kutta 4 y la función ODE45 para distintos pasos de integración:

3

Page 4: Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Runge-Kutta 4 y la Función de MATLAB ODE45 (Comparativa)

Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012

4

Page 5: Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Runge-Kutta 4 y la Función de MATLAB ODE45 (Comparativa)

Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012

A continuación se presenta el código en MATLAB con el cual es posible resolver por los métodos de Euler, Runge-Kutta y la función ODE45 con pasos de integración de 0.1, 0.01 y 0.001 la siguiente

ecuación: B) d2 xdt2

−μ [1−x2 ] dxdt

+x=0

Código para la solución de la ecuación “B” por los métodos de Euler, Runge-Kutta 4 y la función ODE45.

Nota: Esta función (las siguientes 2 líneas de código) se debe escribir en un m-file aparte y nombrarlo “vdp2.m”, el cual se debe encontrar en la misma carpeta que el otro m-file con el resto del programa.

function x = vdp2(t,y)x=[y(2); 2*(1-y(1)^2)*y(2)-y(1)];

clcclear all%Propiedades del analisis discretoa=0;b=20;h=0.1; %Variar el paso e intervalo de integracion aqui%Declaracion de vectorest=a:h:b;x1=a:h:b;x2=a:h:b;%Condiciones iniciales y constantes dadasu=2;A=2;w=3;x1(1)=2;x2(1)=0;%Calculo de la solucion aproximada por el metodo de Eulerfor n=2:((b-a)/h)+1x1(n)=x1(n-1)+h*(x2(n-1));x2(n)=x2(n-1)+h*(u*(1-x1(n-1)^2)*x2(n-1)-x1(n-1));endhold onplot(t,x1,'r--')%Calculo de la solucion aproximada por el metodo de Runge-Kutta 4for n=2:((b-a)/h)+1k1=h*x2(n-1);l1=h*[u*(1-x1(n-1)^2)*x2(n-1)-x1(n-1)];k2=h*(x2(n-1)+(1/2)*l1);l2=h*[u*(1-(x1(n-1)+(1/2)*k1)^2)*(x2(n-1)+(1/2)*l1)-(x1(n-1)+(1/2)*k1)];k3=h*[x2(n-1)+(1/2)*l2];l3=h*[u*(1-(x1(n-1)+(1/2)*k2)^2)*(x2(n-1)+(1/2)*l2)-(x1(n-1)+(1/2)*k2)];k4=h*(x2(n-1)+l3);l4=h*[u*(1-(x1(n-1)+k3)^2)*(x2(n-1)+l3)-(x1(n-1)+k3)];x1(n)=x1(n-1)+(1/6)*(k1+2*k2+2*k3+k4);x2(n)=x2(n-1)+(1/6)*(l1+2*l2+2*l3+l4);endplot(t,x1,'k:')%Calculo de la solucion aproximada usando la funcion ODE45 que corresponde%al me metodo de Runge-Kutta(4,5) de paso adaptativo options = odeset('InitialStep',h,'MaxStep',h);[t,y] = ode45(@vdp2,[a,b],[x1(1); x2(1)],options);plot(t,y(:,1)) %Etiquetado y leyendas en la graficalegend('Euler','RK4','ODE45')title(['SOLUCION APROXIMADA DE LA ECUACION "B" h=',num2str(h),' seg'])xlabel('TIEMPO(t)')ylabel('SOLUCION(x)')

5

Page 6: Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Runge-Kutta 4 y la Función de MATLAB ODE45 (Comparativa)

Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012

Graficas de la solución de “B” por los métodos de Euler, Runge-Kutta 4 y la función ODE45 para distintos pasos de integración:

6

Page 7: Solución de Ecuaciones Diferenciales Ordinarias por los Métodos de Euler, Runge-Kutta 4 y la Función de MATLAB ODE45 (Comparativa)

Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012

7