Trabajo Final Ecuaciones Diferenciales Ordinarias Seminario de Ecuaciones Diferenciales Ordinarias Facun
Views 161 Downloads 3 File size 1MB
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)