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
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
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
Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012
4
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
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
Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-30/01/2012
7