solucion de ecuaciones diferenciales ordinarias de segundo orden por métodos numéricos en matlab

8
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) d 2 x dt 2 μ [ 1x 2 ] dx dt +xAsin ω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) 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 1

Upload: carlos-aguilar

Post on 15-Jun-2015

8.145 views

Category:

Education


0 download

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

Page 1: Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos Numéricos en MATLAB

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

Page 2: Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos Numéricos en MATLAB

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

Page 3: Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos Numéricos en MATLAB

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

Page 4: Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos Numéricos en MATLAB

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

Page 5: Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos Numéricos en MATLAB

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

Page 6: Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos Numéricos en MATLAB

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