Ecuaciones Diferenciales Ordinarias en MatLab

  Trabajo  Final  Ecuaciones  Diferenciales   Ordinarias   Seminario  de  Ecuaciones  Diferenciales  Ordinarias   Facun

Views 161 Downloads 3 File size 1MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

 

Trabajo  Final  Ecuaciones  Diferenciales   Ordinarias   Seminario  de  Ecuaciones  Diferenciales  Ordinarias   Facundo  Ramón  

RESUMEN   Resolución  de  un  sistema  de  ecuaciones  diferenciales  de  primer  orden  por   método  de  Runge  Kutta  de  4to  orden  con  Software  MatLab  R2010a                        

 

        Universidad  Nacional  de  Tres  de  Febrero   Ingeniería  de  Sonido   2do  Cuatrimestre  2011  

 

Seminario  Ecuaciones  Diferenciales  Ordinarias  

Ramón  Facundo  

Objetivo   El   objetivo   del   trabajo   es   obtener   el   valor   de   las   funciones  !! (!)  e  !! (!)  en  ! = 0.5   partiendo   del   siguiente   sistema   de   ecuaciones   diferenciales   ordinarias   de   primer   orden  con  valores  iniciales.     !!! ! = −20!! + 10!! + 100 !"   !!! ! = 10!! − 20!! !"   !! 0 = !! 0 = 0   (1)   Que  responde  al  comportamiento  de  la  corriente  del  siguiente  circuito.    

E=100[v],  R=10[Ω]  y  L=1[h].  

Desarrollo  del  código  

Se   utlizó   el   método   Runge   Kutta   de   4to   orden.   Primero   se   realizó   un   código   simple   con   un   único   loop for   que   resuelve   el   sistema   y   luego   se   lo   comparó   con   la   función  ODE45  de  la  librería  de  MatLab.   El   primer   código   define   en   la   variable   h   el   paso   de   la   discretización,   y   luego   define   el   valor   inicial   de   los   vectores   i1   e   i3   según   la   información   del   enunciado.     Los   vectores  i1  e  i3  serán  los  valores  de  la  corriente  en  función  del  tiempo  al  finalizar   el  algoritmo.  Posteriormente,  ingresa  en  un  loop  for  en  el  que  se  calculan  los  k1,   k2,  k3  y  k4  de  las  funciones  i1  e  i3,  y  se  obtiene  el  siguiente  valor  de  i1  e  i3,   habiendo   dado   saltos   definidos   por   h.   De   esta   manera,   a   medida   que   el   loop for   avanza   se   generan   los   vectores   i1   e   i3   que   contienen,   en   la   posición   0.5/h,   el   valor  de  !! (!)  e  !! (!)  en  ! = 0.5  segundos.   El   segundo   código   precisa   la   generación   de   una   función,   en   este   caso   llamada   fun,   en   la   cual   se   declaran   el   sistema   de   ecuaciones   que   se   quiere   resolver   y   los   valores   iniciales  del  problema  y,  por  medio  de  la  función  ODE45,  se  obtienen  los  vectores   deseados.   En  ambos  casos  se  grafica  la  solución.  Se  eligió  un  intervalo  de  resolución  de  0  a  1   segundo  en  ambos  casos.   Y  por  último,  se  solicita  el  valor  de  las  funciones  funciones  !! (!)  e  !! (!)  en  ! = 0.5   para  comprar  los  resultados  entre  ambos  métodos.  

Universidad  Nacional  de  Tres  de  Febrero  –  Ing.  De  Sonido  

1    

Seminario  Ecuaciones  Diferenciales  Ordinarias  

Ramón  Facundo  

Códigos  y  resultados   Código  1   %% Runge Kutta de Orden 4 h=0.01; %Paso i1(1)=0; i3(1)=0;

%Condición inicial para i1 %Condición inicial para i2

%Generación de los vectores i1 e i3 for i=1:1/h k11=-20*i1(i)+10*i3(i)+100; k31=10*i1(i)-20*i3(i); k12=-20*(i1(i)+1/2*k11*h)+10*(i3(i)+1/2*k31*h)+100; k32=10*(i1(i)+1/2*k11*h)-20*(i3(i)+1/2*k31*h); k13=-20*(i1(i)+k12*h)+10*(i3(i)+k32*h)+100; k33=10*(i1(i)+k12*h)-20*(i3(i)+k32*h); k14=-20*(i1(i)+k13*h)+10*(i3(i)+k33*h)+100; k34=10*(i1(i)+k13*h)-20*(i3(i)+k33*h); i1(i+1)=i1(i)+(h/6)*(k11+2*k12+2*k13+k14); i3(i+1)=i3(i)+(h/6)*(k31+2*k32+2*k33+k34); end %Ploteo y=0:h:1; %Vector de referencia plot(y,i1,'b-',y,i3,'r-.') grid %Resultados valor1=i1(0.5/h) valor2=i3(0.5/h)

El  código  entrega  los  siguientes  valores.   valor1 = 6.6263 valor2 = 3.2929

Es  decir,  !! 0.5 = 6.6263  e !! 0.5 = 3.2929.  Y  se  obtiene  el  siguiente  gráfico.  

  Universidad  Nacional  de  Tres  de  Febrero  –  Ing.  De  Sonido  

2    

Seminario  Ecuaciones  Diferenciales  Ordinarias  

Ramón  Facundo  

Código  2   %%Función para ODE45 function dy=fun(t,y) dy=zeros(2,1); dy(1)=-20.*y(1)+10.*y(2)+100; dy(2)=10.*y(1)-20.*y(2); %%Resolución con funciones de MatLab error=odeset('RelTol',1e-4); [T,Y]=ode45(@fun,[0 1],[0 0],error); plot(T,Y(:,1),'-',T,Y(:,2),'-.') grid k=0; for i=1:length(T) if T(i)