solucion de ecuaciones diferenciales ordinarias de segundo orden por métodos numéricos en matlab
DESCRIPTION
Este documento presenta los códigos para la soluciones de ecuaciones diferenciales Ordinarias de Segundo Orden por métodos numéricos en MATLAB. Los métodos numéricos utilizados fueron el de EULER y el de RUNGE-KUTTA de orden 4. Las ODEs resueltas en este ejemplo corresponden a un par de ecuaciones diferenciales de los osciladores de Van Der Pol.TRANSCRIPT
Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-25/01/2012
Métodos Numéricos para la Solución de Ecuaciones Diferenciales
A continuación se presenta el código en MATLAB con el cual es posible resolver ecuaciones diferenciales ordinarias por los métodos de Euler y Runge-Kutta con pasos de integración de 0.1s, 0.01 y 0.001, para las siguientes ecuaciones:
A) d2 xdt2
−μ [1−x2 ] dxdt
+x−Asinωt=0
Método de Euler para ED de Segundo Orden “A”
%Resolver por metodos numericos la siguiente ecuacion diferencial% x''-u*[1-x^2]*x'+x=0 %Metodo de Euler para ED de Segundo Orden%f(y,t)=y'(y,t) y(0)=y0%y(t+1)=y(t)+h*f(x,t)clcclear all for i=1:3 if i==1 %Paso de integracion h=0.1 h=0.1; end if i==2 %Paso de integracion h=0.01 h=0.01; end if i==3 %Paso de integracion h=0.001 h=0.001; end%Propiedades del analisis discretoa=0;b=20;%Declaracion de vectorest=a:h:b;%Vector tiempox1=a:h:b;x2=a:h:b;%Primera derivada%Condiciones iniciales y constantes dadasu=2;A=2;w=3;%Constantesx1(1)=2; %Condicion inicialx2(1)=0;%Condicion inicialA%Ciclo de iteracion para el calculo de la solucion aproximadafor 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)));end%Codigo para el graficado con lineas diferentes para cada valor de "h"hold onif i==1plot(t,x1,'r--')endif i==2plot(t,x1,'k:')endif i==3plot(t,x1)endend%Etiquetado y leyendas en la graficalegend('h=0.1','h=0.01','h=0.001')Title('Metodo de Euler para Resolver EDO de Segundo Orden')xlabel('Tiempo(t)')ylabel('Solucion(x)')
1
Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-25/01/2012
La grafica de la solución de “A” por el método de Euler es la siguiente:
Método de Runge-Kutta para ED de Segundo Orden “A”
%Metodo de Runge-Kutta para ED de Segundo Orden%x''=f(x,x',t)%Con condiciones iniciales x(t0)=x0 x'(t0)=x'(0)%k1=h*x' l1=h*f(x,x',t)%k2=h*(x'+(1/2)l1) l2=h*f(x+(1/2)k1, x'+(1/2)l1, t+(1/2)h)%k3=h*(x'+(1/2)l2) l3=h*f(x+(1/2)k2, x'+(1/2)l2, t+(1/2)h)%k4=h*(x'+l3) l4=h*f(x+k3, x'+l3, t+h)%%x(t+h)=x+(1/6)(k1+2k2+2k3+k4) x'(t+h)=x'+(1/6)(l1+2l2+2l3+l4)clcclear allfor i=1:3 if i==1 %Paso de integracion h=0.1 h=0.1; end if i==2 %Paso de integracion h=0.01 h=0.01; end if i==3 %Paso de integracion h=0.001 h=0.001; end%Propiedades del analisis discretoa=0;b=20;%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;
2
Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-25/01/2012
x2(1)=0;for 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);endhold onif i==1plot(t,x1,'r--')endif i==2plot(t,x1,'k:')endif i==3plot(t,x1)endendlegend('h=0.1','h=0.01','h=0.001')Title('Metodo de Runge-Kutta para Resolver EDO de Segundo Orden')xlabel('Tiempo(t)')ylabel('Solucion(x)')
La grafica de la solución de “A” por el método de Runge-Kutta es la siguiente:
3
Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-25/01/2012
B) d2 xdt2
−μ [1−x2 ] dxdt
+x=0
Método de Euler para ED de Segundo Orden “B”
%Metodo de Euler para ED de Segundo Orden%f(y,t)=y'(y,t) y(0)=y0%y(t+1)=y(t)+h*f(x,t)clcclear all for i=1:3 if i==1 %Paso de integracion h=0.1 h=0.1; end if i==2 %Paso de integracion h=0.01 h=0.01; end if i==3 %Paso de integracion h=0.001 h=0.001; end%Propiedades del analisis discretoa=0;b=20;%Declaracion de vectorest=a:h:b;%Vector tiempox1=a:h:b;x2=a:h:b;%Primera derivada%Condiciones iniciales y constantes dadasu=2;%Constantesx1(1)=2; %Condicion inicialx2(1)=0;%Condicion inicial%Ciclo de iteracion para el calculo de la solucion aproximadafor 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));end%Codigo para el graficado con lineas diferentes para cada valor de "h"hold onif i==1plot(t,x1,'r--')endif i==2plot(t,x1,'k:')endif i==3plot(t,x1)endend%Etiquetado y leyendas en la graficalegend('h=0.1','h=0.01','h=0.001')Title('Metodo de Euler para Resolver EDO de Segundo Orden')xlabel('Tiempo(t)')ylabel('Solucion(x)')
4
Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-25/01/2012
La grafica de la solución de “B” por el método de Euler es la siguiente:
Método de Runge-Kutta para ED de Segundo Orden “B”
%Metodo de Runge-Kutta para ED de Segundo Orden%x''=f(x,x',t)%Con condiciones iniciales x(t0)=x0 x'(t0)=x'(0)%k1=h*x' l1=h*f(x,x',t)%k2=h*(x'+(1/2)l1) l2=h*f(x+(1/2)k1, x'+(1/2)l1, t+(1/2)h)%k3=h*(x'+(1/2)l2) l3=h*f(x+(1/2)k2, x'+(1/2)l2, t+(1/2)h)%k4=h*(x'+l3) l4=h*f(x+k3, x'+l3, t+h)%%x(t+h)=x+(1/6)(k1+2k2+2k3+k4) x'(t+h)=x'+(1/6)(l1+2l2+2l3+l4) clcclear% close%Constantes dadasu=2;A=2;w=3; for i=1:3 if i==1 %Paso de integracion de 0.1 h=0.1; end if i==2 %Paso de integracion de 0.01 h=0.01; end if i==3 %Paso de integracion de 0.001 h=0.001; end%Propiedades del analisis discretoa=0;b=20;%Declaracion de vectorest=a:h:b;
5
Carlos A. Aguilar A. Control de Maquinas Eléctricas Tarea1-25/01/2012
x1=a:h:b;x2=a:h:b;%Condiciones inicialesx1(1)=2; x2(1)=0;for 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);end hold onif i==1plot(t,x1,'r--')endif i==2plot(t,x1,'k:')endif i==3plot(t,x1)end endlegend('h=0.1','h=0.01','h=0.001')Title('Metodo de Runge-Kutta para Resolver EDO de Segundo Orden')xlabel('Tiempo(t)')ylabel('Solucion(x)')
La grafica de la solución de “A” por el método de Runge-Kutta es la siguiente:
6