You are on page 1of 6

Carlos A. Aguilar A.

Control de Maquinas Elctricas

Tarea1-25/01/2012

Mtodos Numricos para la Solucin de Ecuaciones Diferenciales


A continuacin se presenta el cdigo en MATLAB con el cual es posible resolver ecuaciones
diferenciales ordinarias por los mtodos de Euler y Runge-Kutta con pasos de integracin de 0.1s,
0.01 y 0.001, para las siguientes ecuaciones:

A)

Mtodo 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)
clc
clear 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 discreto
a=0;b=20;
%Declaracion de vectores
t=a:h:b;%Vector tiempo
x1=a:h:b;
x2=a:h:b;%Primera derivada
%Condiciones iniciales y constantes dadas
u=2;A=2;w=3;%Constantes
x1(1)=2; %Condicion inicial
x2(1)=0;%Condicion inicialA
%Ciclo de iteracion para el calculo de la solucion aproximada
for n=2:((b-a)/h)+1
x1(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 on
if i==1
plot(t,x1,'r--')
end
if i==2
plot(t,x1,'k:')
end
if i==3
plot(t,x1)
end
end
%Etiquetado y leyendas en la grafica
legend('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)')

Carlos A. Aguilar A.

Control de Maquinas Elctricas

Tarea1-25/01/2012

La grafica de la solucin de A por el mtodo de Euler es la siguiente:

Mtodo 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)
clc
clear 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 discreto
a=0;b=20;
%Declaracion de vectores
t=a:h:b;
x1=a:h:b;
x2=a:h:b;
%Condiciones iniciales y constantes dadas
u=2;A=2;w=3;
x1(1)=2;

Carlos A. Aguilar A.

Control de Maquinas Elctricas

Tarea1-25/01/2012

x2(1)=0;
for n=2:((b-a)/h)+1
k1=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(n1)+(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(n1)+(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);
end
hold on
if i==1
plot(t,x1,'r--')
end
if i==2
plot(t,x1,'k:')
end
if i==3
plot(t,x1)
end
end
legend('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 solucin de A por el mtodo de Runge-Kutta es la siguiente:

Carlos A. Aguilar A.

Control de Maquinas Elctricas

B)

Tarea1-25/01/2012

Mtodo 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)
clc
clear 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 discreto
a=0;b=20;
%Declaracion de vectores
t=a:h:b;%Vector tiempo
x1=a:h:b;
x2=a:h:b;%Primera derivada
%Condiciones iniciales y constantes dadas
u=2;%Constantes
x1(1)=2; %Condicion inicial
x2(1)=0;%Condicion inicial
%Ciclo de iteracion para el calculo de la solucion aproximada
for n=2:((b-a)/h)+1
x1(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 on
if i==1
plot(t,x1,'r--')
end
if i==2
plot(t,x1,'k:')
end
if i==3
plot(t,x1)
end
end
%Etiquetado y leyendas en la grafica
legend('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)')

Carlos A. Aguilar A.

Control de Maquinas Elctricas

Tarea1-25/01/2012

La grafica de la solucin de B por el mtodo de Euler es la siguiente:

Mtodo 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)
clc
clear
% close
%Constantes dadas
u=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 discreto
a=0;b=20;
%Declaracion de vectores
t=a:h:b;

Carlos A. Aguilar A.

Control de Maquinas Elctricas

Tarea1-25/01/2012

x1=a:h:b;
x2=a:h:b;
%Condiciones iniciales
x1(1)=2;
x2(1)=0;
for n=2:((b-a)/h)+1
k1=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 on
if i==1
plot(t,x1,'r--')
end
if i==2
plot(t,x1,'k:')
end
if i==3
plot(t,x1)
end
end
legend('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 solucin de A por el mtodo de Runge-Kutta es la siguiente:

You might also like