Está en la página 1de 8

Taller 1 Momento 3

Juan Alejandro Acosta Guarnizo


Juan Sebastián Palacios Botina
Andrés Felipe basante bastidas

Universidad Cooperativa de Colombia


Cuarto semestre
Pasto
2022
1. Resuelva el siguiente problema de valor inicial, usando el método de Euler y
la función ODE45 en el intervalo de t=0 a 2, donde y (0) =1
dy 3
= y t −1.1 y
dx

SOLUCION EN RECURSO INFORMATICO DE MATLAB:


Método de Euler
clc
clear
y0 = 1;
ti = 0; %TIEMPO INICIAL
tf = 2; %TIEMPO FINAL
h = 0.1; %PASO DEL TIEMPO
t = (ti:h:tf); %VECTOR TIEMPO
T = numel(t); %ELEMENTOS EN VECTOR TIEMPO

%METODO NUMERICO
yAprox = [y0,zeros(1,T-1)];
dydt = zeros(1,T);
for i = 1:T-1
dydt(i) = yAprox(i)*t(i)^3-1.1*yAprox(i);
yAprox(i+1) = yAprox(i) + dydt(i)*h;
end

%SOLUCION
tex = (ti:0.001:tf);
yExacta = exp(0.25*tex.^4-1.1*tex);

%CODIGO PARA GRAFICA


plot(t,yAprox,'b','Marker','*','LineWidth',2); hold on;
plot(tex,yExacta,'r','LineWidth',2);
legend('y_{Aprox} (Euler)-> h =
0.1','y_{Exacta}','fontsize',14,'FontWeight','bold');
xlabel('Tiempo'); ylabel('y');
set(gcf,'color','w');
set(gca,'linew',1.5,'fontsize',16,'FontWeight','bold'); box off;
GRAFICA CON REPECTO A LA GRAFICA DE LA Y EXACTA EN COMPARACION
CON LA APROXIMACION EN EULER:

Por otra parte, tenemos la segunda ecuación obtenida por el método de la ode45 el código
hecho en método informático se realizo de la siguiente manera:
Método ODE45
clc
close all
F= @(t,y)(y*t.^3-1.1*y);
[t,y]=ode45(F,[0 2],1);
plot(t,y)
tlabel('t')
ylabel('y')
title('Solucion ODE45 PRIMER PUNTO')

Si se analiza bien la gráfica realizada por este método nos va a dar la misma grafica que se
realizó con el método de Euler:
Por eso se puede concluir que la realización de los dos métodos está bien realizada por la
coincidencia de los resultados obtenidos con ambas maneras de realizar el problema de
valor inicial.
2. Si se drena el agua desde un tanque cilíndrico vertical por medio de abrir
una válvula en la base, el líquido fluirá rápido cuando el tanque esté lleno y
despacio conforme se drene. Como resultado, la tasa a la que el nivel del
agua disminuye es:
dy
=−k √ y
dx
Donde k es una constante que depende de la forma del agujero y del área de la
sección transversal del tanque y agujero de drenaje. La profundidad del agua y se
mide en metros y el tiempo t en minutos. Si k=0.06, determine cuanto tiempo se
requiere para vaciar el tanque si el nivel del fluido se encuentra en un inicio a 3 m.
Qué pasa si k=0.

Para la realización de este problema se realizó dos scripts para obtener los
resultados el primero se uso para determinar la función que se va a usar para
aplicarla al código del ode45:
Script función
function dydt=fc25_17(~,y)
dydt=-0.06*sqrt(y);
end

Una vez se obtiene este script se procede a realizar el siguiente script que es de la
solución para saber en cuanto tiempo se vacía el tanque:
%solucion de segundo punto
clc
close all
clear
tspan=0:0.5:57.5;
y0=3;
[t,y]=ode45(@fc25_17,tspan,y0);
n=length(tspan);
fprintf('valor de y/valor de t/n')
for i=1:n
fprintf('%5.2f %8.4f/n',t(i),y(i));
end
plot(t,y)
grid on
xlabel('Altura total del fluido')
ylabel('Tiempo(minutos')

La gráfica y resultados obtenidos son los siguiente:


Como nos damos cuenta con los datos finales obtenidos podemos concluir que al minuto
57.5 minutos el tanque estará completamente vacío.
Ahora que pasaría si a K la tomamos como 0 veamos que resultados nos arroja el programa:

Obtennos lo siguientes resultados y observamos que la grafica sigue constante en cuanto a


la altura inicial del tanque la cual es 3 y con el tiempo determinado final que es el mismo de
57.5 minutos.

Para este ejercicio se aplicó el siguiente código en Matlab para poder resolver este
problema:

clc
clear
close all
%Condiciones Iniciales dadas con respecto a 1950 my 2555
X0=1950;
Yo=2555;
h=0.026; %Tamaño de paso(kgm)
Xf=2000;
X= X0;
i=1;
while X0<=Xf
Xg(i)=X0;
Yg(i)=Yo;
[F] = ECDIF (X0,Yo,h);
Yn=Yo+h*F;
Yo= Yn;
Xn=X0+h;
X0=Xn;
i=i+1;
end
plot(Xg,Yg)
grid on
axis square

Por otro lado, se tiene el script para denominar la función:


function [F] = ECDIF(X0,Y0,h)
F=0.026*(1-(X0/12000))*X0;

Una vez que se corre el programa como era de esperar obtenemos una gráfica de forma
exponencial ya que el ejercicio dado es de población por ende tiende a tener una recta
ascendente:

Además, si nos damos cuenta la salida de los datos en el eje Y da concordancia con las
fechas estipuladas en el documento.

También podría gustarte